数据仓库应对业务变化的策略
1. 关系泛化的作用
关系泛化使数据仓库能够在不显著影响模型的情况下适应业务变化。例如,若公司决定允许待补订单,泛化的结构能够支持这一变化。使用关联实体的好处在于,无论关系的性质如何,它们都能很好地发挥作用。这种结构可以毫无问题地支持一对一和一对多关系。即使使用它们来表示简单关系,也能让你支持关系的变化,并捕捉违反既定关系规则的情况。
不过,数据仓库的职责并非强制执行数据关系,这是操作系统的任务。在某些情况下,特别是在操作环境中使用标准软件包时,系统可能无法强制执行所有业务规则。数据仓库的职责是反映业务中存在的情况。通过泛化这些关系,数据仓库可以适应不断变化的情况,包括那些不可预见或不被允许的情况。但这种技术会增加模型的复杂性,因此仅应在必要时使用。
2. 代理键的使用
2.1 代理键的重要性
在关系建模中,键用于标识实体的实例。人们自然会认为姓名或账号等自然键可以作为标识,但对于数据仓库来说,这可能并非最佳选择。由于变化是不可避免的,随着时间的推移,自然键的值会发生改变,例如人员改名、公司合并或重组等,自然键标识符很脆弱,容易被破坏。
代理键可以将数据仓库与这些变化隔离开来,使其能够在操作系统发生任何变化时,长期保持引用完整性。代理键是简单、任意的唯一数字,被分配给一行作为主键。一行还应包含必要的自然键属性,以便向外部世界标识该行。在加载过程中,使用自然键值定位行,并使用代理主键作为加载数据中的外键。
当自然键发生变化时,只需更新包含这些值的表中的列,无需更改或重新分配主键。数据仓库的键保持稳定,外键继续引用同一行,只是我们或操作系统引用该实例的方式发生了变化。
超级会员免费看
订阅专栏 解锁全文
15

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



