- ベストアンサー
特定のフィールドを複数 Join するテーブル
SQLについて悩んでいます。 例えば personというテーブルに 個人情報があるとします。 別の service というテーブルでサービスを供給する人と 受ける人、両方を含んだテーブルを作ることは、正しい でしょうか? 例えば service テーブルで以下のような構成です。 id - int p_person - 外部キー(personテーブルのidを参照) d_person - 外部キー(personテーブルのidを参照) 僕はよくこうゆうテーブルを作りたくなりますが、 こういう考え方は正規化には反してないものの なんだかおかしいように思ってしまいます。 アドバイスなどいただけたら幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
person同士の関連を表現するテーブルを導出する事は、妥当だと思います。 ただ、例であげられているserviceをエンティティとして考えるなら、 > id - int > p_person - 外部キー(personテーブルのidを参照) > d_person - 外部キー(personテーブルのidを参照) ――だけのものだと、なんかアレな気がします。 現場次第ですが。
その他の回答 (1)
- hide9048
- ベストアンサー率42% (6/14)
回答No.2
状況にもよりますが、文脈から推察する限りではじゅうぶん妥当だと思いますよ。 サービスを供給する人と受ける人の関係が多対多であれば、それを関連付けるテーブルが必要です。 もしもこれが一対多の関係であれば、一方のテーブルから他方のテーブルを参照する形のほうがスマートでしょう。
質問者
お礼
ありがとうございます。 「じゅうぶん妥当」と言っていただいて、かなり自信を 持つことができました。 この設計で進めてみたいと思います。
お礼
アドバイスありがとうございます。 >――だけのものだと、なんかアレな気がします。 ちょっと抽象的すぎたでしょうか(汗;) プライマリーキーと 同一フィールドを指す外部キーが2つしか書いてませんが、 実際にはもっとたくさんのフィールドがあると思います。 こうゆうテーブルが妥当だというお考えを聞いて 心強く思います。