微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 如何设计一个星型模式

我很困惑,我应该从哪里开始设计一个星型模式.

例如
我有数据库中的表如下:

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)

把这两个都放在同一个星型模式中并没有什么意义,因为它们既不共享维度也没有措施.

原文地址:https://www.jb51.cc/mssql/75467.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