0

我正在阅读有关 DW 建模的内容,并开始想知道为什么要使用代理键?

我知道有时业务键不是整数,这会使生活(以及连接和索引)变得更加困难。但是,我不明白为什么要通过添加额外的列来管理唯一标识符来解决 DW 或 RDBMS 的限制?

这种功能对 DW/RDBMS 用户是透明的,并且条目会自动从系统获取内部标识符,这不是更合适吗?例如,创建整行或其子集的 SHA-1 摘要(可以以某种文本格式表示的那些字段)。

4

1 回答 1

1

使用代理键的原因是您可以控制数据仓库,但很可能无法控制源系统。您今天对自然键稳定性所做的假设可能会在将来给您带来问题。

不使用自己的代理键可能会遇到的问题:

  1. 源中的大的或复杂的自然键- 正如您已经提到的,源系统可能正在使用一个性能不如简单整数的自然键
  2. 自然键可以在源代码中重用- 我遇到过一个问题,一旦达到整数可以保存的最大值(对于应用程序来说,这是有意义的),源系统将再次从 1 开始回收键。数据仓库必须认识到重复的键是全新的记录。
  3. 合并- 想象两家公司合并在一起。每家公司都有一个Employee表,其中一个自动递增的整数用作键。每家公司都会有一名员工#1。DW 仓库将需要一个代理键来区分共享相同 ID 的两个人。
于 2016-08-09T21:40:39.503 回答