维度设计:多角色、别名与避免 NULL 值的实用指南
在数据仓库的维度设计中,有许多关键的概念和技术,它们对于确保数据的准确性、可查询性和可维护性至关重要。本文将深入探讨维度与迷你维度的关系、维度角色与别名的使用,以及如何避免使用 NULL 值带来的问题。
1. 维度与迷你维度的关联
维度可以携带对迷你维度的外键引用。这种引用有助于 ETL 开发人员填充事实表行,并允许用户跨维度和迷你维度进行浏览。不过,它不应承担记录历史的任务,因为这会违背迷你维度的初衷。
在配置自动生成查询的商业智能工具时,这种外键引用可能会带来技术障碍。用户浏览维度和迷你维度时,应使用表之间的直接关系进行连接;而查询事实表时,应将迷你维度与事实表连接,而非维度表。尽管开发人员可能认为使用维度表对迷你维度的外键引用进行连接是合适的,但实际上不应这样做。
如果需要保留维度与迷你维度之间关系的完整历史,可以设计一个额外的事实表。每行将标识维度中的一行、迷你维度中的一行,以及它们关联的时间范围。这个表可能没有事实数据(无事实事实表将在后续讨论)。
2. 维度角色与别名
业务流程的度量可能涉及一个维度的多个实例。例如,汽车经销商销售汽车时,交易涉及两名员工:销售汽车的销售人员和批准销售的经理。这两种关系称为角色。在事实表中,它们由对同一维度表的多个外键引用表示。查询时,可以使用别名技术来隔离每个角色。
2.1 单表多关系
在星型模式中,维度扮演的多个角色由事实表中的多个外键表示。有 ER 建模背景的数据库设计人员对这种技术很熟悉。同一对表之间存在多个关系并不罕见,ER 模型通常会为每个关系命名。
<
超级会员免费看
订阅专栏 解锁全文
10万+

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



