2011-08-11 16 views
1

MySQLでのDBデザインの提案が欲しいです。MySQLデータベース設計の提案

ムービーID、セレブID、ロールIDを含むテーブルMovie_Celebrity_Roleがあります。 この表は、映画、セレブ(CelebName & CelebID)と役割(プロデューサー、ディレクターなど、およびrespid)の間のリンクです。私が代わりに有名人の上記と同様しかし、ここで別のテーブルMovie_Company_Roleは、企業のIDが格納されている会社表とロールにリンクされている

は、プロダクションハウスなど異なるなど

私の問題は、のようないくつかのフィールドがあるあります会社とセレブの両方を持つメディア関係。したがって

、テーブルを結合するとき、私はMoviedID_CelebID_CompID_RoleIDとして別のテーブルを作成する場合は有名人のテーブルと会社テーブルは、このテーブルを照合してもMovie_celeb_roleとMovie_comp_roleに参加する必要があるとして、私は、重複エラーが発生します。

どうすればいいかお教えください。

私は自分のサイト上の結果は、次のようになりたい:

プロデューサー Celeb1 Celeb2

ディレクター Celeb1 Celeb3

... ... ...

メディアリレーション Celeb2 C ompany1 会社12

PS:このページでセレブや会社のリンクをクリックすると、セレブのページや会社のページに移動して、有名人や会社が関連付けられている映画をロールで一覧表示する必要があります。

+0

したがって、同じテーブル内に意味的に異なるもの(会社のロールと「有名人」のロール)を保存しますか?企業の役割に余分な列が必要な場合はどうなりますか? – Jacob

+0

"Media Relations"フィールド(列)はどのテーブルにありますか? CelebIdまたはCompanyIDを保存していますか? – RKh

+0

@RPKメディア・リレーションは、企業または個人(セレブリティ)の両方で実行できる役割です。メディア関係は、ロールテーブルのRole_Nameに格納されます。 – Kenh

答えて

0

非常に混乱...

「重複エラー」はどうなりますか? role_idがロールテーブルから正しく評価されている限り、あなたは大丈夫です。

あなたが大丈夫でないところは、あなたの役割定義にあいまいさがあることです。あなたの例では、テーブルに2つのrole_id値、1つは会社のための値、もう1つはpersonのための値です。

私はあなたがこれをやりたいと思うかどうかは確信していません...私は会社が映画で複数の役割を果たしていることを期待しています。 (例:誰かが監督で、俳優が同時にいる場合もあります)

ここでは、これを別のテーブルにしたいと考えています。

+0

上記の質問の編集版を参照してください。 – Kenh

関連する問題