多值维度与桥接表:数据建模的实用指南
1. 多对多关系的解决之道
在数据建模中,多对多关系是一个常见的挑战。比如,销售团队和销售人员之间往往存在多对多的关系。解决这类问题的方法是构建一个“交叉表”。在维度模型里,这会带来一个有趣的结果:需要维护一个只有一列(键值)的分组表。
1.1 示例说明
以销售团队和销售人员的关系为例,通过创建一个名为 group_membership 的交叉表来解决多对多关系。 sales_group 表仅保留一个列 group_key 。若执行 select * from sales_group 查询,该表的内容就只是一串数字。虽然看起来有些奇怪,但这种配置能满足大多数建模工具的要求。可以为 sales_group 表定义主键 sales_group_key ,这样该列就能作为外键用于事实表。
1.2 注意事项
如果软件产品不允许存在多对多关系,可创建交叉表来解决。不过,像 sales_group 这样的表可能是多余的,因为所有信息都已包含在 group_membership 表中。这种冗余设计源于一些软件产品对实体 - 关系建模规范的要求。
2. 多值属性的挑战与应对
2.1 多值属性的定义
当维度表中的某一行属性可能有多个值时,就会遇到多值属性的问题。这种情况很常见,例如客户可能有多个电话号码,银行账
超级会员免费看
订阅专栏 解锁全文

5666

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



