我在阅读关于DW建模的知识,并开始想知道为什么使用代理键?为什么需要代理键?
据我所知,有时候商业密钥并不是整数,这使生活(以及寻找和索引)变得更困难。 但是,我不明白为什么要通过添加和额外的列来管理唯一标识符来解决DW或RDBMS的有限局限性?
这种功能对于DW/RDBMS用户来说是否透明并且该条目会自动从系统获取内部标识符会更合适吗?例如,创建整行或其子集(可以某种文本格式表示的那些字段)的SHA-1摘要。
我在阅读关于DW建模的知识,并开始想知道为什么使用代理键?为什么需要代理键?
据我所知,有时候商业密钥并不是整数,这使生活(以及寻找和索引)变得更困难。 但是,我不明白为什么要通过添加和额外的列来管理唯一标识符来解决DW或RDBMS的有限局限性?
这种功能对于DW/RDBMS用户来说是否透明并且该条目会自动从系统获取内部标识符会更合适吗?例如,创建整行或其子集(可以某种文本格式表示的那些字段)的SHA-1摘要。
使用代理键的原因是因为您可以控制数据仓库,但很有可能无法控制源系统。您今天对自然键的稳定性的假设可能会在未来导致您的问题。你可能会碰到
问题通过不使用自己的代理键:
Employee
表,其中有一个用作键的自动递增整数。每家公司都会有一名员工#1。 DW仓库需要代理键来区分共享相同ID的两个人。
代理键通常是自动递增的整数,长度为32位。由于您必须在适用的情况下将行标识符作为外键复制,因此通常会在复制长字符串或多列时节省大量空间。 – apokryfos
了解。我没有得到的是为什么DW用户不得不担心这个问题,为什么它不是DW或RDBMS软件的集成功能? – aviad
我的猜测是RDBMS不希望在没有必要的情况下强加替代键所占用的额外空间。 RDBMS提供的是DB开发人员在需要时定义此类密钥的机制。 – apokryfos