gpt4 book ai didi

ruby-on-rails - 动态数据的数据库设计

转载 作者:行者123 更新时间:2023-11-29 14:01:29 25 4
gpt4 key购买 nike

我需要创建一个数据库来管理团队。我摔跤的 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_eventshas_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 1Event 3 的建模。 Meet 2Event 2Event 3。这也给了你询问一个特定的 Event 满足它的好处。例如,当 event 是 Event 时调用 event.meets 3,它会告诉你 Meet 1Meet 2 都有那个事件。

关于ruby-on-rails - 动态数据的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14306865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com