たとえば、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 可能にすることができます。