我有一個由其他人設計的數據倉庫。那個人說,爲每個顧客提供一個不隨時間變化的唯一標識符是不可能的。不太瞭解數據架構我想知道這是否屬實。Sql Server - 數據倉庫設計 - 客戶的唯一標識符
如果可能,它會有多複雜?鑑於有關客戶的任何其他信息可能會在某些時候發生變化。
謝謝
我有一個由其他人設計的數據倉庫。那個人說,爲每個顧客提供一個不隨時間變化的唯一標識符是不可能的。不太瞭解數據架構我想知道這是否屬實。Sql Server - 數據倉庫設計 - 客戶的唯一標識符
如果可能,它會有多複雜?鑑於有關客戶的任何其他信息可能會在某些時候發生變化。
謝謝
數據倉庫信息通常來自其他系統。如果人們不能被唯一識別,該系統應該被設計成具有代理鍵。人們很難擁有一個不是代理人的好獨特標識符。電子郵件是不合適的,因爲它們會發生變化(人們可能會有多封電子郵件),並且可以被其他人重複使用,SSN並不像您期望的那樣獨一無二,甚至醫生的醫療診斷號碼等數據由於數據輸入錯誤而最終也不會是唯一的在源系統中。即使與地址等其他信息結合,名稱顯然也不是唯一的。我從未見過,在我有理由查詢的數百個數據庫中,任何一個對於不是代理鍵的人都具有良好的唯一標識符。
如果原始系統的設計者無能爲力(沒有數據庫表應該缺少主鍵),那麼數據倉庫確實可能沒有辦法唯一標識個體,並且數據中存在重複的機會是在100%。如果數據倉庫不是來自始發系統,那麼向數據倉庫添加代理鍵是毫無意義的。如何在更新信息時知道John Smith的ID是1234還是ID 4567?
我們如何知道您的客戶標識符是否會隨時間而改變? – Kermit 2013-04-25 19:23:08
嗯,的確如此,想一想:名字,姓氏,中間首字母等,這些都是非唯一的。你認爲有多少人叫約翰·H·史密斯?一?接下來,SSN。有些人沒有他們,有些人不瞭解他們,有些人不會提供他們,他們可以重新使用。電子郵件地址,電話號碼,地址等都可以改變。因此,爲什麼不告訴我們您認爲可以*使用且永遠不會改變的客戶的唯一標識符,而不是試圖反證? – 2013-04-25 19:24:10
Sql Server有一種方法可以將GUID作爲僅用於此目的的標識符。它不會隨着時間而改變。這是一個標識符。任何其他屬性可根據需要更改。諸如姓名,電子郵件地址等屬性是屬性。自動遞增PK ID將執行相同的工作,但不會在分佈式系統上進行擴展。 – Nikki9696 2013-04-25 19:25:36