2009-06-02 62 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)

把那两个在同一个星型模式并没有太大的意义,因为它们既不份额尺寸或措施。