主キーと外部キーの違い

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

  • 主キー制約はリレーショナル データベース管理システムのテーブル内のすべての行を一意に識別する列であり、外部キーは XNUMX つのテーブル間の関係を作成する列です。
  • 主キーは null 値を決して受け入れませんが、外部キーは複数の null 値を受け入れることができます。
  • テーブルには主キーを XNUMX つだけ持つことができますが、テーブルには複数の外部キーを持つことができます。
  • 主キーの値は親テーブルから削除できませんが、外部キーの値は子テーブルから削除できます。
  • XNUMX つの行に主キーの値が同一であることはできません。 一方、外部キーには重複した値を含めることができます。
  • 外部キー テーブルに値を挿入する際に、テーブル列に値を挿入することに制限はありません。値が主キーの列に存在することを確認してください。
主キーと外部キーの違い
主キーと外部キーの違い

ここでは、主キーと外部キーの違いを分析し、それぞれの長所と短所を総合的に評価します。

主キーとは

主キー制約は、リレーショナル データベース管理システムのテーブル内のすべての行を一意に識別する列または列のグループです。重複することはできません。つまり、テーブル内に同じ値が複数回出現してはなりません。

テーブルには複数の主キーを持つことはできません。の 主キー 列またはテーブルレベルで定義できます。複合主キーを作成する場合は、テーブル レベルで定義する必要があります。

主キーの例

構文:

主キーの構文は次のとおりです。

CREATE TABLE <Table-Name>
(
Column1 datatype,
Column2 datatype,  PRIMARY KEY (Column-Name)
.
);    

ここでは、

  • Table_Name は、作成する必要があるテーブルの名前です。
  • Column_Name は、主キーを持つ列の名前です。

例:

スタッドID ロール番号 メールアドレス
1 11 トム 価格 abc@gmail.com
2 12 Nick ライト メールアドレス
3 13 ダナ ネイサン mno@yahoo.com

上記の例では、StudID、Roll No.、First Name、Last Name、Email などの列を持つ学生テーブルを作成しました。StudID はテーブル内の他の行を一意に識別できるため、主キーとして選択されています。

主キーを使用する理由

私は長年データベース システムを扱ってきた中で、主キーを使用する場合の次のような短所と利点に気づいてきました。

  • 主キーの主な目的は、データベース テーブル内のすべてのレコードを識別することです。
  • NULL 値の入力を許可しない場合は、主キーを使用できます。
  • レコードを削除または更新すると、データの整合性を確保するために指定したアクションが実行されます。
  • 親テーブルの削除または更新操作を拒否するには、制限操作を実行します。
  • DBMS テーブルを物理的に編成するたびに、データはクラスター化インデックスのシーケンスに編成されます。

外部キーとは

外部キーは、XNUMX つのテーブル間の関係を作成する列です。 外部キーの目的は、データの整合性を維持し、エンティティの XNUMX つの異なるインスタンス間のナビゲーションを可能にすることです。 別のテーブルの主キーを参照するため、XNUMX つのテーブル間の相互参照として機能します。 データベース内のすべての関係は、外部キーによってサポートされている必要があります。

外部キーの例

構文:

以下は外部キーの構文です。

CREATE TABLE <Table Name>( 
column1    datatype,
column2    datatype,  
constraint (name of constraint) 
FOREIGN KEY [column1, column2...] 
REFERENCES [primary key table name] (List of primary key table column) ...);

ここでは、

  • パラメータ「テーブル名」は、作成するテーブルの名前を示します。
  • パラメータ column1、column2… は、テーブルに追加する必要がある列を示します。
  • 制約は、作成している制約の名前を示します。
  • 参照は主キーを持つテーブルを示します。

例:

DEPTCode 部署名
001 科学
002 英語
005 パソコン
教師ID 名前 名前
B002 デイビッド ワーナー
B017 サラ 美咲さん(専業主婦)
B009 マイク ブラントン

上の例には、学校の教師と部門という 2 つのテーブルがあります。ただし、どの検索がどの部門で機能するかを確認する方法はありません。

このテーブルでは、Deptcode の外部キーを教師名に追加することで、2 つのテーブル間にリレーションシップを作成できます。

教師ID DEPTCode 名前 名前
B002 002 デイビッド ワーナー
B017 002 サラ 美咲さん(専業主婦)
B009 001 マイク ブラントン

この概念は、参照整合性とも呼ばれます。

外部キーを使用する理由

私がこれまで見てきたことから、外部キーを実装する重要な理由は次のとおりです。

  • 外部キーは、親テーブルの主キーを使用してエンティティを移行するのに役立ちます。
  • A 外部キー 2 つ以上のテーブルをリンクできます。
  • これにより、データベースのデータの一貫性が保たれます。
  • 外部キーを使用すると、列または列の組み合わせを親テーブルの主キーと照合することができます。
  • SQL 外部キー制約は、データの親の参照整合性が子テーブルの値と一致することを確認するために使用されます。

主キーと外部キーの違い

私が個人的に経験した、主キーと外部キーの重要な違いを共有しましょう。

主キーと外部キー
主キーと外部キー
比較基準 主キー 外部キー
主キー制約は、テーブル内のすべての行を一意に識別する列または列のグループです。 リレーショナルデータベース管理システム. 外部キーは、2 つのテーブル間の関係を作成する列です。
Basic これは、テーブル内のレコードを一意に識別するのに役立ちます。 これは、別のテーブルの主キーとなるテーブル内のフィールドです。
NULL 主キーは決して null 値を受け入れません。 外部キーは複数の null 値を受け入れることができます。
インデキシング 主キーはクラスター化インデックスであり、DBMS テーブル内のデータはクラスター化インデックスの順序で物理的に編成されます。 外部キーでは、クラスター化または非クラスター化のインデックスを自動的に作成することはできません。
数量カウント テーブルには 1 つの主キーを含めることができます。 テーブルには複数の外部キーを含めることができます。
削除 主キーの値は親テーブルから削除できません。 外部キーの値は子テーブルから削除できます。
一時テーブル 一時テーブルに主キーを暗黙的に定義できます。 ローカル一時テーブルまたはグローバル一時テーブルに外部キーを定義することはできません。
関係 主キーはクラスター化インデックスです。 デフォルトでは、クラスター化インデックスではありません。
複製 2 つの行に主キーの値が同じであることはできません。 外部キーには重複した値を含めることができます。
挿入 テーブル列への値の挿入に制限はありません。 外部キー テーブルに値を挿入するときは、その値が主キーの列に存在することを確認してください。

主キーと外部キーのどちらかを選択する方法

これまで見てきたことから、主キーはテーブル エントリを一意に識別し、外部キーはこれらのエントリをテーブル間でリンクします。これらはどちらもデータの整合性を維持し、効率的なデータ取得を促進するために重要です。