
第2章 數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)基礎(chǔ)
2.1 關(guān)系數(shù)據(jù)模型
2.1.1 關(guān)系數(shù)據(jù)模型中的結(jié)構(gòu)
6.關(guān)系表的屬性
關(guān)系表有如下屬性:
● 每個(gè)表都有唯一的名稱。
● 一個(gè)表中每個(gè)列有不同的名字。
● 一個(gè)列的值來(lái)自于相同的屬性域。
● 列是無(wú)序的。
● 行是無(wú)序的。
7.關(guān)系數(shù)據(jù)模型中的鍵
(1)超鍵
一個(gè)列或者列集,唯一標(biāo)識(shí)表中的一條記錄。超鍵可能包含用于唯一標(biāo)識(shí)記錄所不必要的額外的列,我們通常只對(duì)僅包含能夠唯一標(biāo)識(shí)記錄的最小數(shù)量的列感興趣。
【舉例】
表一:學(xué)號(hào)、姓名、性別、身份證號(hào)、教室號(hào)
表二:教室號(hào)、班主任
超鍵:我們可以使用(學(xué)號(hào)、姓名)的組合鍵來(lái)確定性別屬性,則(學(xué)號(hào)、姓名)就是超鍵。
候選鍵:就是將超鍵中的多余屬性去除掉,我們其實(shí)可以使用學(xué)號(hào)來(lái)確定性別,這時(shí)候,學(xué)號(hào)就是候選鍵。
主鍵:學(xué)號(hào)和身份證號(hào)都能夠唯一確定性別,但是我們只會(huì)選擇其中的一個(gè)來(lái)充當(dāng)主鍵。
外鍵:就是表一的教室號(hào)是外鍵,關(guān)聯(lián)的是表二的教室號(hào)。
(2)候選鍵
僅包含唯一標(biāo)識(shí)記錄所必需的最小數(shù)量列的超鍵。
表的候選鍵有三個(gè)屬性:
● 唯一性:在每條記錄中,候選鍵的值唯一標(biāo)識(shí)該記錄。
● 最小性:具有唯一性屬性的超鍵的最小子集。
● 非空性:候選鍵的值不允許為空。
在我們的例子中,分公司編號(hào)是候選鍵,如果每個(gè)分公司的郵編都不同,那么郵編也可以作為分公司表的候選鍵。一個(gè)表中允許有多個(gè)候選鍵。
(3)主鍵
唯一標(biāo)識(shí)表中記錄的候選鍵。主鍵是唯一、非空的。沒(méi)有被選做主鍵的候選鍵稱為備用鍵。對(duì)于例子中的分公司表,分公司編號(hào)是主鍵,郵編就是備用鍵,而員工表的主鍵是員工編號(hào)。
主鍵的選擇在關(guān)系數(shù)據(jù)模型中非常重要,很多性能問(wèn)題都是由于主鍵選擇不當(dāng)引起的。在選擇主鍵時(shí),我們可以參考以下原則:
● 主鍵要盡可能地小。
● 主鍵值不應(yīng)該被改變。主鍵會(huì)被其他表所引用。如果改變了主鍵的值,所有引用該主鍵的值都需要修改,否則引用就是無(wú)效的。
● 主鍵通常使用數(shù)字類型。數(shù)字類型的主鍵要比其他數(shù)據(jù)類型效率更高。
● 主鍵應(yīng)該是沒(méi)有業(yè)務(wù)含義的,它不應(yīng)包含實(shí)際的業(yè)務(wù)信息。無(wú)意義的數(shù)字列不需要修改,因此是主鍵的理想選擇。大部分關(guān)系型數(shù)據(jù)庫(kù)支持的自增屬性或序列對(duì)象更適合當(dāng)作主鍵。
● 雖然主鍵允許由多列組成,但應(yīng)該使用盡可能少的列,最好是單列。
(4)外鍵
一個(gè)表中的一個(gè)列或多個(gè)列的集合,這些列匹配某些其他(也可以是同一個(gè))表中的候選鍵。注意外鍵所引用的不一定是主鍵,但一定是候選鍵。當(dāng)一列出現(xiàn)在兩張表中的時(shí)候,它通常代表兩張表記錄之間的關(guān)系。如例子中分公司表的分公司編號(hào)和員工表的所屬分公司。它們的名字雖然不同,但卻是同一含義。分公司表的分公司編號(hào)是主鍵,在員工表里所屬分公司是外鍵。同樣,因?yàn)楣窘?jīng)理也是公司員工,所以它是引用員工表的外鍵。主鍵所在的表被稱為父表,外鍵所在的表被稱為子表。
2.1.2 關(guān)系完整性
關(guān)系數(shù)據(jù)模型有兩個(gè)重要的完整性規(guī)則:實(shí)體完整性和參照完整性。
1.空值(NULL)
表示一個(gè)列的值目前還不知道或者對(duì)于當(dāng)前記錄來(lái)說(shuō)不可用??罩悼梢砸馕吨粗?,也可以意味著某個(gè)記錄沒(méi)有值,或者只是意味著該值還沒(méi)有提供??罩凳翘幚聿煌暾麛?shù)據(jù)或異常數(shù)據(jù)的一種方式。
2.關(guān)系完整性規(guī)則
(1)實(shí)體完整性
在一個(gè)基本表中,主鍵列的取值不能為空?;颈碇傅氖敲谋?,其中的記錄物理地存儲(chǔ)在數(shù)據(jù)庫(kù)中,與之對(duì)應(yīng)的是視圖。視圖是虛擬的表,它只是一個(gè)查詢語(yǔ)句的邏輯定義,其中并沒(méi)有物理存儲(chǔ)數(shù)據(jù)。
(2)參照完整性
如果表中存在外鍵,則外鍵值必須與主表中的某些記錄的候選鍵值相同,或者外鍵的值必須全部為空。在圖2-1中,員工表中的所屬分公司是外鍵。該列的值要么是分公司表的分公司編號(hào)列中的值,要么是空(如新員工已經(jīng)加入了公司,但還沒(méi)有被分派到某個(gè)具體的分公司時(shí))。
4.關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言
關(guān)系數(shù)據(jù)庫(kù)的主要語(yǔ)言是SQL語(yǔ)言。
SQL是Structured Query Language的縮寫(xiě),意為結(jié)構(gòu)化查詢語(yǔ)言。SQL已經(jīng)被國(guó)際標(biāo)準(zhǔn)化組織(ISO)進(jìn)行了標(biāo)準(zhǔn)化,使它成為正式的和事實(shí)上的定義和操縱關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。
SQL語(yǔ)言又可分為DDL、DML、DCL、TCL四類。
DDL是Data Definition Language的縮寫(xiě),意為數(shù)據(jù)定義語(yǔ)言,用于定義數(shù)據(jù)庫(kù)結(jié)構(gòu)和模式。典型的DDL有create、alter、drop、truncate、comment、rename等。
DML是Data Manipulation Language的縮寫(xiě),意為數(shù)據(jù)操縱語(yǔ)言,用于檢索、管理和維護(hù)數(shù)據(jù)庫(kù)對(duì)象。典型的DML有select、insert、update、delete、merge、call、explain、lock等。
DCL是Data Control Language的縮寫(xiě),意為數(shù)據(jù)控制語(yǔ)言,用于授予和回收數(shù)據(jù)庫(kù)對(duì)象上的權(quán)限。典型的DCL有g(shù)rant和revoke。
TCL是Transaction Control Language的縮寫(xiě),意為事務(wù)控制語(yǔ)言,用于管理DML對(duì)數(shù)據(jù)的改變。它允許一組DML語(yǔ)句聯(lián)合成一個(gè)邏輯事務(wù)。典型的TCL有commit、rollback、savepoint、set transaction等。
2.1.3 規(guī)范化
沒(méi)有規(guī)范化,數(shù)據(jù)的更新處理將變得困難,異常的插入、修改、刪除數(shù)據(jù)的操作會(huì)頻繁發(fā)生。為了便于理解,來(lái)看下面的例子。
假設(shè)有一個(gè)名為employee的員工表,它有九個(gè)屬性:id(員工編號(hào))、name(員工姓名), mobile(電話)、zip(郵編)、province(省份)、city(城市)、district(區(qū)縣)、deptNo(所屬部門(mén)編號(hào))、deptName(所屬部門(mén)名稱),表中的數(shù)據(jù)如表2-5所示。

