繁体   English   中英

对照表…尺寸还是事实?

[英]Cross-reference table…dimension or fact?

初学者的尺寸建模问题:

您如何为正式“业务流程”之外的维度之间的关系建模? 例如,假设您正在建立一个幻想棒球联盟。 一些明显的方面是“团队”和“球员”,而一个示例事实是球员进行击球的结果。 我感到困惑的是如何简单地跟踪哪个球员在哪个团队中。

在“第三范式”中,我将拥有一个包含团队和玩家FK的交叉引用表,以及与两者的组合特别相关的任何其他字段(征聘日期,替补球员指示器等)。 星型模式会与众不同吗? 如果不是,那么此表是否被视为事实表,没有数字属性?

令我感到困惑的部分是,这个交叉引用表从来没有单独使用过。 仅当加入其他事实表时,才有意义,以获得与另一个事实/过程相关联的团队中的球员列表。 这使得它更像是一个维度,而不是事实。

在尺寸建模中,必须选择要建模的过程。 如果团队成员关系是您模型的第二位,则您可以忽略该关系,并在该球员为球队打球时知道该球员属于该团队。

当然,这排除了从未击球的球员。

如果要考虑这种关系(多对多关系),显而易见的解决方案是另一个事实表。 事实表甚至可能是事实(当您没有更多信息时,但在这种情况下,玩家的薪水将是显而易见的重要事实)。

另一种选择是为播放器使用2型SCD。 这是一种随时间存储针对玩家的属性更改的方法。

因此,对于一个球员,您可能有四个维度记录,因为该球员在四支球队之间移动。 尺寸记录具有开始日期和结束日期,因此,如果玩家在1月份移动了团队并且直到2月份才开始比赛,该信息仍会存储。

您可以通过这种方式跟踪任何玩家属性,例如伤害等。

这是一种无需特殊事实即可跟踪“缓慢”变化的方法。

如果您确实需要某种历史状态报告,则只需将玩家维度加入日期维度即可。

看一下本文中的Type II:

http://en.wikipedia.org/wiki/Slowly_changing_dimension

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM