在什么时候变得规范化与明星帮助表现?

时间:2015-11-03 19:40:52

标签: database performance database-schema

假设我有一个订购系统,其表大小约为50,000行,每天增长约100行。另外,一旦下订单,我需要在接下来的30天内存储关于该订单的指标,并且每天报告这些指标(即在第2天,该订单具有X激活和Y停用)。

  • 1个名为products的表,其中包含产品列表的详细信息
  • 1个名为orders的表,其中包含订单数据和产品ID
  • 1个名为metrics的表,其中包含日期字段,订单ID和相关指标。

如果我以星型模式格式对其进行建模,我的设计如下:

  • FactOrders表,有30天* X订单行,并存储订单,产品ID和指标周围的所有元数据(每行代表特定日期产品的指标)。
  • DimProducts表,用于存储产品元数据

我的表现是从一个巨大的FactOrders表获得的,只需要一个连接来获取所有相关信息,而不是因为我将表大小增加了30倍并且拥有大量重复数据,而真正规范化的模型只有一个额外加入,但更小的表?或者我是否为星型模式格式设计错误了?

1 个答案:

答案 0 :(得分:1)

不要将这么小的东西反规范化以摆脱连接。正确索引。加入不错,加入很好。数据库旨在使用它们。

非规范化对于数据完整性是有风险的,并且由于表格的大小更宽,甚至可能更快。在这些微小的表格中,非规范化非常不可能有所帮助。