主キーと一意キーの違い
主キーと一意キーの主な違い
- テーブル内には主キーが XNUMX つ存在することも、テーブル内に複数の一意キーが存在することもできます。
- 主キーの目的は、エンティティの整合性を強制することです。一方、一意キーの目的は、一意のデータを強制することです。
- 主キーではデフォルトのインデックスはクラスター化されていますが、一意キーではデフォルトのインデックスはクラスター化されていません。
- 主キーでは null 列は許可されませんが、一意キーでは null 列が許可されます。
- 主キーでは重複キーは許可されませんが、一意キーでは XNUMX つ以上のキー部分が null の場合、重複キーは許可されます。
ここでは、主キーと一意キーの違いを分析し、それぞれの長所と短所を総合的に評価します。
主キーとは
主キー制約は、テーブル内のすべての行を一意に識別するテーブル内の列または列のグループです。主キーは重複することはできません。つまり、同じ値がテーブル内に複数回出現することはできません。
テーブルには主キーを 1 つだけ持つことができます。 主キー 列またはテーブルレベルで定義できます。複合主キーを作成する場合は、テーブル レベルで定義する必要があります。
主キーの作成例
次の例は、student というテーブルがあることを示しています。このテーブルには、1) StudID、2) Roll No.、3) First Name、4) Last Name、5) Email の XNUMX つの属性が含まれています。
Roll No 属性には重複値や null 値を含めることはできません。これは、大学に登録するすべての学生が固有のロール番号を持つことができるためです。学生のロール番号を使用すると、表の各行を簡単に識別できます。したがって、これは主キーとみなされます。
主キーの特徴
私の観察に基づくと、主キーの重要な特徴は次のとおりです。
- 主キーはテーブルのエンティティの整合性を実装します。
- テーブル内に保持できるプライマリは XNUMX つだけです。
- 主キーには 1 つ以上のテーブル列が含まれます。
- 列は null ではないものとして定義されます。
主キーを使用する理由
私の実践的な知識を振り返ると、主キーを使用する重要な理由は次のとおりです。
- 主キーの主な目的は、データベース テーブル内のすべてのレコードを識別することです。
- NULL 値の入力を許可しない場合は、主キーを使用できます。
- レコードを削除または更新すると、データベース データの整合性を確保するために指定したアクションが実行されます。
- 親テーブルの削除または更新操作を拒否するには、制限操作を実行します。
- DBMS テーブルを物理的に編成するたびに、データはクラスター化インデックスの順序で編成されます。
ユニークキーとは?
一意のキーは、データベース レコードを一意に識別するテーブル内の 1 つ以上のフィールドまたは列のグループです。
一意キーは主キーと同じですが、テーブル列に対して XNUMX つの NULL 値を受け入れることができます。 また、同じ値を含めることはできません。 一意制約は、他のテーブルの外部キーによって参照されます。
一意のキーの作成例
次の属性を持つ同じ学生テーブルを検討してください: 1) StudID、2) ロール番号、3) 名、4) 姓、および 5) 電子メール。
大学の各学生は一意の ID 番号を持つ必要があるため、スタッド ID には一意の制約があり、スタッド ID 列のエントリは一意になる可能性があります。学生が大学を転校する場合、学生証はありません。一意キー制約では null が 1 つだけ許可されるため、エントリには null 値が含まれる可能性があります。
ユニークキーの特徴
ここでは、一意のキーの重要な機能の概要を説明します。
- テーブル内に複数の一意のキーを定義できます。
- デフォルトでは、一意のキーは非クラスター化一意インデックス内にあります。
- 1 つ以上のテーブル列で構成されます。
- テーブルの列は NULL にすることもできますが、列ごとに NULL を XNUMX つだけ指定することをお勧めします。
- 一意制約は、外部キー制約によって簡単に参照できます。
一意のキーを使用する理由
一意のキーの使用を推奨する重要な理由は次のとおりです。
- 一意キーの目的は、各テーブル レコードの列の情報が一意であることを確認することです。
- ユーザーに null 値の入力を許可する場合。
- 一意のキー デフォルトで非クラスター化インデックスを作成するため使用されます。
- 一意のキーは、列に null 値を保持する必要がある場合に使用できます。
- テーブルの 1 つまたは複数のフィールド/列がデータベース テーブル内のレコードを一意に識別する場合。
主キーと一意キーの違い
私の分析では、主キーと一意キーの主な違いは次のとおりです。
比較基準 | 主キー | 一意のキー |
---|---|---|
キーの数 | テーブルには主キーが XNUMX つ存在できます | テーブル内には複数の一意のキーが存在する可能性があります |
NULL | NULL 列は許可されません。 | NULL 列を許可します。 |
目次 | デフォルトのインデックスはクラスター化されています | デフォルトのインデックスは非クラスター化です |
目的 | 主キーの目的は、エンティティの整合性を強制することです。 | 一意のキーの目的は、一意のデータを強制することです。 |
これは、データベース テーブル内の各レコードまたは行を一意に識別できるようにする SQL 制約です。 | これは、データベース テーブル内の 2 つの独立したレコードに同じ値を割り当てることを許可しない SQL 制約です。 | |
値の変更 | 主キーでは、重複キーは許可されません。 | 一意のキーでは、XNUMX つ以上のキー部分が null の場合、重複キーが許可されます。 |
構文 |
主キーは次の構文を使用して作成できます。 CREATE TABLE Employee ( ID int PRIMARY KEY, Name varchar(255), City varchar(150) ) |
一意のキーは次の構文を使用して作成できます。 CREATE TABLE Employee ( ID int UNIQUE. Name varchar(255) NOT NULL. City varchar(150) ) |
以下を探索することもできます。 主キーと外部キーの違い
主キーと一意キーのどちらかを選択する方法
- 重複を含めるべきではないことがわかっている列がある場合は、一意のキーの方が適しています。
- 主キーは、テーブル内に null を保持できない場合に最適です。別のテーブルに外部キーを持ってリレーションシップを作成する場合にも使用できます。