-
如何撰写能被引用的科学论文和获得资助的提案:选择一个维表还是多个
资源介绍
6.8 一个维表还是多个
维表模型中,我们通常假设维表是相互独立的。
从严格的数据角度,经常并不是这样的。尽管你可以在多个商店销售多个商
品,但商品维度和商店维度并不总是相互独立的。有些商品只能在某些商店销售。
一个好的统计人员能够描述出商品维度和商店维度的相关度。尽管这样却不能阻
止我们建立相互独立的商店维度和商品维度。两个维度之间的相关度可以在销售
事实表中得到准确的描述。
本例中如果将商品维度和商店维度合并将会是个灾难。想想看,如果商品维
度是 100 万行记录,商店维度是 100 行记录,那么合并以后的维表记录数达到了
1 亿条!记录事实表不同维度的相关度就是一个很好的维度建模步骤例子:将维
度相关度降级到事实表中。
不将商品和商店合并的另外一个理由是两个维度之间有不止一种关联关系。
我们讨论过两个维度之间的销售关联度,但还可能有价格策略关联,库存关联,
或者季节变化关联。总的来讲,跟踪这些复杂关系必须是让维度足够简单和独立,
在一个或多个事实表中记录维度的关联性。
从这一点上,你可能已经相信所有的维度可以是独立的,但这是因为我们讨
论的是一个稍微有些极端的例子。那么其它情况是否也是如此黑白分明吗?
首先,我们应该排除关联性完全相关重叠的两个维度。比如,如果商品和品
牌是标准的多对 1 关系的话,在事实表中绝不能既有商品维度又有品牌维度。这
种情况的商品和品牌属于一个层系,我们应当将它们合并到一个维度中。
有些情况下,两个维度并不属于同一个层系,但具有很强的相关性。从结果
来看,如果其相关性足够强,并且合并后的结果足够小,这两个维度也应该合并
在一起。否则,维度应当是独立的。应该从业务用户的角度考虑测试维度之间的
相关性。如果两个维度之间的相关性得到最终用户认可并且固定不变,那么将其
合并也是可行的。
请记住,维度合并的目的是为了提供有效的查询。按照我们的观点,当维度
记录超过 10 万行记录,那么此维度就不算小维度了。也许随着时间的推进,这