记录运动队的比赛 - 多对多关系?

Ant*_*tts 5 database-design many-to-many ruby-on-rails

我是Ruby on Rails的新手,但我过去创建了一些简单的应用程序.现在我正在做一些更复杂的事情,我对数据库设计感到困惑.

我正在创建一个体育联盟经理,我需要一些关于团队和游戏之间的关系如何建模以指出我正确方向的建议.每次在两支球队之间进行比赛时,都会记录比赛.我希望能够做到以下几点:

1)在特定团队的页面上,我想显示团队参与的比赛列表.

2)我想记录每支球队在联赛积分榜上的胜负,失误和关系.

在#1点,我认为这将是一个多对多关系,也就是说,一个团队有很多匹配,一个匹配有很多团队(好吧,实际上只有两个).我有点难过的一点是如何以及在何处存储每个团队的统计数据.我在哪里保持胜负/关系?他们是Team表的一部分吗?如果是这样,如果我有一个团队排名的页面显示每个团队有失/关系,我将如何获得该信息?

cor*_*ard 4

这还没有真正完成,但也许这会帮助您或其他人开始工作。

\n\n

我专注于如何构建团队和比赛之间的关系。我相信,至少部分解决方案在于使用多态关联,其中一部分可能是自连接。我发誓它就在我面前,但我却没有看到它。

\n\n

在这里采取一些小步骤,假设您的 Matches 表有一个这样的表\xe2\x80\xa6

\n\n
  id   |   home_team_id  |  away_team_id  |  home_team_score  |  away_team_score\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以通过以下关联在模型中进行设置:

\n\n
class Match\n  belongs_to :home_team, :class_name => :team\n  belongs_to :away_team, :class_name => :team\nend\n\nclass Team\n  has_many :home_matches, :foreign_key => :home_team_id, :class_name => :matches\n  has_many :away_matches, :foreign_key => :away_team_id, :class_name => :matches\nend\n
Run Code Online (Sandbox Code Playgroud)\n\n

明显的问题是,实际上应该只有一种关系,但却存在两种关系。这就是为什么我认为多态关联可以有所帮助,但这有点令人费解。

\n\n

请参阅有关多态关联的 Rails 指南,看看这是否可以帮助您了解我无法了解的内容。

\n