干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略!

3 評論 14405 瀏覽 65 收藏 12 分鐘

數(shù)據(jù)倉庫建模,就是數(shù)據(jù)的組織和存儲方法,它強調(diào)從業(yè)務(wù)出發(fā),將數(shù)據(jù)有序組織和存儲起來。本文作者對數(shù)據(jù)倉庫建模常用模型進(jìn)行了分析,一起來看一下吧。

一、數(shù)據(jù)倉庫建模是什么?

數(shù)據(jù)倉庫建模就是數(shù)據(jù)的組織和存儲方法,舉個例子,數(shù)據(jù)倉庫的建模就類似于家庭物品收納問題,我們會按照物品的特性以及自身的喜好將物品進(jìn)行一個井然有序的整理收納,使我們清晰地知道物品歸放的位置,便于日后查找使用,也能無形地讓大腦標(biāo)記物品位置,形成歸類統(tǒng)一意識,漸漸成為一種好習(xí)慣。

數(shù)據(jù)建模也是如此,它強調(diào)從業(yè)務(wù)出發(fā),將數(shù)據(jù)有序組織和存儲起來,只有做到這樣,數(shù)據(jù)才可以高效率、高質(zhì)量、高性能、低成本地使用,才可以更好地支持企業(yè)決策,賦能企業(yè)業(yè)務(wù),提升企業(yè)綜合實力。

二、數(shù)據(jù)倉庫建模常用模型淺析

1. ER模型(實體關(guān)系模型)

數(shù)據(jù)倉庫之父Bill Inmon提出的建模方法是從全企業(yè)的高度,用實體關(guān)系(Entity Relationship,ER)模型來描述企業(yè)業(yè)務(wù),并用規(guī)范化的方式表示出來,在范式理論上符合3NF。

1)什么是實體關(guān)系模型

實體關(guān)系模型由美籍華裔計算機(jī)科學(xué)家陳品山發(fā)明,用概念數(shù)據(jù)模型的描述所使用的數(shù)據(jù)或模式圖,實體關(guān)系模型將復(fù)雜的數(shù)據(jù)抽象為兩個概念——實體和關(guān)系。實體表示一個對象,例如商店、員工這兩個對象,關(guān)系是指兩個實體之間的關(guān)系,例如員工和商店的從屬關(guān)系。對象與對象的關(guān)系可以分為1-1,1-n,n-n這三種類型,舉例說明:

  • 1-1:一個商店只能有一個店長,一個店長只能在一個商店中任職,則商店和店長就是1對1的關(guān)系。
  • 1-n:一個商店有很多雇員,雇員只屬于這個商店。則商店和雇員就是1對多的關(guān)系。
  • n-n:商店里有很多商品,商品也可以在多個商店售賣,則商店和商品就是多對多的關(guān)系。

2)范式理論是什么?

范式是表結(jié)構(gòu)設(shè)計標(biāo)準(zhǔn)的級別,是關(guān)系的約束條件的規(guī)范,關(guān)系型數(shù)據(jù)庫的范式一共有六種,分別是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。遵循的范式級別越高,數(shù)據(jù)冗余性就越低。

因為數(shù)據(jù)倉庫ER建模遵循3范式標(biāo)準(zhǔn),本文就只針對于前3個范式進(jìn)行講解,其他的范式不再贅述, 感興趣的讀者可以自己查詢下相關(guān)資料。

數(shù)據(jù)庫規(guī)范化就是使用一系列范式設(shè)計數(shù)據(jù)庫(通常是關(guān)系型數(shù)據(jù)庫)的過程,其目的是減少數(shù)據(jù)冗余,增強數(shù)據(jù)的一致性,必須要注意的一點是范式存在前置依賴,如要使用第三范式,設(shè)計數(shù)據(jù)庫時必須依賴于使用前兩個范式的之后,才可以按照第三范式的繼續(xù)設(shè)計數(shù)據(jù)庫表。具體設(shè)計時要根據(jù)業(yè)務(wù)實際流程,一般遵循第三范式即可。

第一范式強調(diào)列的原子性,要求每列屬性不可分割

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略?。。? /></p>
<p>上圖數(shù)據(jù)列中商品這一列的數(shù)據(jù)不是原子數(shù)據(jù),它可以繼續(xù)分割成商品數(shù)量和商品名稱,按照第一范式進(jìn)行調(diào)整后,如下圖所示:</p>
<p><img data-action=

第二范式:在1范式的基礎(chǔ)上,要求屬性必須依賴于主鍵,不能存在部分函數(shù)依賴。

函數(shù)依賴:某個屬性集x決定另一個屬性集y時,稱另一屬性集y依賴于該屬性集x。如學(xué)號和姓名,通過學(xué)號可以找到姓名,那么就說姓名依賴于學(xué)號。

完全函數(shù)依賴:通過xy能得到z,但是單獨通過x或者通過y得不到z,那么就稱z完全依賴于xy。如:學(xué)號,課程和成績。可以通過學(xué)號和課程得到成績,但是單獨通過課程和學(xué)號得不到課程,就說成績完全依賴于課程和學(xué)號。

部分函數(shù)依賴:通過xy能得到z,通過x得到z或者通過y也可以得到z,那么就說z部分依賴于xy,如學(xué)號、姓名和性別,通過學(xué)號和姓名可以找到性別,也可以通過學(xué)號單獨找到性別,就說性別部分依賴于學(xué)號和姓名。

