全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

首頁(yè)技術(shù)文章正文

云計(jì)算大數(shù)據(jù):數(shù)據(jù)倉(cāng)庫(kù)建模

更新時(shí)間:2017-12-19 來(lái)源:黑馬程序員 瀏覽量:

什么是數(shù)據(jù)模型

數(shù)據(jù)模型是抽象描述現(xiàn)實(shí)世界的一種工具和方法,是通過(guò)抽象的實(shí)體及實(shí)體之間聯(lián)系的形式,來(lái)表示現(xiàn)實(shí)世界中事務(wù)的相互關(guān)系的一種映射。在這里,數(shù)據(jù)模型表現(xiàn)的抽象的是實(shí)體和實(shí)體之間的關(guān)系,通過(guò)對(duì)實(shí)體和實(shí)體之間關(guān)系的定義和描述,來(lái)表達(dá)實(shí)際的業(yè)務(wù)中具體的業(yè)務(wù)關(guān)系。

數(shù)據(jù)倉(cāng)庫(kù)模型是數(shù)據(jù)模型中針對(duì)特定的數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用系統(tǒng)的一種特定的數(shù)據(jù)模型,一般的來(lái)說(shuō),我們數(shù)據(jù)倉(cāng)庫(kù)模型分為幾下幾個(gè)層次,如圖 2 所示。

圖 2. 數(shù)據(jù)倉(cāng)庫(kù)模型

數(shù)據(jù)倉(cāng)庫(kù)建模

通過(guò)上面的圖形,我們能夠很容易的看出在整個(gè)數(shù)據(jù)倉(cāng)庫(kù)得建模過(guò)程中,我們需要經(jīng)歷一般四個(gè)過(guò)程:

· 業(yè)務(wù)建模,生成業(yè)務(wù)模型,主要解決業(yè)務(wù)層面的分解和程序化。

· 領(lǐng)域建模,生成領(lǐng)域模型,主要是對(duì)業(yè)務(wù)模型進(jìn)行抽象處理,生成領(lǐng)域概念模型。

· 邏輯建模,生成邏輯模型,主要是將領(lǐng)域模型的概念實(shí)體以及實(shí)體之間的關(guān)系進(jìn)行數(shù)據(jù)庫(kù)層次的邏輯化。

· 物理建模,生成物理模型,主要解決,邏輯模型針對(duì)不同關(guān)系型數(shù)據(jù)庫(kù)的物理化以及性能等一些具體的技術(shù)問(wèn)題。

因此,在整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的模型的設(shè)計(jì)和架構(gòu)中,既涉及到業(yè)務(wù)知識(shí),也涉及到了具體的技術(shù),我們既需要了解豐富的行業(yè)經(jīng)驗(yàn),同時(shí),也需要一定的信息技術(shù)來(lái)幫助我們實(shí)現(xiàn)我們的數(shù)據(jù)模型,最重要的是,我們還需要一個(gè)非常適用的方法論,來(lái)指導(dǎo)我們自己針對(duì)我們的業(yè)務(wù)進(jìn)行抽象,處理,生成各個(gè)階段的模型。

1 為什么需要數(shù)據(jù)倉(cāng)庫(kù)模型

在數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)中,我們一再?gòu)?qiáng)調(diào)需要數(shù)據(jù)模型,那么數(shù)據(jù)模型究竟為什么這么重要呢?首先我們需要了解整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)的發(fā)展史。

數(shù)據(jù)倉(cāng)庫(kù)的發(fā)展大致經(jīng)歷了這樣的三個(gè)過(guò)程:

· 簡(jiǎn)單報(bào)表階段:這個(gè)階段,系統(tǒng)的主要目標(biāo)是解決一些日常的工作中業(yè)務(wù)人員需要的報(bào)表,以及生成一些簡(jiǎn)單的能夠幫助領(lǐng)導(dǎo)進(jìn)行決策所需要的匯總數(shù)據(jù)。這個(gè)階段的大部分表現(xiàn)形式為數(shù)據(jù)庫(kù)和前端報(bào)表工具。

