维度建模:如何在无事实事实表中处理层级结构?
维度建模方案建议
- 你倾向的方案2是正确的,完全符合维度建模的设计原则。
- 两张事实表的设计逻辑:
- 组织事实表:每条记录对应一个唯一的组织,度量字段设为固定值
1(用于计数),关联包含所有组织筛选/切片属性的组织维度表。 - 位置事实表:每条记录对应一个唯一的位置,度量字段同样设为固定值
1,关联包含邮编等位置属性的位置维度表,同时通过外键关联组织维度表,记录该位置所属的组织。
- 组织事实表:每条记录对应一个唯一的组织,度量字段设为固定值
- 不需要额外建立桥接表:组织和位置是明确的一对多关联关系,直接在位置事实表中关联组织维度就能满足所有切片需求。比如统计某邮编下的组织数量时,只需通过位置事实表关联组织维度,用
COUNT(DISTINCT 组织ID)即可避免重复计数(因为一个组织对应多个位置)。 - 方案1的问题:单表会导致组织记录重复存储,既浪费存储资源,又会让后续统计操作必须频繁处理去重逻辑,增加查询复杂度和性能开销,违背了维度建模中事实表应尽量精简、减少冗余的核心思路。
内容的提问来源于stack exchange,提问作者J Brun
相关产品推荐
相关产品推荐

