データベース内の同じテーブルでUNIQUEおよびNOT NULLとして宣言されている主キーと属性の違いは何ですか?
2 に答える
テーブルには 1 つの主キーしか存在できず、null にすることはできません。主キーにNOT NULL属性を明示的に指定する必要はありません。
テーブルには複数の一意のキーが存在する場合があります。一意のキーは null にすることができます
列をNOT NULLとして指定すると、その列を NULL のままにしておくことはできません。
編集:-
コメントによると、テーブルに複数の主キーを含めることはできません。
また、ユニーク キー制約は、実際には NOT NULL 制約を意味しません。それに加えて、主キーと一意キーの唯一の違いであるため、一意キーにNOT NULLを書き込むことの使用は何ですか。
残念なことに、その SQL 制約が主キーと名付けられたのは、論理エンティティの主キーとエンティティの物理ストレージの主キーの関連はあるが異なる概念を混同するためです。論理主キーと物理主キーの両方に同じフィールドが使用されることは確かにあり得ますが、まれではありませんが、これは必須ではなく、多くの場合望ましくありません。
論理エンティティの主キーは、リレーショナル理論について説明しているデータベースの教科書で参照されているオブジェクトです。関係構造を正規化するときに参照するのはこのオブジェクトであり、(もちろん) 論理モデル内のエンティティに存在する候補キーの 1 つです。
物理ストレージ主キーは物理モデルの属性であり、エンティティの論理モデルで定義された属性に加えて、論理エンティティのインスタンスのストレージを一意に識別するために DBMS によって使用される可能性があります。これは、エンティティのストレージの (物理) スキーマを定義するときに主キー制約で参照されるオブジェクトです。この物理ストレージの主キーが論理エンティティの主キーと異なる場合、最も一般的な原因は、次の目的で人工キーが論理属性に追加されているためです。
- 論理エンティティの主キーのフィールドの更新を有効にします。
- 外部キー参照用の狭いキーにすることでパフォーマンスを向上させます を参照してください
すべての論理エンティティ候補キーは、一意性制約を使用して物理モデルで定義する必要があります。物理ストレージの主キーのみが主キーの制約になります。