維模式
數據庫由一個或多個表組成,數據庫中所有表之間的關系統稱為數據庫模式。雖然有許多不同的模式設計,但是用于查詢歷史數據的數據庫通常被設置為具有維模式設計(通常是星型模式或雪花模式)。采用維模式既有許多歷史方面的原因也有許多實踐方面的原因,但是,它們在決策支持關系數據庫方面的應用的增長是由兩項主要的益處推動的:
- 能夠形成用來應答業務問題的查詢。通常,查詢根據若干個業務維計算某些業績量度。
- 在大部分 RDBMS 供應商使用的 SQL 語言中形成這些查詢必需維模式。
維模式在物理上將用于量化業務的量度(也稱為事實)與用于描述業務和對業務進行分類的描述性元素(也稱為維)分隔開。DB2 Alphablox 多維體要求底層數據庫使用維模式;即,在物理上必須將事實數據與維數據分隔開(至少位于不同的列中)。通常,維模式具有星型模式形式、雪花模式形式或者這兩種模式的某種混合形式。盡管不是常見的情況,但維模式也可以具有單個表的形式,即事實和維僅僅是位于表的不同的列中。
注:
如果數據庫不符合維模式,則可以在數據庫中創建視圖以創建一個“虛擬的”維模式以便與 DB2 Alphablox 多維體配合使用。
本節描述星型模式和雪花模式以及在這些模式中表示業務層次結構的方式。包括下列各節:
要徹底了解維模式設計及其所有分支的背景信息,請閱讀由 Ralph Kimball 編著并由 John Wiley and Sons, Inc. 出版的 The Data Warehouse Toolkit。
星型模式和雪花模式
星型模式和雪花模式設計是用來將事實和維分隔到不同的表中的機制。雪花模式將層次結構的不同級別進一步分隔到不同的表中。在任何一種模式設計中,每個表都通過主鍵/外鍵關系與另一表相關。在關系數據庫中,使用主鍵/外鍵關系來定義各個表之間的多對一關系。
主鍵
主鍵是表中的一個列或一組列,它們的值唯一地標識表中的一行。關系數據庫設計成通過僅允許表中的一行具有給定的主鍵值來強制實施主鍵的唯一性。
外鍵
外鍵是表中的一個列或一組列,它們的值與另一個表中的主鍵值相對應。為了添加具有給定外鍵值的行,在相關的表中必須存在具有相同主鍵值的行。
在星型模式或雪花模式中,表之間的主鍵/外鍵關系(有時稱為多對一關系)表示 RDBMS 中將相關的表連接到一起的路徑。這些連接路徑是形成對歷史數據執行的查詢的基礎。要了解有關多對一關系的更多信息,請參閱多對一關系。
事實表
事實表是星型模式或雪花模式中的一個表,它存儲用于量度業務(如銷售量、商品成本或利潤)的事實。事實表還包含指向維表的外鍵。這些外鍵使事實表中的每個數據行與其對應的維和級別相關。
維表
維表是星型模式或雪花模式中的一個表,它存儲用來描述維的各個方面的屬性。例如,時間表存儲時間的各個方面,如年份、季度、月份和天。事實表的外鍵引用多對一關系中的維表的主鍵。
星型模式
下圖顯示了具有單個事實表和 4 個維表的星型模式。星型模式可以具有任意數目的維表。用于連接表的鏈接末尾的分叉指示了事實表與每個維表之間的多對一關系。
雪花模式
下圖顯示了具有兩個維的雪花模式,其中,每個維都具有 3 個級別。雪花模式可以具有任意數目的維,并且每個維可以具有任意數目的級別。
要了解有關維的不同級別如何形成層次結構的詳細信息,請參閱層次結構。
層次結構
層次結構是一組相互之間具有多對一關系的級別,并且這一組級別共同構成維。在關系數據庫中,層次結構的不同級別既可以存儲在單個表中(如在星型模式中),也可以存儲在不同的表中(如在雪花模式中)。
多對一關系
多對一關系是指一個實體(通常是一個列或一組列)包含的值引用另一個具有唯一值的實體(一個列或一組列)。在關系數據庫中,這些多對一關系通常是由外鍵/主鍵關系強制實施的,并且,這些關系通常是事實表與維表之間以及層次結構中的級別之間的關系。此關系通常用來描述分類或分組。例如,在具有表 Region、State 和 City 的地理模式中,在給定的地區有許多州,但沒有任何州同時位于兩個地區。同樣,對于城市,一座城市僅位于一個州(同名但位于多個州的城市的處理方式必須略有不同)。關鍵在于每座城市都剛好位于一個州,但一個州可以有許多城市,因而符合“多對一”這個術語。
層次結構的不同元素(即級別)在子代級別與父代級別之間必須具有多對一關系,而無論該層次結構在物理上是以星型模式還是以雪花模式表示的;即,數據必須遵守這些關系。強制實施多對一關系所需的干凈數據是維模式的一項重要特征。此外,這些關系使得有可能根據關系數據創建 DB2 Alphablox 多維體。
http://publib.boulder.ibm.com/db2blox/82/zh_cn/cube/cube13.htm