答案 0 :(得分:1)
总体而言,这是一个好的开始,并且可能会很好地工作,具体取决于您的分析需求。我看到的唯一严重问题是模型中缺少日历尺寸。至少两个:一个用于到期日,一个用于付款日。这些日期在事实表中应为FK。
重要的是,我还考虑将一些数字属性从“贷款”维度移至事实表。例如,预付款金额可能属于“客户付款”表。为了区分不同类型的付款,我将添加一个“付款类型”维,您可以在其中具有“预付款”,“分期付款”,“预付款”等值。这种设计的好处之一是总结所有相关的客户付款都很容易。
有时很难确定数字值应该是事实表或维度的一部分,还是两者都应。一个好的决策规则是考虑您打算如何使用该数字。如果您需要它来进行计算(即“显示所有首付款”,或“计算客户已支付给贷款的总金额,包括首付款”)或时间序列图,则它属于事实表。如果您需要使用它进行过滤(即“按客户的首付金额显示客户付款”),则它应该是尺寸属性。
就您而言,我认为您不太可能按首付金额,利率或特定比率进行过滤。因此,这些数字属于事实表-它们是定量事实,而不是过滤器。
设计人员通常不对尺寸进行保留,而是对其进行分组,并从这些组中创建尺寸属性。例如,您可以创建一个属性“首付金额”,其值为“ 0-20%”,“ 20-50%”,“> 50%”。这样的属性对于分类分析将是有用的。另一方面,特定的首付金额应属于事实表。
为什么重要:如果在错误的位置建模数字,您会发现自己正在编写越来越复杂的代码来进行计算。正确的设计会导致简单而优雅的查询。因此,如果在某个时候发现查询变得过于复杂,则通常是一个事实,即事实被错误地建模为属性。