层次结构与雪花模型:数据库设计的权衡之道
1. 无层次结构的钻取与汇总
在数据库分析中,我们可以不依赖层次结构进行钻取操作,其他形式的汇总也是如此。任何属性都可以作为有用的数据聚合方式,而不取决于它在特定层次结构中的位置。
例如,我们可以定义一个不依赖显式属性层次结构的立方体。对于某些数据模型,我们可以按品牌经理或产品颜色来汇总订单数据。在这些情况下,我们不使用层次结构级别来定义汇总,但这样的立方体所包含的细节会比基础数据模型少很多。同样,我们也可以定义一个偏离标准属性层次结构的聚合表。
注意事项
属性层次结构虽然有用,但不是钻取或汇总数据的唯一方式。我们不应让属性层次结构限制用户的分析能力,或者限制立方体和聚合的设计可能性。
2. 雪花模型的概念
2.1 雪花模型的形成
之前我们看到的星型模式由一个事实表和一组维度表组成,每个维度表直接与事实表相连。在维度设计中,并非所有属性之间的关系都通过连接来体现。具有自然关联或非易失性关系的属性,如产品和品牌,会被放在同一个维度表中,它们的关系是隐含的。
然而,对于刚接触维度设计的人来说,这种方式可能不太合适。特别是有实体 - 关系(ER)建模经验的人,可能会强烈希望对维度属性之间的关系进行建模。例如,产品表中包含品牌名称和品牌经理,它们完全由品牌代码决定。我们可以将品牌信息存储在一个单独的表中,并通过外键关系将其与产品表相连,从而使这种关系显式化。
当维度设计中维度属性之间的关系被显式化时,就形成了雪花模型。雪花模型的名称来源于其图形表示,事实表位于中心,维度表像雪花的分支一样从中心发散出来。
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