傳遞函數(shù)依賴:通過x能得到y(tǒng),通過y得到z,那么就說z傳遞依賴于x,如通過學(xué)號得到班級名稱,在通過班級名稱找到班主任,就可以說班主任傳遞依賴于學(xué)號。

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略?。?!

如上圖所示:表中的主鍵如果是(學(xué)號、課程)的話,通過(學(xué)號、課程)可以找到成績,分?jǐn)?shù)是完全依賴于(學(xué)號、課程)但是姓名可以單獨通過學(xué)號找到,姓名不完全依賴于找到(學(xué)號、課程),故不符合第二范式。調(diào)整后如下所示:

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略?。?!

第三范式:消除依賴傳遞,任何非主屬性不依賴與其他非主屬性。

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略?。?!

如圖所示:上邊這張表中,如果想要找到輔導(dǎo),通過學(xué)號找到班級,通過班級找到輔導(dǎo)員,存在很明顯的函數(shù)依賴,故不符合第三范式要求,調(diào)整后如圖所示:

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略?。?!

以上就是關(guān)于三范式的相關(guān)講解,那么按照Bill Inmon提出的數(shù)倉建模思想,用ER模型進(jìn)行建模,首先以京東商城訂單流程為例子,整個交易環(huán)節(jié)中包含下單,取消訂單、支付,拆單、退款,發(fā)貨、收貨、退換貨、評價等,下圖為京東商城訂單截圖。

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略!??!

那么我們以訂單業(yè)務(wù)為例,采用ER模型遵循3范式建模,按照這種方式將數(shù)據(jù)進(jìn)行規(guī)范化處理,則可以構(gòu)建出下圖所示的數(shù)倉模型,值得注意的是下圖只是將一部分交易流程進(jìn)行了繪制,訂單風(fēng)控、訂單退貨退款、訂單評價等還沒有繪制到模型中。

干貨 | 數(shù)據(jù)倉庫建模超詳細(xì)攻略!?。? /></p>
<p>從圖中我們可以看出按照這樣的方式進(jìn)行數(shù)據(jù)建模,雖然減少了數(shù)據(jù)冗余性,保證了數(shù)據(jù)的一致性,但是如果要查詢一個相關(guān)的指標(biāo)或者事實可能需要關(guān)聯(lián)十幾張表,在數(shù)據(jù)量小,有索引的情況下可能還好些,如果數(shù)據(jù)量十分驚人,數(shù)以億計,那查詢的速度可能十分緩慢,甚至可能會造成宕機(jī),顯而易見這種模型不太適合直接應(yīng)用于業(yè)務(wù)分析和計算場景。</p>
<h3>2. 維度模型</h3>
<p>維度模型是Ralph Kimball 在90年代提出的數(shù)倉建模理論,并在于1996年發(fā)布的《The Data Warehouse Toolkit》一書中詳細(xì)介紹了維度建模理論知識。</p>
<p>維度建模之所以能受到廣泛的關(guān)注和認(rèn)可,一方面是因為它從企業(yè)決策分析作為出發(fā)點,為數(shù)據(jù)分析服務(wù),它的初衷是旨在,使用戶更快的完成數(shù)據(jù)分析,以及更好地實現(xiàn)大規(guī)模復(fù)雜的查詢操作。另外一方面,得益于技術(shù)的發(fā)展,基礎(chǔ)存儲硬件的成本逐年降低,同時硬件的計算性能也大幅度提升,才使得維度建模能夠走上歷史舞臺,得到海內(nèi)外企業(yè)和用戶的認(rèn)同。</p>
<p>維度模型將企業(yè)的業(yè)務(wù)通過兩個方面進(jìn)行數(shù)據(jù)建模,即事實表和維度表。事實通常指企業(yè)具體的業(yè)務(wù)過程,如登錄、注冊、加購、下單等等,需要注意的是建模時通常會選擇最細(xì)粒度的業(yè)務(wù)過程數(shù)據(jù)作為事實表,如訂單事實表會選訂單明細(xì)表作為基礎(chǔ)事實表,而上邊簡述的ER模型則選訂單主表作為基礎(chǔ),維度通常指業(yè)務(wù)過程發(fā)生時所處的環(huán)境,如何人、何地、何時、何種東西,何種方法做了哪些事情。</p>
<p>具體細(xì)節(jié)應(yīng)該聯(lián)系業(yè)務(wù)過程,通過5W2H的方法進(jìn)行分析,繪制出具體的總線矩陣。按照維度建模理論,我們將上述訂單過程進(jìn)行了一個初步建模,中間的為事實表,周邊的為維度表,需要注意的是,本次建模的內(nèi)容和上邊ER模型講解保持了一致,所以也沒有涵蓋所有的維度,如圖所示:</p>
<p><img data-action=

從上圖中可以看出,維度建模數(shù)據(jù)結(jié)構(gòu)相對ER模型來說,更為清晰簡潔,查詢時連表操作相對較少,可以及時響應(yīng)大量且復(fù)雜的查詢操作,提升業(yè)務(wù)分析速度,快速支持業(yè)務(wù)決策。但是數(shù)據(jù)存在大量冗余,需要消耗大量存儲空間。

本文由 @菜鳥數(shù)據(jù)之旅 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 感謝分享?

    來自北京 回復(fù)
  2. 哦吼,這和軟件工程需求工程都有點類似啊,設(shè)計方面還是有很多相似之處的。

    來自山西 回復(fù)
  3. 學(xué)到了!有這么多數(shù)據(jù)模型!要好好研究運用到實際當(dāng)中去

    來自山西 回復(fù)