エンティティは独立して存在することはできないため、弱くはありませんが、識別することはできません。 独立して。したがって、弱いエンティティに「つながる」関係は「識別」関係と呼ばれます。実際には、これは親の主キーが(通常はproper に移行されることを意味します。 )子のPKのサブセット(「弱いエンティティ」という用語は通常、主キーに関連して定義されますが、理論的にはどのキーにも適用できます)。
独立して存在することはできないが、独立して識別できる、つまり、非NULLと非識別の関係にあるエンティティを持つことは完全に合法です。
あなたは尋ねなければなりません:historyLineID
ユニークである単独で 、またはorderID
と組み合わせて ?後者の場合は、弱い実体になると思います。
あなたが私たちに示したのは弱い実体ではありません-親のPKは子のPKに移行されません。
基本的に2つのオプションがあります:
-
orderHistory
複合PKがあります:{orderID, historyLineID}
、ここでorderID
FKです。ところで、このPKは「自然」と見なすことができます: -
orderHistory
代理PKがあります:{orderHistoryID}
、orderID
PKの外にあります。それでも、代替キー{orderID, historyLineID}
が必要です。 ただし:
はい、これは上記の最初のオプションです。 orderHistory
で子の関係がない限り それ自体、これも最良の解決策です。 orderHistory
の場合 いくつかの要因に応じて、これが最善の解決策である場合とそうでない場合があります。
これはどちらでもありません-または。上記のように、フィールドはFKと(プライマリまたは代替)キーの一部の両方にすることができます。
キーを正しく指定しない限り、3NFに到達することはできません。また、どのエンティティを個別に識別できるか、どのエンティティを識別できないかを考慮せずに到達することはできません。