数据仓库-为什么需要代理密钥



我读到了关于DW建模的文章,开始想知道为什么要使用代理密钥?

我知道有时候业务密钥不是整数,这会让生活(以及工作和索引)变得更困难。然而,我不明白的是,为什么要通过添加一个用于管理唯一标识符的额外列来解决DW或RDBMS的某种限制?

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新