DBMSの主キーと外部キーの違い

著者: Laura McKinney
作成日: 1 4月 2021
更新日: 12 5月 2024
Anonim
【優しいITパスポート】第17回:データベース:主キーと外部キー!
ビデオ: 【優しいITパスポート】第17回:データベース:主キーと外部キー!

コンテンツ


キーは、スキーマ内のテーブル間の関係を識別および確立するために使用されるDBMSの重要な部分です。さて、今日はDBMSの2つの非常に重要なキー、つまり主キーと外部キーについて説明し、主キーと外部キーの違いについても説明します。途中で、主キーである主キーと外部キーの基本的な違いはデータベース設計者が選択した候補キーの1つですが、外部キーは別のリレーションの主キーを参照するキーです。

これら2つの間には他にも多くの違いがあります。以下に示す比較チャートを使用して、それらの違いを識別してみましょう。

  1. 比較表
  2. 定義
  3. 主な違い
  4. 結論

比較表

比較の根拠主キー外部キー
ベーシック主キーは、リレーションのタプルを一意に定義する選択された候補キーです。テーブル内の外部キーは、他のテーブルの主キーを参照します。
ヌル主キーの値をNULLにすることはできません。外部キーはNULL値を受け入れます。
複製するリレーション内の2つのタプルは、主キー属性の重複値を持ちません。タプルは、外部キー属性の重複値を保持できます。
範囲リレーションの主キーは1つだけです。リレーションには複数の外部キーが存在する場合があります。
一時テーブル主キー制約は、一時テーブルで定義できます。外部キー制約は、一時テーブルに定義できません。
クラスター化インデックスデフォルトでは、主キーはクラスター化インデックス化されます。外部キーは自動的にクラスター化インデックス化されません。手動で行う必要があります。
挿入参照する外部キーの列にその値がない場合でも、主キー属性に値を挿入できます。その値が参照される主キー列に存在しない場合、外部キーに値を挿入することはできません。
削除主キー値を削除する前に、参照元テーブルの参照元外部キー列に値がまだ存在していないことを確認してください。参照される関係の参照される主キー列にその値が存在するかどうかを気にすることなく、外部キー列から値を削除できます。


主キーの定義

主キー ユニークに リレーションのタプルを定義します。リレーション内の単一の属性にすることも、リレーション内の属性のセットにすることもできます。主キー属性の値は 決してまたはほとんど変更されません。プリンシパルであるため、データベース内のレコードを識別することを意味します。主キーの属性値を変更すると混乱が生じます。

データベース設計者は、次のいずれかを選択します 候補キー いくつかのポイントを考慮に入れて、主キーとして。最初の考慮事項は、主キー属性値に含めることができないことです ヌル 値。なぜなら、主キー属性値にNULLが含まれている場合、テーブル内のそのレコードを識別できないことを意味するためです。また、エンティティの整合性制約に違反します。 2番目の考慮事項は、 2つのタプルはありません テーブルに含めることができます 同じ タプル間の一意性に違反するため、主キー属性の値。

あることができます 1つの主キー のために 関係。主キーはデフォルトです クラスター索引付き、つまり、主キーの属性値に基づいて、テーブル内のすべてのタプルがソートされることを意味します。主キー制約は、 一時テーブル。クエリの実行中に作成された中間テーブルは、一時テーブルと呼ばれます。

ながら 削除する リレーションからのタプル、削除されたタプルの主キー値が参照リレーションの外部キー列にまだ存在しないように注意する必要があります。一方、 挿入 主キーに制約はありません。

テーブルの主キーは、他のテーブルで使用されると、そのテーブルの外部キーになります。外部キーの制約については、以下で説明します。

外部キーの定義

関係が R1、その属性の中で、 一次 キー 他の関係の R2、その属性が呼び出されます 外部キー 関係のために R1。関係 R1 外部キーを含むが呼び出されます 参照関係 リレーションR2およびリレーションの主キーを参照するため R2 と呼ばれます 参照される関係.
主キーとは異なり、外部キーは受け入れることができます ヌル なぜなら、このための主キーがあるため、リレーションでレコードを明確に識別するタスクを持たないからです。同様に、外部キーも受け入れます 重複する値.


関係は持つことができます 複数 外部キー。異なるリレーションのプライマリキーである異なる属性を持つことができます。外部キー制約は じゃない で定義される 一時テーブル, また 外部キーは クラスター索引付き 属性。

ながら 挿入 参照関係の外部キー列に値を挿入する場合は、挿入値が参照関係の主キー列に存在する必要があることを確認してください。一方、制約はありませんが 削除する 外部キー列の値。

  1. プライマリは、関係のレコードを明確に識別する属性/候補キーのセットです。ただし、テーブル内の外部キーは、別のテーブルの主キーを参照します。
  2. 主キー属性はNULL値を含むことができませんが、外部キー属性はNULL値を受け入れることができます。
  3. 主キーには一意の属性値が必要ですが、外部キーには重複した属性値が含まれる場合があります。
  4. リレーションには複数の外部キーが存在する場合がありますが、リレーションには主キーが1つしかありません。
  5. 主キー制約は、一時テーブルに適用できます。ただし、外部キー制約は一時テーブルに適用できません。
  6. 主キーはデフォルトでクラスター化インデックス化されますが、外部キーは自動的にクラスター化インデックス化されませんが、手動で実行できます。
  7. 外部キー列に値を挿入するときに、参照されている主キー列に挿入属性値が存在することを確認してください。ただし、主キー列への挿入に制限はありません。
  8. 主キー列から値を削除する際、削除された属性値が参照する外部キー列に存在しないことを確認してください。ただし、外部キー列から値を削除する際の制約はありません。

結論:

スキーマには、主キーと外部キーの両方が不可欠です。主キーはリレーションの各タプルを一意に定義しますが、外部キーは2つのリレーション間のリンクを作成するために使用されます。