1. ホーム
  2. database

[解決済み] 複合主キーのNullableカラムの何が問題なのでしょうか?

2022-04-24 09:15:42

質問

ORACLEは、主キーを構成するどの列にもNULL値を認めません。他のほとんどのquot;enterprise-level"システムも同様と思われます。

同時に、ほとんどのシステムで ユニーク NULL可能なカラムに対する制約。

一意制約はNULLを持つことができますが、主キーは持つことができないのはなぜですか?論理的な理由があるのでしょうか、それとも技術的な制限なのでしょうか?

解決方法は?

主キーは、行を一意に識別するためのものです。これは、キーのすべての部分を入力と比較することで行われます。

定義によると、NULLは成功した比較の一部となることはできません。自分自身との比較でさえも ( NULL = NULL ) は失敗します。つまり、NULLを含むキーは機能しないことになります。

さらに、オプションの関係を示すために、外部キーにNULLを使用することができます。 (*) PKでも許可すると、これが壊れてしまいます。


(*) 注意点があります。null可能な外部キーを持つことは、きれいなリレーショナルデータベースの設計ではありません。

2つのエンティティがある場合 AB ここで A は任意に関連付けることができます。 B の場合、きれいな解決策は解決テーブルを作成することです(例えば AB ). このテーブルでは AB : もし があれば、そのレコードが含まれます。 ない ということです。