· 數(shù)據(jù)集市階段:這個(gè)階段,主要是根據(jù)某個(gè)業(yè)務(wù)部門(mén)的需要,進(jìn)行一定的數(shù)據(jù)的采集,整理,按照業(yè)務(wù)人員的需要,進(jìn)行多維報(bào)表的展現(xiàn),能夠提供對(duì)特定業(yè)務(wù)指導(dǎo)的數(shù)據(jù),并且能夠提供特定的領(lǐng)導(dǎo)決策數(shù)據(jù)。

· 數(shù)據(jù)倉(cāng)庫(kù)階段:這個(gè)階段,主要是按照一定的數(shù)據(jù)模型,對(duì)整個(gè)企業(yè)的數(shù)據(jù)進(jìn)行采集,整理,并且能夠按照各個(gè)業(yè)務(wù)部門(mén)的需要,提供跨部門(mén)的,完全一致的業(yè)務(wù)報(bào)表數(shù)據(jù),能夠通過(guò)數(shù)據(jù)倉(cāng)庫(kù)生成對(duì)對(duì)業(yè)務(wù)具有指導(dǎo)性的數(shù)據(jù),同時(shí),為領(lǐng)導(dǎo)決策提供全面的數(shù)據(jù)支持。

通過(guò)數(shù)據(jù)倉(cāng)庫(kù)建設(shè)的發(fā)展階段,我們能夠看出,數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)和數(shù)據(jù)集市的建設(shè)的重要區(qū)別就在于數(shù)據(jù)模型的支持。因此,數(shù)據(jù)模型的建設(shè),對(duì)于我們數(shù)據(jù)倉(cāng)庫(kù)的建設(shè),有著決定性的意義。

一般來(lái)說(shuō),數(shù)據(jù)模型的建設(shè)主要能夠幫助我們解決以下的一些問(wèn)題:

· 進(jìn)行全面的業(yè)務(wù)梳理,改進(jìn)業(yè)務(wù)流程。在業(yè)務(wù)模型建設(shè)的階段,能夠幫助我們的企業(yè)或者是管理機(jī)關(guān)對(duì)本單位的業(yè)務(wù)進(jìn)行全面的梳理。通過(guò)業(yè)務(wù)模型的建設(shè),我們應(yīng)該能夠全面了解該單位的業(yè)務(wù)架構(gòu)圖和整個(gè)業(yè)務(wù)的運(yùn)行情況,能夠?qū)I(yè)務(wù)按照特定的規(guī)律進(jìn)行分門(mén)別類(lèi)和程序化,同時(shí),幫助我們進(jìn)一步的改進(jìn)業(yè)務(wù)的流程,提高業(yè)務(wù)效率,指導(dǎo)我們的業(yè)務(wù)部門(mén)的生產(chǎn)。

· 建立全方位的數(shù)據(jù)視角,消滅信息孤島和數(shù)據(jù)差異。通過(guò)數(shù)據(jù)倉(cāng)庫(kù)的模型建設(shè),能夠?yàn)槠髽I(yè)提供一個(gè)整體的數(shù)據(jù)視角,不再是各個(gè)部門(mén)只是關(guān)注自己的數(shù)據(jù),而且通過(guò)模型的建設(shè),勾勒出了部門(mén)之間內(nèi)在的聯(lián)系,幫助消滅各個(gè)部門(mén)之間的信息孤島的問(wèn)題,更為重要的是,通過(guò)數(shù)據(jù)模型的建設(shè),能夠保證整個(gè)企業(yè)的數(shù)據(jù)的一致性,各個(gè)部門(mén)之間數(shù)據(jù)的差異將會(huì)得到有效解決。

· 解決業(yè)務(wù)的變動(dòng)和數(shù)據(jù)倉(cāng)庫(kù)的靈活性。通過(guò)數(shù)據(jù)模型的建設(shè),能夠很好的分離出底層技術(shù)的實(shí)現(xiàn)和上層業(yè)務(wù)的展現(xiàn)。當(dāng)上層業(yè)務(wù)發(fā)生變化時(shí),通過(guò)數(shù)據(jù)模型,底層的技術(shù)實(shí)現(xiàn)可以非常輕松的完成業(yè)務(wù)的變動(dòng),從而達(dá)到整個(gè)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的靈活性。