為了克服這些異常更新,我們需要對(duì)表進(jìn)行規(guī)范化設(shè)計(jì)。規(guī)范化是通過(guò)應(yīng)用范式規(guī)則實(shí)現(xiàn)的。最常用的范式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
(1) 第一范式(1NF)
表中的列只能含有原子性(不可再分)的值。
數(shù)據(jù)庫(kù)表中的字段都是單一屬性的,不可再分。這個(gè)單一屬性由基本類型構(gòu)成,包括整型、實(shí)數(shù)、字符型、邏輯型、日期型等。
上例中張三有兩個(gè)手機(jī)號(hào)存儲(chǔ)在mobile列中,違反了1NF規(guī)則。為了使表滿足1NF,數(shù)據(jù)應(yīng)該修改為如表2-6所示。

(2) 第二范式(2NF)
規(guī)則是符合第一范式,而且沒(méi)有部分主鍵功能決定其他屬性的現(xiàn)象,也就是主鍵之外的其他屬性都完全的功能相依于主鍵。
第二范式要同時(shí)滿足下面兩個(gè)條件:
● 滿足第一范式。
● 沒(méi)有部分依賴。
例如,員工表的一個(gè)候選鍵是{id, mobile, deptNo},而deptName依賴于{deptNo},同樣name僅依賴于{id},因此不是2NF的。為了滿足第二范式的條件,需要將這個(gè)表拆分成employee、dept、employee_dept、employee_mobile四個(gè)表,如表2-7至表2-10所示。


