星狀結構是資料倉庫最經典的模型,核心在於 事實表 與 維度表 的清晰分工。
[Dim_Time] [Dim_Customer] [Dim_Product]
| | |
v v v
+-----------------------------------------------+
| Fact_Sales |
| TimeKey | CustKey | ProdKey | Amt | Qty | ...|
+-----------------------------------------------+
^ ^ ^
| | |
[Dim_Store] [Dim_Promotion] [Dim_Geography]
CREATE TABLE Fact_Sales (
DateKey INT NOT NULL REFERENCES Dim_Date(DateKey),
StoreKey INT NOT NULL REFERENCES Dim_Store(StoreKey),
ProductKey INT NOT NULL REFERENCES Dim_Product(ProductKey),
CustomerKey INT NOT NULL REFERENCES Dim_Customer(CustomerKey),
PromotionKey INT NOT NULL REFERENCES Dim_Promotion(PromotionKey),
SalesAmount MONEY NOT NULL,
SalesQty INT NOT NULL,
CostAmount MONEY NOT NULL,
CONSTRAINT PK_Fact_Sales PRIMARY KEY (DateKey, StoreKey, ProductKey, CustomerKey, PromotionKey)
);
「事實表存數字,維度表存描述」是星狀建模的黃金法則。嚴守此分工,配合代理鍵與層級設計,即可構建高效能、易擴展、業務語意清晰的資料倉庫基礎模型。