2011-08-28 28 views
10

次の点を考慮してくださいデータモデリング:常に交差テーブルを使用する必要がありますか?

私は2つのテーブル(顧客とケース)以下のように定義されている:

**Customers** 
CustomerId (PK) 
CustomerName 
CustomerPhone 

**Cases** 
CaseId (PK) 
CaseManager 
CaseNotes 

を各顧客は例無制限の量を持つことができる、しかし、それぞれの場合には、1人の顧客だけに属することができます。したがって、テーブルをお互いに関連付けるには、それぞれのテーブルの外部キーで構成される交差テーブル(CustomerCases)を使用します。

ただし、CustomersテーブルのCustomerIDをCasesテーブルの外部キーとして追加できませんでしたか?私は何かが欠けているように感じる。私が交差点テーブルを使わないことを選ぶべきであることを知っておくべき落とし穴がありますか?

答えて

6

1つのケースが1つの顧客にしか属していない場合は、CasesテーブルにCustomerID FKを追加するだけで十分です。
最終的に要件が変更される可能性があると考えられる場合(例では複数の顧客がいる可能性があります)、交差表のアプローチが理にかなっている可能性があります。
また、不特定多数のCaseManagersを持たない場合は、Managersテーブルを持ち、CasesテーブルからそのFKを持つことも意味があります。

+0

ありがとうございました!私はここに新しいです、そして、私はそれが徹底的な答えをすばやく得ることがどのくらいのことをあなたに伝えることができません! – TelJanini

5

多対多リレーションシップをモデル化するために必要なのは、「交差」(別名「接合」または「相互参照」)表だけです。このような状況では、ケースは顧客と多対1の関係に参加します。だから、外来の鍵がすべて必要です - そして、それはもっと従来の解決策になるでしょう。アーキテクチャー上の理由がない限り(例えば、アプリケーションは、すべての関係がジャンクションを使用して表現されることを要求するコンポーネントに依存します)、ジャンクション・テーブルの不要な複雑さを避けてください。

+0

非常に感謝しています!あなたは私に頭痛の多くを救った!再度、感謝します! – TelJanini

+0

用語の説明とこのモデルを必要とするタイプの関係を説明する – Wiseguy

関連する問題