数据仓库建模与日历管理:从理论到实践
1. 实体关系模型与维度模型的差异
在数据建模中,实体关系模型和维度模型有着显著的不同。实体通常代表可识别的业务对象,如客户、仓库、产品或订单等。实体包含描述自身的属性并确立主键,附属实体则为主要实体提供更多细节。这些实体的结构、关系和属性与业务中的实际结构极为相似。
而维度模型则由维度和事实两类对象构成。事实包含度量和维度外键,度量通常是数值,代表业务中发生的某个动作的量级。例如,在销售事实表中,度量可以是销售数量和销售价值。维度外键通过引用相应的维度行来定义度量的上下文。维度是属性的集合,需要注意的是,维度建模中的属性仅指维度表中的列,而在关系建模中,属性的概念更为宽泛。
下面通过一个销售订单的例子来说明两者的差异:
| 实体关系模型 | 维度模型 |
| — | — |
| 包含订单实体和订单行实体,分别描述订单文档和订单行信息,两者都有描述订单及其状态的属性 | 有订单状态维度,描述订单及其行上遇到的唯一状态码值组合,包含实体模型中订单和订单行实体的属性 |
维度设计的主要目的是简化和加速查询。例如,用户在包含500万条订单的数据库中基于特定订单原因进行分析时,在关系模型中,查询需要先定位具有该订单原因的订单,再连接到订单行。若有100万条订单符合该原因,数据库系统需要做大量工作来查找所有订单行。而在维度模型中,订单状态维度只包含唯一的状态码组合,这样的维度通常只有100 - 200行,其中可能只有25行包含感兴趣的原因码。数据库只需在事实表中查找25个外键就能定位所有订单事实行。
2. 维护维度一致性
从纯关系型数据仓库部署维度模型时,一个
超级会员免费看
订阅专栏 解锁全文

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