(3) 第三范式(3NF)
第三范式要同時(shí)滿足下面兩個(gè)條件:
● 滿足第二范式。
● 沒(méi)有傳遞依賴。
例如,員工表的province、city、district依賴于zip,而zip依賴于{id},換句話說(shuō),province、city、district傳遞依賴于{id},違反了3NF規(guī)則。為了滿足第三范式的條件,可以將這個(gè)表拆分成employee和zip兩個(gè)表,如表2-11、表2-12所示。

在關(guān)系數(shù)據(jù)模型設(shè)計(jì)中,一般需要滿足第三范式的要求。如果一個(gè)表有良好的主外鍵設(shè)計(jì),就應(yīng)該是滿足3NF的表。規(guī)范化帶來(lái)的好處是通過(guò)減少數(shù)據(jù)冗余提高更新數(shù)據(jù)的效率,同時(shí)保證數(shù)據(jù)完整性。然而,我們?cè)趯?shí)際應(yīng)用中也要防止過(guò)度規(guī)范化的問(wèn)題。規(guī)范化程度越高,劃分的表就越多,在查詢數(shù)據(jù)時(shí)越有可能使用表連接操作。而如果連接的表過(guò)多,會(huì)影響查詢的性能。關(guān)鍵的問(wèn)題是要依據(jù)業(yè)務(wù)需求,仔細(xì)權(quán)衡數(shù)據(jù)查詢和數(shù)據(jù)更新的關(guān)系,制定最適合的規(guī)范化程度。還有一點(diǎn)需要注意的是,不要為了遵循嚴(yán)格的規(guī)范化規(guī)則而修改業(yè)務(wù)需求。
(4) BCNF范式
BCNF范式(Boyce/Codd Normal Form),是由R.F.Boycy和E.F. Codd共同提出的,可以算成是第三正則化的補(bǔ)充,規(guī)則是符合第三正則化原則,并且沒(méi)有非主鍵屬性可以功能性決定部分主鍵的現(xiàn)象。
假設(shè)有一個(gè)表R,其中的屬性有A,B,C,D,E,以A和B為復(fù)合主鍵,R={A,B,C,D,E},如果存在有非主鍵屬性,比如說(shuō)C可以功能性決定B,C→B,而B(niǎo)是主鍵的一部分,這時(shí)第三正則化是沒(méi)有辦法分辨出來(lái)這種錯(cuò)誤的,所以有BCNF正則化規(guī)則來(lái)把關(guān),同樣地,BCNF正則化的方法也是將原來(lái)的表拆開(kāi),成立一個(gè)新的關(guān)聯(lián)表R1來(lái)裝C→B,R1={C,B},但原來(lái)的表R還是以(A,B)為復(fù)合主鍵,以B為外鍵關(guān)聯(lián)到新的表去,以保留原有的信息。
R={A,B,D,E},R1={C,B},R.B=R1.B
2.2 維度數(shù)據(jù)模型
維度數(shù)據(jù)模型簡(jiǎn)稱維度模型(Dimensional modeling, DM),是一套技術(shù)和概念的集合,用于數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)。
事實(shí)和維度是兩個(gè)維度模型中的核心概念。事實(shí)表示對(duì)業(yè)務(wù)數(shù)據(jù)的度量,而維度是觀察數(shù)據(jù)的角度。事實(shí)通常是數(shù)字類型的,可以進(jìn)行聚合和計(jì)算,而維度通常是一組層次關(guān)系或描述信息,用來(lái)定義事實(shí)。例如,銷售金額是一個(gè)事實(shí),而銷售時(shí)間、銷售的產(chǎn)品、購(gòu)買的顧客、商店等都是銷售事實(shí)的維度。維度模型按照業(yè)務(wù)流程領(lǐng)域即主題域建立,例如進(jìn)貨、銷售、庫(kù)存、配送等。不同的主題域可能共享某些維度,為了提高數(shù)據(jù)操作的性能和數(shù)據(jù)一致性,需要使用一致性維度,例如幾個(gè)主題域間共享維度的復(fù)制。術(shù)語(yǔ)“一致性維度”源自Kimball,指的是具有相同屬性和內(nèi)容的維度。
2.2.1 維度數(shù)據(jù)模型建模過(guò)程
維度模型通常以一種被稱為星型模式的方式構(gòu)建。所謂星型模式,就是以一個(gè)事實(shí)表為中心,周圍環(huán)繞著多個(gè)維度表。還有一種模式叫做雪花模式,是對(duì)維度做進(jìn)一步規(guī)范化后形成的。
一般使用下面的過(guò)程構(gòu)建維度模型:
● 選擇業(yè)務(wù)流程
● 聲明粒度
● 確認(rèn)維度
● 確認(rèn)事實(shí)
1.選擇業(yè)務(wù)流程
確認(rèn)哪些業(yè)務(wù)處理流程是數(shù)據(jù)倉(cāng)庫(kù)應(yīng)該覆蓋的,是維度方法的基礎(chǔ)。因此,建模的第一個(gè)步驟是描述需要建模的業(yè)務(wù)流程。
為了描述業(yè)務(wù)流程,可以簡(jiǎn)單地使用純文本將相關(guān)內(nèi)容記錄下來(lái),或者使用“業(yè)務(wù)流程建模標(biāo)注”(BPMN)方法,也可以使用統(tǒng)一建模語(yǔ)言(UML)或其他類似的方法。
2.聲明粒度
在選擇維度和事實(shí)前必須聲明粒度,因?yàn)槊總€(gè)候選維度或事實(shí)必須與定義的粒度保持一致。
不同的事實(shí)可以有不同的粒度,但同一事實(shí)中不要混用多種不同的粒度。
3.確認(rèn)維度
維度表是事實(shí)表的基礎(chǔ),也說(shuō)明了事實(shí)表的數(shù)據(jù)是從哪里采集來(lái)的。典型的維度都是名詞,如日期、商店、庫(kù)存等。維度表存儲(chǔ)了某一維度的所有相關(guān)數(shù)據(jù),例如,日期維度應(yīng)該包括年、季度、月、周、日等數(shù)據(jù)。
4.確認(rèn)事實(shí)
大部分事實(shí)表的度量都是數(shù)字類型的,可累加,可計(jì)算,如成本、數(shù)量、金額等。
2.2.2 維度規(guī)范化
與關(guān)系模型類似,維度也可以進(jìn)行規(guī)范化。對(duì)維度的規(guī)范化(又叫雪花化),可以去除冗余屬性,是對(duì)非規(guī)范化維度做的規(guī)范化處理。
總體來(lái)說(shuō),當(dāng)多個(gè)維度共用某些通用的屬性時(shí),做規(guī)范化會(huì)是有益的。例如,客戶和供應(yīng)商都有省、市、區(qū)縣、街道等地理位置的屬性,此時(shí)分離出一個(gè)地區(qū)屬性就比較合適。
2.2.4 星型模式
星型模式是維度模型最簡(jiǎn)單的形式,也是數(shù)據(jù)倉(cāng)庫(kù)以及數(shù)據(jù)集市開(kāi)發(fā)中使用最廣泛的形式。星型模式由事實(shí)表和維度表組成,一個(gè)星型模式中可以有一個(gè)或多個(gè)事實(shí)表,每個(gè)事實(shí)表引用任意數(shù)量的維度表。星型模式的物理模型像一顆星星的形狀,中心是一個(gè)事實(shí)表,圍繞在事實(shí)表周圍的維度表表示星星的放射狀分支,這就是星型模式這個(gè)名字的由來(lái)。
星型模式將業(yè)務(wù)流程分為事實(shí)和維度。事實(shí)包含業(yè)務(wù)的度量,是定量的數(shù)據(jù),如銷售價(jià)格、銷售數(shù)量、距離、速度、重量等是事實(shí)。維度是對(duì)事實(shí)數(shù)據(jù)屬性的描述,如日期、產(chǎn)品、客戶、地理位置等是維度。一個(gè)含有很多維度表的星型模式有時(shí)被稱為蜈蚣模式,顯然這個(gè)名字也是因其形狀而得來(lái)的。
1.事實(shí)表
事實(shí)表記錄了特定事件的數(shù)字化的考量,一般由數(shù)字值和指向維度表的外鍵組成。通常會(huì)把事實(shí)表的粒度級(jí)別設(shè)計(jì)得比較低,使得事實(shí)表可以記錄很原始的操作型事件,但這樣做的負(fù)面影響是累加大量記錄可能會(huì)更耗時(shí)。事實(shí)表有以下三種類型:
● 事務(wù)事實(shí)表。記錄特定事件的事實(shí),如銷售。
● 快照事實(shí)表。記錄給定時(shí)間點(diǎn)的事實(shí),如月底賬戶余額。
● 累積事實(shí)表。記錄給定時(shí)間點(diǎn)的聚合事實(shí),如當(dāng)月的總的銷售金額。
一般需要給事實(shí)表設(shè)計(jì)一個(gè)代理鍵作為每行記錄的唯一標(biāo)識(shí)。代理鍵是由系統(tǒng)生成的主鍵,它不是應(yīng)用數(shù)據(jù),沒(méi)有業(yè)務(wù)含義,對(duì)用戶來(lái)說(shuō)是透明的。
2.維度表
維度表的記錄數(shù)通常比事實(shí)表少,但每條記錄包含有大量用于描述事實(shí)數(shù)據(jù)的屬性字段。
維度表可以定義各種各樣的特性,以下是幾種最長(zhǎng)用的維度表:
● 時(shí)間維度表。描述星型模式中記錄的事件所發(fā)生的時(shí)間,具有所需的最低級(jí)別的時(shí)間粒度。數(shù)據(jù)倉(cāng)庫(kù)是隨時(shí)間變化的數(shù)據(jù)集合,需要記錄數(shù)據(jù)的歷史,因此每個(gè)數(shù)據(jù)倉(cāng)庫(kù)都需要一個(gè)時(shí)間維度表。
● 地理維度表。描述位置信息的數(shù)據(jù),如國(guó)家、省份、城市、區(qū)縣、郵編等。
● 產(chǎn)品維度表。描述產(chǎn)品及其屬性。
● 人員維度表。描述人員相關(guān)的信息,如銷售人員、市場(chǎng)人員、開(kāi)發(fā)人員等。
● 范圍維度表。描述分段數(shù)據(jù)的信息,如高級(jí)、中級(jí)、低級(jí)等。
通常給維度表設(shè)計(jì)一個(gè)單列、整型數(shù)字類型的代理鍵,映射業(yè)務(wù)數(shù)據(jù)中的主鍵。業(yè)務(wù)系統(tǒng)中的主鍵本身可能是自然鍵,也可能是代理鍵。自然鍵指的是由現(xiàn)實(shí)世界中已經(jīng)存在的屬性組成的鍵,如身份證號(hào)就是典型的自然鍵。
5.示例
假設(shè)有一個(gè)連鎖店的銷售數(shù)據(jù)倉(cāng)庫(kù),記錄銷售相關(guān)的日期、商店和產(chǎn)品,其星型模式如圖2-3所示。