· 幫助數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)本身的建設(shè)。通過(guò)數(shù)據(jù)倉(cāng)庫(kù)的模型建設(shè),開(kāi)發(fā)人員和業(yè)務(wù)人員能夠很容易的達(dá)成系統(tǒng)建設(shè)范圍的界定,以及長(zhǎng)期目標(biāo)的規(guī)劃,從而能夠使整個(gè)項(xiàng)目組明確當(dāng)前的任務(wù),加快整個(gè)系統(tǒng)建設(shè)的速度。

2 如何建設(shè)數(shù)據(jù)倉(cāng)庫(kù)模型

建設(shè)數(shù)據(jù)模型既然是整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建設(shè)中一個(gè)非常重要的關(guān)鍵部分,那么,怎么建設(shè)我們的數(shù)據(jù)倉(cāng)庫(kù)模型就是我們需要解決的一個(gè)問(wèn)題。這里我們將要詳細(xì)介紹如何創(chuàng)建適合自己的數(shù)據(jù)模型。

3.1 數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)模型架構(gòu)

數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)模型的架構(gòu)和數(shù)據(jù)倉(cāng)庫(kù)的整體架構(gòu)是緊密關(guān)聯(lián)在一起的,我們首先來(lái)了解一下整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)模型應(yīng)該包含的幾個(gè)部分。從下圖我們可以很清楚地看到,整個(gè)數(shù)據(jù)模型的架構(gòu)分成 5 大部分,每個(gè)部分其實(shí)都有其獨(dú)特的功能。

圖 3. 數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)模型架構(gòu)

數(shù)據(jù)倉(cāng)庫(kù)建模

從上圖我們可以看出,整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)模型可以分為大概 5 大部分:

· 系統(tǒng)記錄域(System of Record):這部分是主要的數(shù)據(jù)倉(cāng)庫(kù)業(yè)務(wù)數(shù)據(jù)存儲(chǔ)區(qū),數(shù)據(jù)模型在這里保證了數(shù)據(jù)的一致性。

· 內(nèi)部管理域(Housekeeping):這部分主要存儲(chǔ)數(shù)據(jù)倉(cāng)庫(kù)用于內(nèi)部管理的元數(shù)據(jù),數(shù)據(jù)模型在這里能夠幫助進(jìn)行統(tǒng)一的元數(shù)據(jù)的管理。

· 匯總域(Summary of Area):這部分?jǐn)?shù)據(jù)來(lái)自于系統(tǒng)記錄域的匯總,數(shù)據(jù)模型在這里保證了分析域的主題分析的性能,滿(mǎn)足了部分的報(bào)表查詢(xún)。

· 分析域(Analysis Area):這部分?jǐn)?shù)據(jù)模型主要用于各個(gè)業(yè)務(wù)部分的具體的主題業(yè)務(wù)分析。這部分?jǐn)?shù)據(jù)模型可以單獨(dú)存儲(chǔ)在相應(yīng)的數(shù)據(jù)集市中。

· 反饋域(Feedback Area):可選項(xiàng),這部分?jǐn)?shù)據(jù)模型主要用于相應(yīng)前端的反饋數(shù)據(jù),數(shù)據(jù)倉(cāng)庫(kù)可以視業(yè)務(wù)的需要設(shè)置這一區(qū)域。

通過(guò)對(duì)整個(gè)數(shù)據(jù)倉(cāng)庫(kù)模型的數(shù)據(jù)區(qū)域的劃分,我們可以了解到,一個(gè)好的數(shù)據(jù)模型,不僅僅是對(duì)業(yè)務(wù)進(jìn)行抽象劃分,而且對(duì)實(shí)現(xiàn)技術(shù)也進(jìn)行具體的指導(dǎo),它應(yīng)該涵蓋了從業(yè)務(wù)到實(shí)現(xiàn)技術(shù)的各個(gè)部分。

