我们为什么要将维度和事实分开,而不是将两者结合在一个表中

时间:2014-10-23 09:30:29

标签: data-warehouse dimensional-modeling star-schema

需要对维度建模或星型模式有所了解。

通常,在设计数据仓库时,我们会有事实表和维度表。

但是,在事实表中嵌入维度确实有意义。特别是对于没有其他属性且很少改变其价值的简单维度。

在事实表中使用维度会使查询运行得非常快,无需单独维护维度表,在执行ETL时无需查找维度表。

是否考虑将维度与事实分开?

1 个答案:

答案 0 :(得分:5)

  1. 事实上有很多行。如果你把一个长度为20的属性放在一个事实上,那么与你只存储一个INT代理键(4个字节)相比,需要更多的存储空间。更多存储=更大的表=性能下降。

  2. 您几乎总是希望针对给定属性存储其他层次结构和属性。即使你现在没有,你可能希望将来

  3. 通常在报告中,您会在下拉列表中找到这些属性的列表以进行过滤。你怎么从事实中得到这些? SELECT DISTINCT放在一张非常大的桌子上,没有索引就很贵。使用索引,会影响您的负载性能。

  4. 当你把东西放在维度而不是事实上时,这意味着你已经做了一些关于如何适应业务的分析