アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLについて悩んでいます。

例えば personというテーブルに 個人情報があるとします。
別の service というテーブルでサービスを供給する人と
受ける人、両方を含んだテーブルを作ることは、正しい
でしょうか?

例えば service テーブルで以下のような構成です。
id - int
p_person - 外部キー(personテーブルのidを参照)
d_person - 外部キー(personテーブルのidを参照)

僕はよくこうゆうテーブルを作りたくなりますが、
こういう考え方は正規化には反してないものの
なんだかおかしいように思ってしまいます。

アドバイスなどいただけたら幸いです。

A 回答 (2件)

person同士の関連を表現するテーブルを導出する事は、妥当だと思います。



ただ、例であげられているserviceをエンティティとして考えるなら、
> id - int
> p_person - 外部キー(personテーブルのidを参照)
> d_person - 外部キー(personテーブルのidを参照)
――だけのものだと、なんかアレな気がします。
現場次第ですが。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

>――だけのものだと、なんかアレな気がします。
ちょっと抽象的すぎたでしょうか(汗;) プライマリーキーと
同一フィールドを指す外部キーが2つしか書いてませんが、
実際にはもっとたくさんのフィールドがあると思います。

こうゆうテーブルが妥当だというお考えを聞いて
心強く思います。

お礼日時:2005/01/22 13:06

状況にもよりますが、文脈から推察する限りではじゅうぶん妥当だと思いますよ。


サービスを供給する人と受ける人の関係が多対多であれば、それを関連付けるテーブルが必要です。
もしもこれが一対多の関係であれば、一方のテーブルから他方のテーブルを参照する形のほうがスマートでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

「じゅうぶん妥当」と言っていただいて、かなり自信を
持つことができました。

この設計で進めてみたいと思います。

お礼日時:2005/02/07 16:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!