1

問題を視覚化するために作成した次のデータベースモデルの例を参照してください。

ここに画像の説明を入力してください

この例では、との間の関係との間のcar and history is 1 to zero or more関係car and options is 1 to zero or more

両方のテーブルには car car_id外部キーがありますが、Visiocustomer では、上の図に示すように、これらの各テーブルのテーブル主キーも外部キーとして必要です。それが必要/正しいかどうかはわかりません。追加された外部キーを削除すると、visioは関係を識別不能(点線)としてマークするため、何か間違ったことをしているように感じます

Visioがの子customer cust_idテーブルにを追加する理由を誰かに教えてもらえますcarか?この場合、外部キーを手動で削除するのは悪い考えですか?

コメント(および選択した回答)に基づいて図を更新

ここに画像の説明を入力してください

4

1 に答える 1

1

識別できない関係自体に「間違った」ものはありません。

それ自体car_idでユニークですか、それとも(異なるsに対して同じものを持つことができるように)のコンテキストでユニークですか?cust_idcar_idcust_id

  • それ自体が一意である場合、customer-car関係は非識別である必要があります。
  • それ以外の場合は、識別している必要があります。cust_idこれの自然な結果は、すべての「下流」エンティティへの伝播です。

ところで、同じ質問をすることができますopt_id-hist_idそれらはそれ自体でユニークですか、carそれとものPKのコンテキストでですか?答えは、 car-optionscar-のhistory関係が識別されるべきかどうかを決定します。

于 2012-04-20T14:41:44.733 に答える