我在閱讀關於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