有三组实体:Players
,Teams
和Games
。团队可能由一个或两个Players
组成,并为每个特定Game
自愿组建,即
玩家A,B,C,D可以形成11 Teams
,因为Team
AB与Team
BA相同。
据说Teams
可能只包含一组独特的参与者 - BA是AB的重复。
形成Teams
和Games
关系最明显的方式是尽可能多的,但这是一种方法吗?真正的问题是如何以强大和可扩展的方式对这些限制进行建模,因此他们可以处理,比如说,一个不仅仅有1-2名球员的球队,而且还有一支1-20名球员没有(很多)增强的球队?
这是一个我想到的抽象界面 -
Team.find_or_create_by(player_ids: [p1.id, p2.id]) # find p1 and p2 team
Team.find_by(player_id: p1) # find all teams that p1 has participated in
P.S。我不认为问题标题真的很好,可能这是众所周知的问题,它有一个确定的名称,所以如果有人能指出它我会很高兴交换标题。