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