1. ホーム
  2. database-design

[解決済み] Nullable Foreign Key のバッドプラクティス?

2022-09-06 17:45:24

質問

例えば、顧客IDへの外部キーを持つOrdersテーブルがあるとします。ここで、顧客 ID のない注文を追加する場合、(それが可能かどうかは別の問題ですが)外部キーを NULL にする必要があります... これは悪い習慣ですか、それとも注文と顧客の間にリンク テーブルを使用する方が良いですか?一方、リンクテーブルを使用すると、NULLSがなくなりますが...。

NULLへの外部キーを持つレコードは、その注文の顧客が追加されるまでの一時的なものなので、実際にはデータベース内にNULLはあまり存在しないでしょう。

(私の場合、OrderとCustomerではありません)。

EDIT: 未割り当てのCustomerにリンクさせるのはどうでしょうか?

どのように解決するのですか?

リンクテーブルが おそらく より良い選択肢です。少なくとも、正規化に違反しない BCNF (Boyce-Codd normal form)に違反しません。しかし、私は現実的であることを支持します。もし、NULL値がほとんどなく、一時的なものであるなら、リンクテーブルはスキームに複雑さを加えるだけなので、省略した方がいいと思います。

リンクテーブルで注文テーブルを指す外部キーをそのリンクテーブルの主キーとして使用する場合、関係はまだ 1.