我对用于记录足球(足球)比赛的铁路应用数据库的设计有一些疑问。统计
我有三种模式:
有以下关系:
这是我的模特'结构:
class Match < ActiveRecord::Base
has_many :home_goals,
class_name: 'Goal',
foreign_key: 'home_match_id'
has_many :home_scorers,
class_name: 'Player',
foreign_key: 'home_scorer_id',
through: :home_goals
has_many :visitor_goals,
class_name: 'Goal',
foreign_key: 'visitor_match_id'
has_many :visitor_scorers,
class_name: 'Player',
foreign_key: 'visitor_scorer_id',
through: :visitor_goals
...
end
class Goal < ActiveRecord::Base
belongs_to :home_match,
class: 'Match',
foreign_key: 'home_match_id'
belongs_to :visitor_match,
class: 'Match',
foreign_key: 'visitor_match_id'
belongs_to :player
end
class Player < ActiveRecord::Base
has_many :goals
has_many :home_matches,
class_name: 'Match',
foreign_key: 'home_scorer_id',
through: :goals
has_many :visitor_matches,
class_name: 'Match',
foreign_key: 'visitor_scorer_id',
through: :goals
...
end
我可以嵌套&#34; has_many_through&#34;这种关系?
不寻常的是,一名球员可以在一场比赛中得分超过一个。因此,可能存在多个具有相同玩家和相同匹配的目标。 这可能会导致错误吗?
我的终极目标&#34;是能够计算所有比赛中球员得分的数量,获得每场比赛的主场球员,主场球员,观众球员和访客目标。有没有更好的方法来组织数据库?
答案 0 :(得分:0)
看起来你需要像Polymorphic Association这样的东西。这基本上允许模型具有多个belongs_to
rails文档具有良好的信息:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
有了这个,目标可以属于玩家和比赛,并且可以让玩家has_many
和匹配has_many
更加干净。