Null 許容外部キーは悪い習慣ですか? 質問する

Null 許容外部キーは悪い習慣ですか? 質問する

たとえば、Customer Id への外部キーを持つ Orders テーブルがあるとします。ここで、Customer Id のない Order を追加したいとします (それが可能かどうかは別の問題です)。外部キーを NULL にする必要があります... これは悪い習慣でしょうか、それとも Orders と Customers の間のリンク テーブルを使用したほうがよいでしょうか。関係は 1 対 n ですが、リンク テーブルでは n 対 n になります。一方、リンク テーブルでは、これらの NULL はもうありません...

NULL への外部キーを持つレコードは、注文の顧客が追加されるまでの一時的なものであるため、データベースには実際にはそれほど多くの NULL は存在しません。

(私の場合は注文と顧客ではありません)。

編集: 割り当てられていない顧客にリンクする場合はどうなりますか?

ベストアンサー1

いいえ、Nullable FK に問題はありません。これは、FK が指すエンティティが、プライマリ キー参照テーブルと (0 または 1) 対 (1 または多数) の関係にある場合によく発生します。

たとえば、テーブルに物理アドレスと郵送先住所の属性 (列) の両方があり、アドレス テーブルへの FK がある場合などです。エンティティに私書箱 (郵送先住所) しかない場合に処理するために物理アドレスを NULL 可能にし、郵送先住所が物理アドレスと同じ (または異なる) 場合に処理するために郵送先住所を NULL 可能にすることができます。

おすすめ記事