我瞭解DWH環境中代理鍵的一般概念。 但有兩個方面我不懂,但沒有找到有關信息:數據倉庫中的代理鍵
- 它是常見的做法,一個代理鍵是在一名維的整個DWH或獨特獨特之處?
- 如果我有一個層次結構的維度,那麼層次結構是否會影響代理鍵的生成?
我瞭解DWH環境中代理鍵的一般概念。 但有兩個方面我不懂,但沒有找到有關信息:數據倉庫中的代理鍵
1)代理鍵對於一行是唯一的 - 它用作一行中所有單元之間關係的常用句柄。由於存儲數據的方式,代理鍵並不是嚴格需要推斷連續單元之間的關聯。但是如果你的行在一個實體(一個表)中表示一個可數的標識(一個表),如果你的數據庫被標準化了,那麼引用一個單一的代理鍵(通常是主鍵)比保留一個引用給主鍵的所有參與者。例如,在一個緊湊柱上維護索引比在整行上更容易。
實際上,代理鍵有另一個應用程序。由於數據通常是由多個來源組合而成的,因此您可能會遇到組合主鍵的問題(組合使用幾列來唯一標識每行)以及重複業務鍵的問題(各種鍵取自各種源系統)。因爲替代鍵用於查找,所以它的緊湊性非常重要。使用遞增整數或固定長度的散列,並將來自源的業務密鑰保留在separte列中。
2)這個問題很難回答,因爲我不知道你用什麼軟件來管理你的維度和層次結構。這會影響很多事情。在典型的非規範化的Kimball體系結構中,在維度表中,使用代理鍵來引用維度表中的唯一行。在具有幾個分層的二維表格中,其意義可能有點混亂。代理鍵對於具有最高基數(成員數量)的層次結構而言只會是真正唯一的,因爲這將決定維度表中有多少行。所以實踐是,關鍵是維度表唯一的,並且正是其中的一個層次結構 - 成員數量最多的層次結構。如果您爲此添加層次結構版本(緩慢變化的維度),則替代關鍵字的確切含義可能具有欺騙性。
注意:Rant:我通常在一個維度表中發現多個層次結構的想法相當令人沮喪。誠然,它會減少事實表中維度引用的數量,但也有缺點。維度表的非規範化會導致一些後果(醜陋的重複)。其中之一就是加入維度表時加倍計算的風險。這通常由所使用的軟件包固定(或掩蓋),檢查值是否相同,然後將它們相加並減少計數。但這是計算異常情況和總結錯誤的常見來源,只能通過非常骯髒的黑客在路上處理。其中我看到不少。
在Kimball Dimensional Modeling中,一行本身就是一個明確定義的實體(例如一個產品)。其他一切都是對行本身(產品顏色)或相關事物(產品組名稱)的描述。在行中有多個層次結構(產品 - >品牌 - >品牌組和產品 - >產品組)是完全正確的。 – Rich
是的,代理鍵對於一行是唯一的 - 它用作一行中所有單元之間關係的常用句柄。由於存儲數據的方式,代理鍵並不是嚴格需要推斷連續單元之間的關聯。但是如果你的行在一個實體(一個表)中表示一個可數的標識(一個表),如果你的數據庫被標準化了,那麼引用一個單一的代理鍵(通常是主鍵)比保留一個引用給主鍵的所有參與者。例如,在一個緊湊柱上維護索引比在整行上更容易。
1.在一個維度; 2.通常不會影響它 – momobo