私はRailsを使用していますが、この質問はデータベース設計の詳細です。私は私のデータベースにいくつかのエンティティを持っていますが、スキーマはこのように少しあります:http://fishwebby.posterous.com/40423840他のテーブルを使って2つのテーブルをリンクするデータベーススキーマを設計する方法
人のリストを取得して姓で注文したいのですが、問題ありません。このものの
SELECT group_enrolment.*, person.*
FROM person INNER JOIN member ON person.id = member.person_id
INNER JOIN enrolment ON member.id = enrolment.member_id
INNER JOIN group_enrolment ON enrolment.id = group_enrolment.enrolment_id
WHERE group_enrolment.id = 123
ORDER BY person.surname;
:私は特定のグループに登録姓が注文した人のリストを、取得したい場合は、私は、いくつかは、4つのテーブル間で結合し、このようなものを含むSQLステートメントを使用する必要があります私のスキーマが成長するにつれて、これらのクエリはますます複雑になる可能性があります。
別のオプションは、他のテーブルでPERSON_IDを含むことにより、クエリ内の他のすべてのテーブルに人のテーブルに参加することができ、それはただ1つの参加、例えば
SELECT group_enrolment.*, person.*
FROM person INNER JOIN group_enrolment ON group_enrolment.person_id
WHERE group_enrolment.id = 123
ORDER BY person.surname;
しかし、これは希望になります私のスキーマでは、personテーブルが他の多くのテーブルに結合されていることを意味します。複雑なスキーマダイアグラムを除いて、誰もこれに不利な点を見ていますか?
私は今何をやっているのか(多くのテーブルに参加している)、あるいは私には起こっていない2番目の解決策や別の解決策が最善の方法であるかどうか、非常に感謝します。
事前に感謝多くのありがとうございます
を私が行ってきました私が好きなように外部キーを伝播させる方法については、結合が正常に機能しますが、スキーマを深く理解するにつれて、より複雑になっていきます。私はいくつかの成功したテストを今行ってきました。それは素晴らしいです - 私は子モデルが保存される前に外部キーを伝播する私のRailsモデルでコールバックを持っています、それは(例えば登録のための) 1つの結合。ご回答どうもありがとうございました! –