2011-12-07 79 views
6

日期維度的主鍵,我想在一個MySQL數據倉庫處理日期維度。 (我是DW世界的新手)使用日期字段與MySQL

我用谷歌做了一些搜索,看到很多表結構(大部分)日期維度,其中主鍵是一個簡單的UNSIGNED INTEGER

爲什麼不使用DATE字段作爲主鍵,因爲在MySQL中,它是3字節VS 4字節的INTEGER

例:

CREATE TABLE dimDate 
id INTEGER UNSIGNED NOT NULL PRIMARY AUTOI_NCREMENT, 
date DATE NOT NULL, 
dayOfWeek 
... 

VS

CREATE TABLE dimDate 
date DATE NOT NULL PRIMARY, 
dayOfWeek 
... 
+2

你別指望有多個記錄,同一日期? – Mat

+1

不,我會期望在我的事實表中有相同日期的很多記錄,而不是維度表。 – nemenems

+0

Kimball說,每個維度pk應該是一個替代物。 –

回答

6

如果你有一列,它是date類型的和沒有兩行永遠不會有相同的日期,那麼你一定能表使用此列作爲PRIMARY KEY

你看到很多的例子,其中主鍵是一個簡單的UNSIGNED INTEGER,因爲有很多情況下,有主鍵沒有完美的候選人。所述AUTO_INCREMENT允許此列由數據庫被自動填充(和是唯一的)插入期間。

14

日期維是一種特殊的日期(2011-12-07)或日期相關的整數(20111207)爲主鍵實際上是首選。這允許對事實表進行很好的分區(按日期)。

對於其它類型的尺寸,建議替代(整數)密鑰。

爲模板,每個維度通常具有通常與鍵0, -1, -2, ...

由於這種匹配爲unknown, not entered, error, ...條目中,更常見的發現整數格式的日期(20111207)作爲主鍵來代替日期 - 這是一個有點亂來表示unknown, not entered, error, ...與日式按鍵。