我正在阅读有关 DW 建模的内容,并开始想知道为什么要使用代理键?
我知道有时业务键不是整数,这会使生活(以及连接和索引)变得更加困难。但是,我不明白为什么要通过添加额外的列来管理唯一标识符来解决 DW 或 RDBMS 的限制?
这种功能对 DW/RDBMS 用户是透明的,并且条目会自动从系统获取内部标识符,这不是更合适吗?例如,创建整行或其子集的 SHA-1 摘要(可以以某种文本格式表示的那些字段)。
我正在阅读有关 DW 建模的内容,并开始想知道为什么要使用代理键?
我知道有时业务键不是整数,这会使生活(以及连接和索引)变得更加困难。但是,我不明白为什么要通过添加额外的列来管理唯一标识符来解决 DW 或 RDBMS 的限制?
这种功能对 DW/RDBMS 用户是透明的,并且条目会自动从系统获取内部标识符,这不是更合适吗?例如,创建整行或其子集的 SHA-1 摘要(可以以某种文本格式表示的那些字段)。
使用代理键的原因是您可以控制数据仓库,但很可能无法控制源系统。您今天对自然键稳定性所做的假设可能会在将来给您带来问题。
不使用自己的代理键可能会遇到的问题:
Employee
表,其中一个自动递增的整数用作键。每家公司都会有一名员工#1。DW 仓库将需要一个代理键来区分共享相同 ID 的两个人。