質問: まだ作り始めていません。従って、漠然とした質問となってしまうかもしれませんが、 お付き合い願います。 Ruby on Railsでいろいろできるようになってきたので、競馬のデータベースを 作ってみたく、モデルを思案しているところです。 ここで早速どうしたらいいのかわからないので質問させていただくことにしました。 競馬は要素が多く、すべてを網羅することなど考えてはいませんが、とりあえず、 Race Horse そうすると、この関係でどのモデルにhas_many、どのモデルにbelongs_toを 指定したらいいものか判断がつきかねました。。 Race has_many Horses のような気もするし、 Horse has_many Races のような気もするからです。 これらのモデル間でprimary_keyとforeign_keyの決め方はどのような視点から 考えて決めていけばよろしいのでしょうか?ご教授お願いします。 追伸:もう一つ、神社と神様に関するデータベースも 作りたいのですが、 このケースも上記と同様、どちらに外部キーを定義したらいいのかわかりません。 God has_many Shrines のような気もするし、 Shrine has_many Gods のような気もします。 こういった場合、こうだから、こうだ。 みたいな考え方は在るのでしょうか?教えてください。よろしくお願い致します。
回答: 主従関係ですから1:多の関係で考えれば自ずと答えは出ます。 HorseはRaceが無くても成り立ちますが、RaceはHorseが無いと成り立ちません。 また、Horseは複数のRaceに出走できますが、Raceに同じ馬が複数出走することは物理的に不能です。 ですので、Horse:Race=1:多となります。 神社と神様も同様に、神様:神社=1:多ですね。 関係性に関しては、先ずユニークなものを洗い出しして、組合せで複数になる場合にマッピングテーブルを準備するとすっきりします。 (Raceの開催を決めてから、出走するHorseを決めるようなケース)