3.2 數(shù)據(jù)倉(cāng)庫(kù)建模階段劃分

我們前面介紹了數(shù)據(jù)倉(cāng)庫(kù)模型的幾個(gè)層次,下面我們講一下,針對(duì)這幾個(gè)層次的不同階段的數(shù)據(jù)建模的工作的主要內(nèi)容:

圖 4. 數(shù)據(jù)倉(cāng)庫(kù)建模階段劃分

數(shù)據(jù)倉(cāng)庫(kù)建模

從上圖我們可以清楚地看出,數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)建模大致分為四個(gè)階段:

1. 業(yè)務(wù)建模,這部分建模工作,主要包含以下幾個(gè)部分:

· 劃分整個(gè)單位的業(yè)務(wù),一般按照業(yè)務(wù)部門(mén)的劃分,進(jìn)行各個(gè)部分之間業(yè)務(wù)工作的界定,理清各業(yè)務(wù)部門(mén)之間的關(guān)系。

· 深入了解各個(gè)業(yè)務(wù)部門(mén)的內(nèi)具體業(yè)務(wù)流程并將其程序化。

· 提出修改和改進(jìn)業(yè)務(wù)部門(mén)工作流程的方法并程序化。

· 數(shù)據(jù)建模的范圍界定,整個(gè)數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目的目標(biāo)和階段劃分。

2. 領(lǐng)域概念建模,這部分得建模工作,主要包含以下幾個(gè)部分:

· 抽取關(guān)鍵業(yè)務(wù)概念,并將之抽象化。

· 將業(yè)務(wù)概念分組,按照業(yè)務(wù)主線(xiàn)聚合類(lèi)似的分組概念。

· 細(xì)化分組概念,理清分組概念內(nèi)的業(yè)務(wù)流程并抽象化。

· 理清分組概念之間的關(guān)聯(lián),形成完整的領(lǐng)域概念模型。

3. 邏輯建模,這部分的建模工作,主要包含以下幾個(gè)部分:

· 業(yè)務(wù)概念實(shí)體化,并考慮其具體的屬性

· 事件實(shí)體化,并考慮其屬性?xún)?nèi)容

· 說(shuō)明實(shí)體化,并考慮其屬性?xún)?nèi)容

4. 物理建模,這部分得建模工作,主要包含以下幾個(gè)部分:

· 針對(duì)特定物理化平臺(tái),做出相應(yīng)的技術(shù)調(diào)整

· 針對(duì)模型的性能考慮,對(duì)特定平臺(tái)作出相應(yīng)的調(diào)整

· 針對(duì)管理的需要,結(jié)合特定的平臺(tái),做出相應(yīng)的調(diào)整

· 生成最后的執(zhí)行腳本,并完善之。

從我們上面對(duì)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)建模階段的各個(gè)階段的劃分,我們能夠了解到整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建模的主要工作和工作量,希望能夠?qū)ξ覀冊(cè)趯?shí)際的項(xiàng)目建設(shè)能夠有所幫助。

3.4 數(shù)據(jù)倉(cāng)庫(kù)建模方法

大千世界,表面看五彩繽紛,實(shí)質(zhì)上,萬(wàn)物都遵循其自有的法則。數(shù)據(jù)倉(cāng)庫(kù)的建模方法同樣也有很多種,每一種建模方法其實(shí)代表了哲學(xué)上的一個(gè)觀點(diǎn),代表了一種歸納,概括世界的一種方法。目前業(yè)界較為流行的數(shù)據(jù)倉(cāng)庫(kù)的建模方法非常多,這里主要介紹范式建模法,維度建模法,實(shí)體建模法等幾種方法,每種方法其實(shí)從本質(zhì)上講就是從不同的角度看我們業(yè)務(wù)中的問(wèn)題,不管從技術(shù)層面還是業(yè)務(wù)層面,其實(shí)代表的是哲學(xué)上的一種世界觀。我們下面給大家詳細(xì)介紹一下這些建模方法。

