我很困惑,我应该从哪里开始设计一个星型模式.
例如
我有数据库中的表如下:
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)
我想设计一个数据仓库来分析负载
如 :
> 2008年贷款总额.
>对于贷款类型超过10种,贷款类型和合同数量
创建星型模式时,应该从哪里开始?
对于我的理解,所有的星型模式都必须有一个中心,而中心事实表包含“度量”和“与其他事实表的关系”.
那么,是在设计星型模式时,我们总是从中心开始,
确定首先是什么措施?然后选择与另一个事实表的正确关系?
但我还有另一个问题,我们应该选择做“措施”?
在选择措施时,我应该问一些问题?
解决方法
星型模式的设计始终由客户的业务需求驱动.问题是什么?答案应该如何细微?
在您的例子中,有趣的问题可能是“分行或贷款管理人员的合同数量”或“分行或贷款管理人员的贷款总额”.在这种情况下,Branch和LoanManager将成为您的维度,而Count(LoanContract)和Sum(LoanContract.amount)将成为您的尺寸.常见的附加维度是时间,通常是周或季度.
回答这些问题的模式可能如下所示:
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,year,qNo,weekNo,numContracts,sumLoans )
对于您在问题上已经提出的业务问题,维度和措施将是如此:
> dimension:year,measure:Sum(LoanContract.amount)
> dimension:loanType,measure:Count(LoanContract)
把这两个都放在同一个星型模式中并没有什么意义,因为它们既不共享维度也没有措施.