代码之家  ›  专栏  ›  技术社区  ›  Itay Moav -Malimovka

报表服务数据库规划的一种好方法

  •  3
  • Itay Moav -Malimovka  · 技术社区  · 15 年前

    场景:

    大系统(~200张桌子)。
    60000个用户。
    复杂的报表需要我对每个报表进行多个查询,甚至那些都是复杂的查询,内部查询到处都是+一些PHP处理。

    方法:

    我见过一种方法,但我不确定:
    有一个集中的、非标准化的表,用于记录系统中任何可报告的活动。这张桌子将容纳大部分外键,所以她应该相当紧凑和快速。
    例如,我的系统是一个虚拟学习管理系统, 用户注册课程时,该表存储用户id、日期、课程id、组织id、活动类型(注册)。


    欺骗:

    这种方法值得考虑吗,或者(最好是根据经验)是总成本#%#%t?

    3 回复  |  直到 15 年前
        2
  •  0
  •   Jeg Bagus    15 年前

    我现在和你用同样的方法。

    一段时间严格规范化的数据库会大大降低查询速度。而且更难查询。这是非常正确的,没有人能否认这个条件。

    一些大公司(google、twitter、facebook)开始放弃关系数据库的概念。他们开始使用自己的数据库概念和(可能)如此多的冗余组件。但另一方面,它们的概念导致了简单、快速的查询。

    我认为您的方法很好,但您始终可以确保在应用程序级别检查数据库的每个更改。

    致以最诚挚的问候

        3
  •  0
  •   sibidiba    15 年前

    规范化是一个学术概念。非常有用,但是一直坚持下去是没有用的。交易是避免不一致的方法。如果冗余满足了您对更简单、更高效的查询的需求,就可以使用冗余,比如您可以使用一个表而不是10+个表。