1. 范式建模法(Third Normal Form,3NF)

范式建模法其實(shí)是我們?cè)跇?gòu)建數(shù)據(jù)模型常用的一個(gè)方法,該方法的主要由 Inmon 所提倡,主要解決關(guān)系型數(shù)據(jù)庫(kù)得數(shù)據(jù)存儲(chǔ),利用的一種技術(shù)層面上的方法。目前,我們?cè)陉P(guān)系型數(shù)據(jù)庫(kù)中的建模方法,大部分采用的是三范式建模法。

范式是數(shù)據(jù)庫(kù)邏輯模型設(shè)計(jì)的基本理論,一個(gè)關(guān)系模型可以從第一范式到第五范式進(jìn)行無(wú)損分解,這個(gè)過(guò)程也可稱(chēng)為規(guī)范化。在數(shù)據(jù)倉(cāng)庫(kù)的模型設(shè)計(jì)中目前一般采用第三范式,它有著嚴(yán)格的數(shù)學(xué)定義。從其表達(dá)的含義來(lái)看,一個(gè)符合第三范式的關(guān)系必須具有以下三個(gè)條件 :

· 每個(gè)屬性值唯一,不具有多義性 ;

· 每個(gè)非主屬性必須完全依賴(lài)于整個(gè)主鍵,而非主鍵的一部分 ;

· 每個(gè)非主屬性不能依賴(lài)于其他關(guān)系中的屬性,因?yàn)檫@樣的話(huà),這種屬性應(yīng)該歸到其他關(guān)系中去。

由于范式是基于整個(gè)關(guān)系型數(shù)據(jù)庫(kù)的理論基礎(chǔ)之上發(fā)展而來(lái)的,因此,本人在這里不多做介紹,有興趣的讀者可以通過(guò)閱讀相應(yīng)的材料來(lái)獲得這方面的知識(shí)。

根據(jù) Inmon 的觀點(diǎn),數(shù)據(jù)倉(cāng)庫(kù)模型得建設(shè)方法和業(yè)務(wù)系統(tǒng)的企業(yè)數(shù)據(jù)模型類(lèi)似。在業(yè)務(wù)系統(tǒng)中,企業(yè)數(shù)據(jù)模型決定了數(shù)據(jù)的來(lái)源,而企業(yè)數(shù)據(jù)模型也分為兩個(gè)層次,即主題域模型和邏輯模型。同樣,主題域模型可以看成是業(yè)務(wù)模型的概念模型,而邏輯模型則是域模型在關(guān)系型數(shù)據(jù)庫(kù)上的實(shí)例。

圖 5. 范式建模法

數(shù)據(jù)倉(cāng)庫(kù)建模

從業(yè)務(wù)數(shù)據(jù)模型轉(zhuǎn)向數(shù)據(jù)倉(cāng)庫(kù)模型時(shí),同樣也需要有數(shù)據(jù)倉(cāng)庫(kù)的域模型,即概念模型,同時(shí)也存在域模型的邏輯模型。這里,業(yè)務(wù)模型中的數(shù)據(jù)模型和數(shù)據(jù)倉(cāng)庫(kù)的模型稍微有一些不同。主要區(qū)別在于:

· 數(shù)據(jù)倉(cāng)庫(kù)的域模型應(yīng)該包含企業(yè)數(shù)據(jù)模型的域模型之間的關(guān)系,以及各主題域定義。數(shù)據(jù)倉(cāng)庫(kù)的域模型的概念應(yīng)該比業(yè)務(wù)系統(tǒng)的主題域模型范圍更加廣。

· 在數(shù)據(jù)倉(cāng)庫(kù)的邏輯模型需要從業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型中的邏輯模型中抽象實(shí)體,實(shí)體的屬性,實(shí)體的子類(lèi),以及實(shí)體的關(guān)系等。