Fact_Sales是唯一的事實(shí)表,Dim_Date、Dim_Store和Dim_Product是三個(gè)維度表。每個(gè)維度表的Id字段是它們的主鍵。事實(shí)表的Date_Id、Store_Id、Product_Id三個(gè)字段構(gòu)成了事實(shí)表的聯(lián)合主鍵,同時(shí)這個(gè)三個(gè)字段也是外鍵,分別引用對(duì)應(yīng)的三個(gè)維度表的主鍵。Units_Sold是事實(shí)表的唯一一個(gè)非主鍵列,代表銷售量,是用于計(jì)算和分析的度量值。維度表的非主鍵列表示維度的附加屬性。下面的查詢可以回答2015年各個(gè)城市的手機(jī)銷量是多少。

2.2.5 雪花模式
雪花模式是一種多維模型中表的邏輯布局,其實(shí)體關(guān)系圖有類似于雪花的形狀,因此得名。與星型模式相同,雪花模式也是由事實(shí)表和維度表所組成。所謂的“雪花化”就是將星型模式中的維度表進(jìn)行規(guī)范化處理。當(dāng)所有的維度表完成規(guī)范化后,就形成了以事實(shí)表為中心的雪花型結(jié)構(gòu),即雪花模式。將維度表進(jìn)行規(guī)范化的具體做法是,把低基數(shù)的屬性從維度表中移除并形成單獨(dú)的表。
星型模式和雪花模式都是建立維度數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市的常用方式,適用于加快查詢速度比高效維護(hù)數(shù)據(jù)的重要性更高的場(chǎng)景。這些模式中的表沒(méi)有特別的規(guī)范化,一般都被設(shè)計(jì)成一個(gè)低于第三范式的級(jí)別。
4.示例
圖2-4顯示的是將圖2-3的星型模式規(guī)范化后的雪花模式。日期維度分解成季度、月、周、日期四個(gè)表。產(chǎn)品維度分解成產(chǎn)品分類、產(chǎn)品兩個(gè)表。由商場(chǎng)維度分解出一個(gè)地區(qū)表。

