1. ホーム
  2. database

[解決済み】識別関係と非識別関係の違いとは?

2022-01-23 10:35:46

質問

違いがよくわからないのですが。両方のコンセプトを実際の例を使って説明してもらえますか?

どのように解決するのですか?

  • について 識別関係 とは、子テーブルの行の存在が親テーブルの行に依存する場合です。 最近は子テーブルに擬似キーを作るのが一般的なので、混乱するかもしれませんが ではなく 親への外部キーを子の主キーの一部にする。 形式的には、外部キーを子の主キーの一部にするのが正しいやり方です。 しかし、論理的な関係では、子は親なしには存在できません。

    例 A Person は1つ以上の電話番号を持っています。 もし電話番号が1つだけだったら、単純にその電話番号を Person . 複数の電話番号をサポートしたいので、2つ目のテーブルを作成します。 PhoneNumbers で、その主キーには person_id を参照する。 Person テーブルを使用します。

    電話番号は、別のテーブルの属性としてモデル化されていますが、個人に属するものと考えてもよいでしょう。 これは、これが識別関係であることを示す強い手がかりです(たとえ、文字どおりに person_id の主キーに PhoneNumbers ).

  • A 非同定関係 とは、親の主キー属性が はしてはならない は、子の主キー属性になります。 この良い例が、ルックアップテーブル、たとえば Person.state の主キーを参照しています。 States.state . Person に対して子テーブルです。 States . しかし Person によって識別されるわけではありません。 state 属性があります。 すなわち state の主キーには含まれません。 Person .

    非同定リレーションシップは 任意 または 必須 これは、外部キーのカラムがそれぞれ NULL を許可するか、または NULL を許可しないかを意味します。


への回答もご覧ください。 アイデンティファイとノンアイデンティファイの関係についてまだ混乱している