gpt4 book ai didi

sql - 如何设计星型模式

转载 作者:行者123 更新时间:2023-12-04 02:13:55 29 4
gpt4 key购买 nike

我很困惑我应该从哪里开始设计星型模式。

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

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个以上贷款契约(Contract)的贷款类型,贷款类型和契约(Contract)数量

  • 创建星型模式时,我应该从哪里开始?

    据我了解,所有星型模式都必须有一个中心,并且中心事实表包含“度量”和“与其他事实表的关系”。

    那么,是不是在设计星型模式时,我们总是从中心开始,
    首先确认措施是什么?然后选择与另一个事实表的适当关系?

    但是我还有一个问题,我们应该选择什么作为Measures?
    在选择措施时,我应该问自己什么问题?

    最佳答案

    星型模式的设计始终由 驱动。客户的业务需求 .问的问题是什么?答案应该有多细粒度?

    在您的示例中,有趣的问题可能是“分行或 LoanManager 的契约(Contract)数量”或“分行或 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 )

    对于您在问题中已经提出的业务问题,维度和度量如下:
  • 尺寸:year ,测量:Sum(LoanContract.amount)
  • 尺寸:loanType ,测量:Count(LoanContract)

  • 将这两个放入同一个星型模式没有多大意义,因为它们既不共享维度也不共享度量。

    关于sql - 如何设计星型模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/938318/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com