1

我需要创建一个用于管理团队的数据库。我摔跤的两张桌子是见面桌和活动桌。

这是基本流程

团队 A 可以创建一个新的赛道比赛,该比赛将在比赛表中添加 1 行,其中包含比赛的元数据,例如日期、地点,它还必须包含一个事件列表。

Events 是一个包含大约 500 个可能的事件的表格,可以在会议期间进行竞争。诸如距离、事件类型、男性/女性、年龄等

我希望在生成会议期间,用户能够选择会议将有哪些事件。

因此,创建一个新的聚会,完整的元数据,并从所有可能的事件列表中选择(对于 Ex)30 个事件。

Soooo 我的问题是哪种表结构最能支持这一点。我正在考虑我的会议表中的一列,其中包含一系列事件。?但是有没有更好的方法来处理它。我正在使用 postgres 和 rails

4

1 回答 1

0

这听起来像是 Rails has_many :through 关联的完美使用。你应该有一个meet_events连接表。该meet_events表中将有一个外键 (belongs_to)meet_id列,该列指向与其关联的会议,其中一个event_id列指向可用事件之一。您的Meet模型将使用has_many :meet_eventsand has_many :events, :through => :meet_events。这将允许您获取与此会议关联的事件对象。

MeetEvent模型只有两个belongs_to. 一个用于meet,一个用于event

这是一组简单的模型:

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 1Event 3在其中的建模。Meet 2Event 2Event 3。这也为您提供了询问特定事件的好处Event。例如,调用事件 3 的event.meets时间event,它会告诉您两者Meet 1Meet 2在其中包含该事件。

于 2013-01-13T18:50:50.233 回答