sql >> データベース >  >> RDS >> Mysql

弱実体のデータベースモデリング

    エンティティは独立して存在することはできないため、弱くはありませんが、識別することはできません。 独立して。したがって、弱いエンティティに「つながる」関係は「識別」関係と呼ばれます。実際には、これは親の主キーが(通常は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に到達することはできません。また、どのエンティティを個別に識別できるか、どのエンティティを識別できないかを考慮せずに到達することはできません。



    1. MySQLは最高値でDISTINCTを選択します

    2. varcharフィールドが広いと、MySQLリンクサーバーでopenqueryを使用すると、要求された変換がサポートされないというエラーが発生します

    3. Oracleデータベースの日時値から分を取得する2つの方法

    4. PDOおよびMySQLIN/NOTINクエリの適切な形式