我需要创建一个管理团队的数据库。我摔跤的2张桌子是见面桌和活动表。
这是基本流程
A队可以创建一个新的赛道会议,它将在会议桌上添加1行,其中会议的元数据如日期,位置也必须包含事件列表。
活动是在会议期间可以参与竞赛的大约500个可能事件的表格。诸如距离,事件类型,男/女,年龄等事情
我希望在为用户生成会议期间能够选择满足哪些事件。
因此,请创建一个新的会面,完整的元数据,并从所有可能事件列表中选择(针对Ex)30个事件。
Soooo我的问题是哪种表结构最能支持它。我在考虑我的见面表中的一个列,其中包含一系列事件。但有没有更好的方法来解决这个问题。我正在使用postgres和rails
答案 0 :(得分:0)
这听起来像是Rails has_many :through association的完美用法。您应该有一个meet_events
联接表。 meet_events
表中将包含一个外键(belongs_to)meet_id
列,该列指向与其关联的会话,并且其中的event_id
列指向其中一个可用事件。您的Meet
模型会使用has_many :meet_events
和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
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.meets
是事件3时调用event
,它会告诉您两个{{1} }}和Meet 1
在其中包含该事件。