2012-04-22 8 views
0

私はデータベーススキーマを考え出しましたが、Rails ORMよりも古いSQLの習慣の影響を受けていると感じています。ここに私が開発したスキーマがあります。 enter image description hereクエリを簡単にするためのモデルアソシエーションの作成

現在のところ、上記の画像のすべてのテーブルのモデルを作成しましたが、関連付けを調べた後、多対多のリレーショナルテーブルの一部を作成するためにRails Associationsを使用できます。

私のPlayerStats#indexでは、自分自身が<%= Year.find(TeamYear.find(TeamUser.find(player_stat.team_user_id).team_year_id).year_id).year %>のようなことをしているのが分かりません。だから、上記の正規化されたスキーマに基づいてモデルの関連付けを構築する方法に関するガイダンスを探しています。ここに私の推測です:

User.rb にhas_many:team_users

Team.rb belongs_toの:team_year

Year.rb belongs_toの:team_year

Team_Year.rb にhas_many:チーム has_many:年

チーム_User.rb belongs_to:user belongs_toの:team_year にhas_one:役割

Game.rb にhas_many:team_years

Player_stats.rb belongs_toの:team_user belongs_toの:ゲーム

私は右の上だかはわかりませんトラックかどうか。さらに、私はこれらの関連を宣言することをどのように活用するのか分かりません。私は間違いなくTeam.name(Player_Stat.game_idを指定)をTeam.find(TeamYear.find(Game.find(player_stat.game_id).away_team_year_id).team_id).nameよりも簡単にしたいと思っています。

正規化されたDBを作成するのが難しいですか?私はこの問題について異なって考えなければならないでしょうか?助けや指導に感謝します。

+0

このガイドをお読みください。 http://guides.rubyonrails.org/association_basics.html – MikDiet

答えて

0

お客様のDBデザインは問題ありません。

多くの関係に共通する1:

Userモデル、およびそれにユーザーIDを有する対象モデル.. SQL面で今

あなたは件名にユーザIDを入れるでしょう。件名[ID、ユーザーID、マーク]

ので対象モデルで、あなたはuserid belongs_to Userを定義します。..

読むhttp://guides.rubyonrails.org/association_basics.htmlこの詳細に少なくともonce..and多分少し1つの2つのテーブルがレールコンソールでそれを試してみてください。.. 。あなたが行ってもいいだろう...

またhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.htmlはゲームを除いて、DB設計はOKらしい...例といいと明確な説明はそれで「カーディナリティとの関連を」見出しから見

0

を持っています - チーム関係、魔女は不明ですが、質問の方向性だけではありません何が簡単です。

がない上から建物を起動してみてください、しかし、あなたのケースでは、ベースからクエリ

<%= Year.find(TeamYear.find(TeamUser.find(player_stat.team_user_id).team_year_id).year_id).year %> 

<%= player_stat.team_user.team_year.year %> 

とクエリ

Team.find(TeamYear.find(Game.find(player_stat.game_id).away_team_year_id).team_id).name 

変換に変身します〜に

0に

だから、あなたはちょうど内側のクエリから外側のクエリに行く、あなたが考えを持って願っています。

関連する問題