2009-06-02 68 views
10

我很困惑,應該從哪裏開始設計星型模式。如何設計星型模式

例如 我有在數據庫表中,如下所示:

Branch(branchNo, bStreetAddress, bCity) 
LoanManager(empNo, empName, phone, branchNo) 
Customer(custNo, custName, profession, streetAddress, city, state) 
Account(accNo, accType, balance, accDate, custNo) 
LoanContract(contractNo, loanType, amount, loanDate, empNo, custNo) 

欲一個數據倉庫設計來分析負載 如:貸款

  1. 總量
  2. 對於貸款合同超過10筆的貸款類型,貸款類型和合同數量

創建星型模式時,我該從哪裏開始?

對於我的理解,所有的星型模式必須有一箇中心,中心事實表,包含了「辦法」和「關係到其他事實表」。

那麼,是不是說,設計的星型模式的時候,我們總是從中心 確認哪些措施第一次啓動?然後選擇適當的關係到另一個事實表?

但我仍然有一個問題,我們應該選擇做措施? 當選擇測量時,我應該問自己什麼問題?

回答

8

星型模式的設計總是由客戶的業務需求的推動下。有什麼問題要問?答案是多麼細緻?

在您例如,有趣的問題可能是「由分公司或LoanManager合同數」或「由分公司或LoanManager託管貸款的總和」。在這種情況下,BranchLoanManager將成爲您的尺寸Count(LoanContract)Sum(LoanContract.amount)將成爲您的措施。常見的附加維度是時間,通常是weekquarter

爲回答這些問題看起來是這樣的模式:

DimBranch (branchNo) 
DimLoanManager (empNo) 
DimQuarter (year, qNo) -- qNo in (1,2,3,4) 
DimWeek (year, weekNo) -- weekNo in (0..53), depending on business rules 

Measures (branchNo, empNo, year, qNo, weekNo, numContracts, sumLoans) 

因爲你在你的問題已經提出的業務問題,維度和度量會是這樣:

  1. 尺寸:year ,尺寸:Sum(LoanContract.amount)
  2. 尺寸:loanType,尺寸:Count(LoanContract)

把那兩個在同一個星型模式並沒有太大的意義,因爲它們既不份額尺寸或措施。