以筆者的觀點(diǎn)來(lái)看,Inmon 的范式建模法的最大優(yōu)點(diǎn)就是從關(guān)系型數(shù)據(jù)庫(kù)的角度出發(fā),結(jié)合了業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型,能夠比較方便的實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)的建模。但其缺點(diǎn)也是明顯的,由于建模方法限定在關(guān)系型數(shù)據(jù)庫(kù)之上,在某些時(shí)候反而限制了整個(gè)數(shù)據(jù)倉(cāng)庫(kù)模型的靈活性,性能等,特別是考慮到數(shù)據(jù)倉(cāng)庫(kù)的底層數(shù)據(jù)向數(shù)據(jù)集市的數(shù)據(jù)進(jìn)行匯總時(shí),需要進(jìn)行一定的變通才能滿(mǎn)足相應(yīng)的需求。因此,筆者建議讀者們?cè)趯?shí)際的使用中,參考使用這一建模方式。

2. 維度建模法

維度建模法,Kimball 最先提出這一概念。其最簡(jiǎn)單的描述就是,按照事實(shí)表,維表來(lái)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)集市。這種方法的最被人廣泛知曉的名字就是星型模式(Star-schema)。

圖 6. 維度建模法

數(shù)據(jù)倉(cāng)庫(kù)建模

上圖的這個(gè)架構(gòu)中是典型的星型架構(gòu)。星型模式之所以廣泛被使用,在于針對(duì)各個(gè)維作了大量的預(yù)處理,如按照維進(jìn)行預(yù)先的統(tǒng)計(jì)、分類(lèi)、排序等。通過(guò)這些預(yù)處理,能夠極大的提升數(shù)據(jù)倉(cāng)庫(kù)的處理能力。特別是針對(duì) 3NF 的建模方法,星型模式在性能上占據(jù)明顯的優(yōu)勢(shì)。

同時(shí),維度建模法的另外一個(gè)優(yōu)點(diǎn)是,維度建模非常直觀,緊緊圍繞著業(yè)務(wù)模型,可以直觀的反映出業(yè)務(wù)模型中的業(yè)務(wù)問(wèn)題。不需要經(jīng)過(guò)特別的抽象處理,即可以完成維度建模。這一點(diǎn)也是維度建模的優(yōu)勢(shì)。

但是,維度建模法的缺點(diǎn)也是非常明顯的,由于在構(gòu)建星型模式之前需要進(jìn)行大量的數(shù)據(jù)預(yù)處理,因此會(huì)導(dǎo)致大量的數(shù)據(jù)處理工作。而且,當(dāng)業(yè)務(wù)發(fā)生變化,需要重新進(jìn)行維度的定義時(shí),往往需要重新進(jìn)行維度數(shù)據(jù)的預(yù)處理。而在這些與處理過(guò)程中,往往會(huì)導(dǎo)致大量的數(shù)據(jù)冗余。

另外一個(gè)維度建模法的缺點(diǎn)就是,如果只是依靠單純的維度建模,不能保證數(shù)據(jù)來(lái)源的一致性和準(zhǔn)確性,而且在數(shù)據(jù)倉(cāng)庫(kù)的底層,不是特別適用于維度建模的方法。

因此以筆者的觀點(diǎn)看,維度建模的領(lǐng)域主要適用與數(shù)據(jù)集市層,它的最大的作用其實(shí)是為了解決數(shù)據(jù)倉(cāng)庫(kù)建模中的性能問(wèn)題。維度建模很難能夠提供一個(gè)完整地描述真實(shí)業(yè)務(wù)實(shí)體之間的復(fù)雜關(guān)系的抽象方法。

3. 實(shí)體建模法

實(shí)體建模法并不是數(shù)據(jù)倉(cāng)庫(kù)建模中常見(jiàn)的一個(gè)方法,它來(lái)源于哲學(xué)的一個(gè)流派。從哲學(xué)的意義上說(shuō),客觀世界應(yīng)該是可以細(xì)分的,客觀世界應(yīng)該可以分成由一個(gè)個(gè)實(shí)體,以及實(shí)體與實(shí)體之間的關(guān)系組成。那么我們?cè)跀?shù)據(jù)倉(cāng)庫(kù)的建模過(guò)程中完全可以引入這個(gè)抽象的方法,將整個(gè)業(yè)務(wù)也可以劃分成一個(gè)個(gè)的實(shí)體,而每個(gè)實(shí)體之間的關(guān)系,以及針對(duì)這些關(guān)系的說(shuō)明就是我們數(shù)據(jù)建模需要做的工作。

