我需要创建一个数据库来管理团队。我摔跤的 2 个表是 session 表和事件表。
这是基本流程
A 队可以创建一个新的田径比赛,这将在比赛表中添加 1 行,其中包含比赛的元数据,例如日期、地点,它还必须包括一个事件列表。
Events 是一个包含大约 500 个可能的事件的表格,这些事件可以在 session 期间参加。距离、事件类型、男性/女性、年龄等事物
我希望在为用户生成 session 期间能够选择 session 将有哪些事件。
因此创建一个新的 session ,完成元数据,并从所有可能事件的列表中选择(对于 Ex)30 个事件。
太棒了,我的问题是什么表结构最能支持它。我正在考虑我的 session 表中的一列,其中包含一系列事件。?但是有更好的方法来处理吗?我正在使用 postgres 和 rails
最佳答案
这听起来像是对 Rails 的完美使用 has_many :through association .您应该有一个 meet_events
连接表。 meet_events
表将有一个外键 (belongs_to) meet_id
列,它指向与之关联的 session ,以及一个 event_id
列它指向可用事件之一。您的 Meet
模型将使用 has_many :meet_events
和 has_many :events, :through => :meet_events
。这将允许您获取与此 session 关联的事件对象。
MeetEvent
模型只有两个 belongs_to
。一份用于聚会
,一份用于事件
。
这是一组简单的模型:
class Meet < ActiveRecord::Base
has_many :meet_events
has_many :events, :through => :meet_events
end
class Event < ActiveRecord::Base
has_many :meet_events
has_many :meets, :through => :meet_events
end
class MeetEvent < ActiveRecord::Base
belongs_to :meet
belongs_to :event
end
这是一些数据及其建模内容的示例:
会见
id | name
------------------
1 | Meet 1
2 | Meet 2
事件
id | name
------------------
1 | Event 1
2 | Event 2
3 | Event 3
meet_events
id | meet_id | event_id
----------------------------
1 | 1 | 1
2 | 1 | 3
3 | 2 | 2
4 | 2 | 3
这基本上是对 Meet 1
中包含 Event 1
和 Event 3
的建模。 Meet 2
有Event 2
和Event 3
。这也给了你询问一个特定的 Event
满足它的好处。例如,当 event
是 Event 时调用 event.meets
3,它会告诉你 Meet 1
和 Meet 2
都有那个事件。
关于ruby-on-rails - 动态数据的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14306865/