星型模式建模 - 多对多

Posted

技术标签:

【中文标题】星型模式建模 - 多对多【英文标题】:Star schema modeling - many-to-many 【发布时间】:2011-09-29 20:52:12 【问题描述】:

当我学习这个范式时,我正在基于 NFL 统计数据构建一个数据仓库以用于教育目的 - 我有以下建模问题

球员可以在不同的年份为不同的球队效力,同样的教练也可以在不同的职业生涯中执教不同的球队;球员也可能在不同年份扮演不同的位置(罕见但可能)

模拟不同年份球员、教练和球队之间分配的最佳方式是什么?

我是否会将不同年份的花名册信息存储在一个维度中?例如 DimTeamRoster 将有一个 TimeKey、TeamKey 和 CoachKey(因为一个团队只能有一个主教练)和一个 FactTeamRoster 和一个 TeamRosterKey、PlayerKey、Positionkey

或者我会有一个 FactTeamRoster,它有一个 TimeKey、TeamKey、PlayerKey、PositionKey?但是这种方法是否有意义,因为这个事实表不会真正存储任何度量,它只是存储那一年的分配

还有哪些其他可能的解决方案以及每种方法的优缺点/正确性?

【问题讨论】:

【参考方案1】:

对于初学者来说,我认为可以这样做。

dimRole 可能看起来像

RoleKey     RoleName        RoleGroup
---------------------------------------
  1         quarterback      player
  2         tackle           player
  3         head coach       coach
  4         assistant coach  coach

【讨论】:

不错,干净。出于兴趣,您使用什么工具来创建图表? 很好的开始,非常接近我的设想 - 我唯一的问题是,将其存储为事实表是否有意义,因为该事实表实际上并不存储任何度量,只是存储作业? @manning18 是的,看到这个***.com/questions/6788008/…

以上是关于星型模式建模 - 多对多的主要内容,如果未能解决你的问题,请参考以下文章

星型模式设计:当源系统多对一(N:1)时,使用 2 维还是 1 一致维?

多对多维度模型

实体框架使用 Codefirst、通用存储库、工作单元模式保存多对多关系

mybatis 一对一对多多对多对多

多对多的数据库建模问题[重复]

如何建模多对多关系?