首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料倉庫建模四大流派深度解析

     編輯:關於SqlServer

四大建模方法論比較

流派代表人物核心思想適用層級優點缺點
關係式三範式 (3NF)Codd / Inmon消除冗餘、正規化至 3NFODS / 企業資料倉庫核心層資料一致性高、單一事實來源、支援任意查詢查詢需多表 JOIN、效能較差、開發週期長
Inmon 企業資料倉庫 (EDW)Bill Inmon自上而下、主題導向、整合、非揮發、時變;分三層:ER層→資料項集層→物理層企業級 EDW 核心跨系統整合、歷史追蹤、單一版本真相建模複雜、上線慢、需強治理
Kimball 維度建模Ralph Kimball自下而上、業務流程導向、星型/雪花結構、事實表+維度表資料集市 / 部門級 / BI 報表層查詢快、易理解、開發快、適合 OLAP資料冗餘、ETL 複雜、跨主題一致性難
靈活暫存區建模實務派不拘範式、滿足 ETL 需求為主、多為暫存表、不對外公開Staging Area / Data Lake 原始區彈性高、載入快、支援非結構化無標準、難維護、不可直接供報表

Inmon 三層架構詳解

  1. 實體關係層 (ER Layer):企業級邏輯模型,高度正規化 (3NF),整合所有業務系統實體與關係,獨立於物理實作。
  2. 資料項集層 (Data Item Set Layer):依資料產生頻率、存取頻率、生命週期分組(如交易類、主資料類、參考類),物理化為資料項集,引入替代鍵。
  3. 物理層:資料項集在特定 DBMS 上的實作(分區、索引、壓縮、壓縮)。

Kimball 星型結構核心


-- 事實表 (窄、長、數值多)
CREATE TABLE FactSales (
    DateKey      INT NOT NULL REFERENCES DimDate(DateKey),
    ProductKey   INT NOT NULL REFERENCES DimProduct(ProductKey),
    StoreKey     INT NOT NULL REFERENCES DimStore(StoreKey),
    CustomerKey  INT NOT NULL REFERENCES DimCustomer(CustomerKey),
    SalesAmount  MONEY NOT NULL,
    Quantity     INT NOT NULL,
    CONSTRAINT PK_FactSales PRIMARY KEY (DateKey, ProductKey, StoreKey, CustomerKey)
);

-- 維度表 (寬、扁平、描述性屬性多)
CREATE TABLE DimProduct (
    ProductKey   INT IDENTITY PRIMARY KEY,
    ProductCode  VARCHAR(20) NOT NULL,
    ProductName  NVARCHAR(100),
    Category     NVARCHAR(50),
    SubCategory  NVARCHAR(50),
    Brand        NVARCHAR(50),
    Color        NVARCHAR(20),
    Size         NVARCHAR(20),
    UnitCost     MONEY,
    UnitPrice    MONEY,
    SCD_Type     TINYINT DEFAULT 1  -- 緩慢變化維度類型
);

雪花結構

將維度進一步正規化(如 DimProduct 拆出 DimCategory、DimBrand),減少冗餘但增加 JOIN,查詢效能通常下降,除非維度極大且頻繁更新 才考慮。

SCD (緩慢變化維度) 三大類型

類型處理方式適用場景
Type 1 覆蓋直接 UPDATE,不保留歷史錯誤修正、無歷史需求屬性
Type 2 新增列INSERT 新列,加 StartDate/EndDate 或 IsCurrent需完整歷史(如價格、地址變更)
Type 3 新增欄位加 Prev_Value 欄位,只保留上一版僅需前後對比的少數屬性

實務建議:分層架構融合四大流派


Source Systems
      │
      ▼
┌─────────────────────┐
│  Staging Area       │  ← 靈活建模:原始落地、不轉型、支援全量/增量
│  (Raw / ODS)        │
└─────────┬───────────┘
          │ ETL (清洗、合併、代理鍵產生)
          ▼
┌─────────────────────┐
│  Enterprise DW      │  ← Inmon 3NF:核心主題整合、單一真相、歷史保留
│  (Core 3NF)         │
└─────────┬───────────┘
          │ 依業務流程建模、去正規化
          ▼
┌─────────────────────┐
│  Data Marts         │  ← Kimball 星型:BI 報表、OLAP、自助分析
│  (Star Schema)      │
└─────────────────────┘

選型決策指南

  • 企業級、跨系統整合、監管要求高 → Inmon 3NF 核心層 + Kimball 資料集市。
  • 部門級、快速上線、報表導向 → 直接 Kimball 星型。
  • 大數據、非結構化、探索性分析 → Data Lake + Schema-on-Read,暫存區靈活建模。
  • 既有系統重構 → 漸進式:先建 Staging,再 3NF 核心,最後依需求產出星型集市。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved