維度表和事實表的區別

維度表示你要對數據進行分析時所用的一個量, 比如你要分析產品銷售情況, 你可以選擇按類別來進行分析,或按區域來分析. 這樣的按..分析就構成一個維度。前面的示例就可以有兩個維度:類型和區域。另外每個維度還可以有子維度(稱爲屬性),例如類別可以有子類型,產品名等屬性。下面是兩個常見的維度表結構:

產品維度表:Prod_id, Product_Name, Category, Color, Size, Price 時間維度表:TimeKey, Season, Year, Month, Date

而事實表是數據聚合後依據某個維度生成的結果表。它的結構示例如下:

銷售事實表:Prod_id(引用產品維度表), TimeKey(引用時間維度表), SalesAmount(銷售總量,以貨幣計), Unit(銷售量)

上面的這些表就是存在於數據倉庫中的。從這裏可以看出它有幾個特點:

  1. 維度表的冗餘很大,主要是因爲維度一般不大(相對於事實表來說的),而維度表的冗餘可以使事實表節省很多空間。
  2. 事實表一般都很大,如果以普通方式查詢的話,得到結果一般發的時間都不是我們可以接受的。所以它一般要進行一些特殊處理。如SQL Server 2005就會對事實表進行如預生成處理等。
  3. 維度表的主鍵一般都取整型值的標誌列類型,這樣也是爲了節省事實表的存儲空間。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章