為什麼要維度建模

2022-05-09 03:18:10 字數 1650 閱讀 4441

凡是建設資料倉儲,一定會提到維度建模方法。這一方法是kimball最先提出的,其最簡單的描述就是,按照事實表、維度表來構建資料倉儲、資料集市。在維度建模方法體系中,維度是描述事實的角度,如日期、商品、位址等,事實是要度量的指標,如使用者數、銷售額等。按照一般書籍的介紹,維度建模還會分為星型模型、雪花模型等,各有優缺點,但很少直接回答乙個問題,也就是資料倉儲為什麼要採用維度建模

這個問題的基本判斷在於,資料是否要開放給業務人員使用?採用維度建模構建出來的資料庫結構表更加符合普通人的直覺、易於被普通人所理解,從而有利於資料的推廣使用。下面以超市收銀小票為例說明常規的三正規化模型和維度模型。

三正規化的資料模型示意如下:

維度模型示意如下:

以上兩個模型的最小資料粒度都是小票專案,可以容易看出來,維度模型是將關係模型的層次結構展開平鋪而成。從上面的這個範例可以引出採用維度建模方法的基本理由,就是:

資料結構簡單。在決定是否要採用維度建模之前,必須回答乙個問題,「資料模型是否要開放給業務人員直接使用」,如果答案肯定,則應該採用維度建模的方法。維度模型這個概念有點學術化,但究其本質而言,是將層次化的資料結構展開為單一層次,有點類似於將乙個業務過程的資料彙總到乙個excel的sheet頁中。

不過維度建模的代價也很明顯,就是其靈活性較差,資料冗餘較多,所以,在很多書中提出了乙個折中的辦法,即「雪花模型」,同時還煞有介事的對比了雪花模型與星型模型(即上面的示例)的優缺點,讓很多初學者心中飄來了乙個揮之不去的疑問,「既然雪花模型既有關係模型的優點,還有維度模型的優點,為什麼還要存在星型模型呢」?。竊以為,這完全是多此一舉的做法,維度建模追求的是使用簡單,多增加一級關聯,增加的使用複雜度就會增加不止一點,會給多數不懂技術的業務人員帶來極大的障礙,是一種捨本逐末的做法

基於這種考慮,在建設資料倉儲的過程中,明細層和集市層分別採用不同的建模方法,也就是:

明細層採用傳統的三正規化關係模型。這一層次的資料模型要將業務過程描述清楚,將源資料(即業務系統)中隱含的、有歧義的概念進行清晰化,如活躍使用者、vip使用者等。該層次的資料模型追求的目標是靈活地表達業務過程,要保證資料一致性、唯一性、正確性,以盡量少的代價與源資料保持資料同步,同時該層次的資料模型不建議開給不懂技術的業務人員直接使用,因此,採用關係型的三正規化模型是最佳的選擇。

集市層採用維度模型。集市層是按照業務主題、分主題構建出來的、面向特定部門或人員的資料集合,該層次的資料模型會開放給業務人員使用,進行資料探勘及業務分析。由於業務員多數不懂資料庫技術,缺少將業務需求轉換為關係型資料結構的邏輯思維,更寫不出複雜的sql語句,因此,越簡單的資料模型,越能被他們所接受,因此,這個層次所構建出來的資料模型,要按照業務過程進行組織,每個事實表代表乙個獨立的業務過程,事實表之間不存在直接的依賴關係,這樣業務人員可以很容易地將分析需求對應到事實表上,利用工具或手工寫出簡單的sql,將統計資料提取出來進行分析。

以上,就是資料倉儲採用維度建模和關係建模的基本判斷。

UML 建模是什麼 為什麼要建模?

首先在我們學習建模之前我覺得應該了解建模是什麼?為什麼要建模?就好比如若你自己要建造一座小房子,首先得先給要建造的房子設計一張草圖甚至是藍圖 若要建造一座大廈,首先要做的肯定不是先去所需買材料,而是需要對建築物的大小,形狀和樣式做乙個規劃,做出相應的圖紙和模型。可能在規劃中突然有了更好的想法,還可以...

我的建模可以複製 12(為什麼要業務建模)

對很多企業而言,有乙個統合企業各部門的資訊系統的心願似乎已經成了一種奢望。企業中或多或少都會有一些應用系統在輔助企業的自動化運作,當企業資訊主管希望能夠對目前的資訊系統進行整合,能夠配合企業的發展的時候,他們失望了。大多數的應用缺乏乙個統一的介面,難以進行整合。在我們進行專案開發的銀行中,我們也同樣...

我們為什麼要學習3D建模?

3d遊 戲建模所 需要的軟體,會有哪些呢?基本上可以分為三類 美術類 autodesk 3ds max autodesk maya zbrush cinema 4d blender photoshop 程式類 udk unity3d或者某些3d遊戲引擎的sdk 乙個優秀模型製作前要做好哪幾項準備工作...