雖然實(shí)體法粗看起來(lái)好像有一些抽象,其實(shí)理解起來(lái)很容易。即我們可以將任何一個(gè)業(yè)務(wù)過(guò)程劃分成 3 個(gè)部分,實(shí)體,事件和說(shuō)明,如下圖所示:

圖 7. 實(shí)體建模法

數(shù)據(jù)倉(cāng)庫(kù)建模

上圖表述的是一個(gè)抽象的含義,如果我們描述一個(gè)簡(jiǎn)單的事實(shí):“小明開(kāi)車(chē)去學(xué)校上學(xué)”。以這個(gè)業(yè)務(wù)事實(shí)為例,我們可以把“小明”,“學(xué)?!笨闯墒且粋€(gè)實(shí)體,“上學(xué)”描述的是一個(gè)業(yè)務(wù)過(guò)程,我們?cè)谶@里可以抽象為一個(gè)具體“事件”,而“開(kāi)車(chē)去”則可以看成是事件“上學(xué)”的一個(gè)說(shuō)明。

從上面的舉例我們可以了解,我們使用的抽象歸納方法其實(shí)很簡(jiǎn)單,任何業(yè)務(wù)可以看成 3 個(gè)部分:

· 實(shí)體,主要指領(lǐng)域模型中特定的概念主體,指發(fā)生業(yè)務(wù)關(guān)系的對(duì)象。

· 事件,主要指概念主體之間完成一次業(yè)務(wù)流程的過(guò)程,特指特定的業(yè)務(wù)過(guò)程。

· 說(shuō)明,主要是針對(duì)實(shí)體和事件的特殊說(shuō)明。

由于實(shí)體建模法,能夠很輕松的實(shí)現(xiàn)業(yè)務(wù)模型的劃分,因此,在業(yè)務(wù)建模階段和領(lǐng)域概念建模階段,實(shí)體建模法有著廣泛的應(yīng)用。從筆者的經(jīng)驗(yàn)來(lái)看,再?zèng)]有現(xiàn)成的行業(yè)模型的情況下,我們可以采用實(shí)體建模的方法,和客戶(hù)一起理清整個(gè)業(yè)務(wù)的模型,進(jìn)行領(lǐng)域概念模型的劃分,抽象出具體的業(yè)務(wù)概念,結(jié)合客戶(hù)的使用特點(diǎn),完全可以創(chuàng)建出一個(gè)符合自己需要的數(shù)據(jù)倉(cāng)庫(kù)模型來(lái)。

但是,實(shí)體建模法也有著自己先天的缺陷,由于實(shí)體說(shuō)明法只是一種抽象客觀世界的方法,因此,注定了該建模方法只能局限在業(yè)務(wù)建模和領(lǐng)域概念建模階段。因此,到了邏輯建模階段和物理建模階段,則是范式建模和維度建模發(fā)揮長(zhǎng)處的階段。

因此,筆者建議讀者在創(chuàng)建自己的數(shù)據(jù)倉(cāng)庫(kù)模型的時(shí)候,可以參考使用上述的三種數(shù)據(jù)倉(cāng)庫(kù)得建模方法,在各個(gè)不同階段采用不同的方法,從而能夠保證整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建模的質(zhì)量。


本文版權(quán)歸黑馬程序員云計(jì)算大數(shù)據(jù)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!


作者:黑馬程序員云計(jì)算大數(shù)據(jù)培訓(xùn)學(xué)院


首發(fā):http://cloud.itheima.com/


分享到:
在線(xiàn)咨詢(xún) 我要報(bào)名
和我們?cè)诰€(xiàn)交談!