圖2-4顯示的是將圖2-3的星型模式規(guī)范化后的雪花模式。日期維度分解成季度、月、周、日期四個(gè)表。產(chǎn)品維度分解成產(chǎn)品分類、產(chǎn)品兩個(gè)表。由商場(chǎng)維度分解出一個(gè)地區(qū)表。
下面所示的查詢語(yǔ)句的結(jié)果等價(jià)于前面星型模式的查詢,可以明顯看到此查詢比星型模式的查詢有更多的表連接。

2.3 Data Vault模型
參考
(1)Data Vault 數(shù)據(jù)倉(cāng)庫(kù)模型構(gòu)建-1
http://www.itdecent.cn/p/df3684c20092
(2)Data Vault初探(三) —— 建立Data Vault模型
https://blog.csdn.net/wzy0623/article/details/50222269
2.4 數(shù)據(jù)集市
2.4.1 數(shù)據(jù)集市的概念
數(shù)據(jù)集市是數(shù)據(jù)倉(cāng)庫(kù)的一種簡(jiǎn)單形式,通常由組織內(nèi)的業(yè)務(wù)部門(mén)自己建立和控制。
2.4.2 數(shù)據(jù)集市與數(shù)據(jù)倉(cāng)庫(kù)的區(qū)別

2.4.3 數(shù)據(jù)集市設(shè)計(jì)
數(shù)據(jù)集市主要用于部門(mén)級(jí)別的分析型應(yīng)用,數(shù)據(jù)大都是經(jīng)過(guò)了匯總和聚合操作,粒度級(jí)別較高。數(shù)據(jù)集市一般采用維度模型設(shè)計(jì)方法,數(shù)據(jù)結(jié)構(gòu)使用星型模式或雪花模式。
正如前面所介紹的,設(shè)計(jì)維度模型先要確定維度表、事實(shí)表和數(shù)據(jù)粒度級(jí)別,下一步是使用主外鍵定義事實(shí)表和維度表之間的關(guān)系。數(shù)據(jù)集市中的主鍵最好使用系統(tǒng)生成的自增的單列數(shù)字型代理鍵。模型建立好之后,設(shè)計(jì)ETL步驟抽取操作型源系統(tǒng)的數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)清洗和轉(zhuǎn)換,最終裝載進(jìn)數(shù)據(jù)集市中的維度表和事實(shí)表中。
2.5 數(shù)據(jù)倉(cāng)庫(kù)實(shí)施步驟
1.定義范圍
首要任務(wù)是定義項(xiàng)目的范圍。項(xiàng)目范圍定義了一個(gè)數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目的邊界。典型的范圍定義是組織、地區(qū)、應(yīng)用、業(yè)務(wù)功能的聯(lián)合表示。定義范圍時(shí)通常需要權(quán)衡考慮資源(人員、系統(tǒng)、預(yù)算等)、進(jìn)度(項(xiàng)目的時(shí)間和里程碑要求)、功能(數(shù)據(jù)倉(cāng)庫(kù)承諾達(dá)到的能力)三方面的因素。定義好清晰明確的范圍,并得到所有項(xiàng)目干系人的一致認(rèn)可,對(duì)項(xiàng)目的成功是非常重要的。項(xiàng)目范圍是設(shè)定正確的期望值、評(píng)估成本、估計(jì)風(fēng)險(xiǎn)、制定開(kāi)發(fā)優(yōu)先級(jí)的依據(jù)。
2.確定需求
數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目的需求可以分為業(yè)務(wù)需求和技術(shù)需求。
(1)定義業(yè)務(wù)需求
與業(yè)務(wù)人員進(jìn)行面對(duì)面的溝通,是理解業(yè)務(wù)流程的好方式。溝通的結(jié)果是使數(shù)據(jù)倉(cāng)庫(kù)的業(yè)務(wù)需求更加明確。在為數(shù)據(jù)倉(cāng)庫(kù)收集需求的過(guò)程中,還要考慮設(shè)計(jì)要能適應(yīng)需求的變化。
(2)定義技術(shù)需求
需要知道如何清理操作型數(shù)據(jù),如何移除垃圾數(shù)據(jù),如何將來(lái)自多個(gè)源系統(tǒng)的相同數(shù)據(jù)整合在一起。另外,還要確認(rèn)數(shù)據(jù)的更新頻率。
3.邏輯設(shè)計(jì)
下面就要進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)的邏輯設(shè)計(jì)階段。邏輯設(shè)計(jì)過(guò)程中,需要定義特定數(shù)據(jù)的具體內(nèi)容,數(shù)據(jù)之間的關(guān)系,支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)的系統(tǒng)環(huán)境等,本質(zhì)是發(fā)現(xiàn)邏輯對(duì)象之間的關(guān)系。
(1)建立需要的數(shù)據(jù)列表
細(xì)化業(yè)務(wù)用戶的需求以形成數(shù)據(jù)元素列表。
(2)識(shí)別數(shù)據(jù)源
應(yīng)該從最大最復(fù)雜的源系統(tǒng)開(kāi)始,在必要時(shí)再查找其他源系統(tǒng)。
(3)制作實(shí)體關(guān)系圖
邏輯設(shè)計(jì)的交付物是實(shí)體關(guān)系圖(entity-relationshipdiagram,簡(jiǎn)稱ERD)和對(duì)它的說(shuō)明文檔(數(shù)據(jù)字典)。實(shí)體對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)中的表,屬性對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)中的列。ERD傳統(tǒng)上與高度規(guī)范化的關(guān)系模型聯(lián)系密切,但該技術(shù)在維度模型中也被廣泛使用。在維度模型的ERD中,實(shí)體由事實(shí)表和維度表組成,關(guān)系體現(xiàn)為在事實(shí)表中引用維度表的主鍵。因此先要確認(rèn)哪些信息屬于中心事實(shí)表,哪些信息屬于相關(guān)的維度表。維度模型中表的規(guī)范化級(jí)別通常低于關(guān)系模型中的表。
4.物理設(shè)計(jì)
物理設(shè)計(jì)指的是將邏輯設(shè)計(jì)的對(duì)象集合,轉(zhuǎn)化為一個(gè)物理數(shù)據(jù)庫(kù),包括所有的表、索引、約束、視圖等。
5.裝載數(shù)據(jù)
這個(gè)步驟實(shí)際上涉及整個(gè)ETL過(guò)程。需要執(zhí)行的任務(wù)包括:源和目標(biāo)結(jié)構(gòu)之間建立映射關(guān)系;從源系統(tǒng)抽取數(shù)據(jù);對(duì)數(shù)據(jù)進(jìn)行清洗和轉(zhuǎn)換;將數(shù)據(jù)裝載進(jìn)數(shù)據(jù)倉(cāng)庫(kù);創(chuàng)建并存儲(chǔ)元數(shù)據(jù)。
6.訪問(wèn)數(shù)據(jù)
訪問(wèn)步驟是要使數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)可以被使用,使用的方式包括:數(shù)據(jù)查詢、數(shù)據(jù)分析、建立報(bào)表圖表、數(shù)據(jù)發(fā)布等。根據(jù)采用的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu),可能會(huì)引入數(shù)據(jù)集市的創(chuàng)建。通常,最終用戶會(huì)使用圖形化的前端工具向數(shù)據(jù)庫(kù)提交查詢,并顯示查詢結(jié)果。
7.管理維護(hù)
這個(gè)步驟涵蓋在數(shù)據(jù)倉(cāng)庫(kù)整個(gè)生命周期里的管理和維護(hù)工作。這步需要執(zhí)行的任務(wù)包括:確保對(duì)數(shù)據(jù)的安全訪問(wèn)、管理數(shù)據(jù)增長(zhǎng)、優(yōu)化系統(tǒng)以獲得更好的性能、保證系統(tǒng)的可用性和可恢復(fù)性等。
更多信息請(qǐng)參考作者書(shū)籍內(nèi)容,可各大平臺(tái)在線購(gòu)買。