1

チームを管理するためのデータベースを作成する必要があります。格闘している2つのテーブルは、ミートテーブルとイベントテーブルです。

これが基本的な流れです

チームAは、新しいトラックミートを作成できます。このミートテーブルには、日付、場所などのミートのメタデータを含む1行が追加され、イベントのリストも含まれている必要があります。

イベントは、会議中に競うことができる約500の可能なイベントの表です。距離、イベントの種類、男性/女性、年齢など

ミーティングの生成中に、ユーザーがミーティングで開催するイベントを選択できるようにしたいと思います。

したがって、新しい会議を作成し、メタデータを完成させ、すべての可能なイベントのリストから(例として)30のイベントを選択します。

すっごく私の質問は、どのテーブル構造がそれを最もよくサポートするかということです。一連のイベントを保持するミートテーブルの列について考えていました。しかし、それを処理するためのより良い方法はありますか?postgresとrailsを使用しています

4

1 に答える 1

0

これは、Rails のhas_many :through 関連付けの完璧な使い方のように思えます。meet_events結合テーブルが必要です。テーブルには、関連付けられている会議を指すmeet_events外部キー (belongs_to)列と、利用可能なイベントの 1 つを指す列があります。モデルは と を使用します。これにより、この大会に関連付けられたイベント オブジェクトを取得できます。meet_idevent_idMeethas_many :meet_eventshas_many :events, :through => :meet_events

このMeetEventモデルには単純に 2 つの がありbelongs_toます。1 つは 用、meetもう 1 つは 用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 3Meet 2とがEvent 2ありEvent 3ます。これはまた、特定のものに何が入っているかを尋ねるという利点もありますEvent。たとえば、event.meetsいつeventイベント 3 であるかを呼び出すMeet 1Meet 2、そのイベントが含まれていることがわかります。

于 2013-01-13T18:50:50.233 に答える