違いを完全に理解できていません。両方の概念を説明し、実際の例を挙げていただけますか?
ベストアンサー1
識別関係とは、子テーブルの行の存在が親テーブルの行に依存している場合です。これは、子テーブルの疑似キーを作成するのが最近の一般的な方法であるものの、親への外部キーを子の主キーの一部にしないため、混乱を招く可能性があります。正式には、これを行う「正しい」方法は、外部キーを子の主キーの一部にすることです。ただし、論理的な関係は、子は親なしでは存在できないということです。
例: A に
Person
は 1 つ以上の電話番号があります。電話番号が 1 つだけであれば、 の列にそれを保存できます。複数の電話番号をサポートしたいので、テーブルを参照する を主キーに含むPerson
2 番目のテーブル を作成します。PhoneNumbers
person_id
Person
電話番号は別のテーブルの属性としてモデル化されているにもかかわらず、個人に属していると考えることができます。これは、これが識別関係であることを示す強力な手がかりです (
person_id
の主キーに文字通り含めない場合でもPhoneNumbers
)。非識別関係とは、親の主キー属性が子の主キー属性になってはならない関係です。
Person.state
の外部キーなどの参照テーブルが、この良い例です。は の子テーブルです。 しかし、 の行はその属性によって識別されません。 つまり、 は の主キーの一部ではありません。States.state
Person
States
Person
state
state
Person
非識別関係はオプションまたは必須にすることができ、それぞれ外部キー列で NULL が許可されるか、または NULL が許可されないことを意味します。
私の回答もご覧ください同一視関係と非同一視関係についてまだ混乱している