primary
、unique
とforeign key constraints
、およびindexes
の違いは何ですか?
Oracle 10g
とSQL Server 2008
を扱っています
主キーと一意キーはエンティティ整合性制約です
主キーを使用すると、テーブル内の各行を一意に識別でき、重複する行が存在せず、null値が入力されないことが保証されます。
一意キー制約は、テーブルの行内のキー値の重複を防ぎ、NULL値を許可するために使用されます。 (Oracleでは、1つのnullは別のnullと等しくありません)。
プライマリキー: nullにはできないすべての行を一意に識別します。重複することはできません。
外部キー: 2つのテーブル間の関係を作成します。 nullでもかまいません。重複する可能性があります
以下に参考資料を示します。
プライマリキー:プライマリキーは、テーブル内のレコードを一意に識別するフィールドまたはフィールドの組み合わせであり、個々のレコードを混乱なく見つけることができます。
外部キー:外部キー(参照キーとも呼ばれます)は、2つのテーブルをリンクするために使用されるキーです。通常、1つのテーブルから主キーフィールドを取得し、それを他のテーブルに挿入して、外部キーになります(元のテーブルでは主キーのままです)。
一方、 Index は、一部の列に適用できる属性であるため、これらの列で実行されるデータ取得を高速化できます。
キー/インデックス:キーは論理データベース設計の側面であり、インデックスは物理データベース設計の側面です。キーは整合性制約に対応します。インデックスは値を物理的に記録する技術であり、これらの制約を実施するときに便利に適用できます。
プライマリ/外部:「プライマリ」キーは、値がテーブル全体で一意の組み合わせを形成する必要がある属性のセットです。このようなセットは複数存在する可能性があります(> 1キー)。「プライマリ」という言葉は、設計者が複数のキーの1つを「最も重要/関連する」キーとして選択することを余儀なくされた当時の名残です。 。この理由は、主に外部キーとの組み合わせでした。
「プライマリ」キーと同様に、「外部」キーも属性のセットです。これらの属性の値は、参照されるテーブルの既存の主キー値である組み合わせを形成する必要があります。今日、この規則がSQLにどの程度厳密に適用されるのか、正確にはわかりません。とにかく用語は残っています。
一意:インデックスが重複エントリを受け入れることができないことを示すために使用されるキーワード。一意のインデックスは、明らかに主キーを適用する優れた手段です。ロジカルデザインの文脈で「ユニーク」という言葉が使用されている限り、それは余分で、ずさんで、不必要でわかりにくいものです。キー(つまり、主キー)は、定義により一意です。
1)A primary key
は、リレーション内でタプルを一意に識別する1つ以上の属性のセットです。
2)A foreign key
は、別の関係スキームのタプルを一意に識別することができる関係スキームの属性のセットです。
主キーは主に重複を防ぎ、列の一意性を示します外部キーは主に2つのテーブルの関係を示します