我遇到了一个设计问题;在一个项目中,我有三个表:联盟、球员和一个关联表LeagueToPlayers,它将前两者之间的多个连接映射到多个连接(因为一个球员可以同时在两个或更多联盟中比赛):
League Players LeagueToPlayers
Id Name Id Alias LeagueId PlayerId
=-------- ------------ ----------------
1 League A 1 Longcat 1 1
2 League B 2 Leeroy Jenkins 1 2
3 League C 3 xyz 2 1
4 League D 4 qw3rty 2 3
5 Myrkgrav 3 2
4 1
(...) (...) 4 3
5 1
(...)我的问题是,我现在必须将玩家映射到玩家关系。从我的角度来看,可以做两件事:要么在Player表中引入一个额外的字段(映射另一个PlayerId) -这是一个非常糟糕的选择,因为这将是一个1..*关系-或者创建另一个关联表(不是很喜欢这个想法,但我猜没有其他方法)。
我想听听你对这个问题的看法...有什么好主意吗?
向您致敬,哈尔
编辑:正如评论中提到的,这是一个比喻。"Player“表中的对象类型变化很大(想想200种不同的类型),它们确实必须以这种方式映射。玩家表中的对象可以彼此引用,因为它们最终参与了相同的过程,并且同样,它们彼此相关。此连接绝对是1..*
发布于 2009-06-14 18:28:36
如果我必须在你假设离开后维护你的数据库,我会祈祷你使用另一个从玩家到玩家的关联表-为了良好的规范化实践,一致性和易于维护。
这个解决方案也更灵活,如果您出于任何原因需要扩展模型,它可能会让您处于更好的位置。
发布于 2009-06-14 18:09:07
如果它是1:*,则将它放在*侧(例如。层次结构的子行上的parent_id )。
如果是**,则使用另一个相关表。
https://stackoverflow.com/questions/993356
复制相似问题