數據倉庫與維度建模


 

維度建模的基本概念

維度建模(dimensional modeling)是專門用於分析型數據庫、數據倉庫、數據集市建模的方法。

        它本身屬於一種關系建模方法,包含了基本的兩個概念:

1. 維度表(dimension)

        表示對分析主題所屬類型的描述。比如"昨天早上張三在京東花費200元購買了一個皮包"。那么以購買為主題進行分析,可從這段信息中提取三個維度:時間維度(昨天早上),地點維度(京東), 商品維度(皮包)。通常來說維度表信息比較固定,且數據量小。

2. 事實表(fact table)

        表示對分析主題的度量。比如上面那個例子中,200元就是事實信息。事實表包含了與各維度表相關聯的外碼,並通過JOIN方式與維度表關聯。事實表的度量通常是數值類型,且記錄數會不斷增加,表規模迅速增長。

注:在數據倉庫中不需要嚴格遵守規范化設計原則(具體原因請看上篇)。本文示例中的主碼,外碼均只表示一種對應關系,此處特別說明

 

維度建模的三種模式

 

1. 星形模式

        星形模式(Star Schema)是最常用的維度建模方式,下圖展示了使用星形模式進行維度建模的關系結構:

1

 

可以看出,星形模式的維度建模由一個事實表和一組維表成,且具有以下特點:

                a. 維表只和事實表關聯,維表之間沒有關聯;

                b. 每個維表的主碼為單列,且該主碼放置在事實表中,作為兩邊連接的外碼;

                c. 以事實表為核心,維表圍繞核心呈星形分布;

 

2. 雪花模式

        雪花模式(Snowflake Schema)是對星形模式的擴展,每個維表可繼續向外連接多個子維表。下圖為使用雪花模式進行維度建模的關系結構:

 

2

 

星形模式中的維表相對雪花模式來說要大,而且不滿足規范化設計。雪花模型相當於將星形模式的大維表拆分成小維表,滿足了規范化設計。然而這種模式在實際應用中很少見,因為這樣做會導致開發難度增大,而數據冗余問題在數據倉庫里並不嚴重。

 

3. 星座模式

星座模式(Fact Constellations Schema)也是星型模式的擴展。基於這種思想就有了星座模式:

 

3

 

4. 三種模式對比

歸納一下,星形模式/雪花模式/星座模式的關系如下圖所示

 

4

雪花模式是將星型模式的維表進一步划分,使各維表均滿足規范化設計。而星座模式則是允許星形模式中出現多個事實表。本文后面部分將具體講到這幾種模式的使用,請讀者結合實例體會。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM