logo

主キーと一意キーの違い

MySQL のキーは、1 つまたは 2 つ以上のテーブル間の関係を構築するために使用される列または列のセットです。これらは、テーブルのレコードにアクセスするためにも使用されます。どちらのキーも、テーブルまたはリレーション内の列または列セットの一意性を保証します。 これらの主な違いは、主キーがテーブル内の各レコードを識別し、一意キーが NULL 値を除いて列内の重複エントリを防止することです。 。この記事では、さまざまなパラメータに基づいて主キーと一意キーの本質的な違いを比較します。比較する前に、これらのキーについて簡単に説明します。

htmlタグ
主キーと一意のキー

主キーとは何ですか?

主キーは 一意か非 null そのテーブルまたはリレーション内のすべてのレコードを一意に識別するキー。主キー列には重複した値を格納できません。つまり、主キー列の値は常に一意です。とも呼ばれます 最小限のスーパーキー ;したがって、どのリレーションシップにも複数の主キーを指定することはできません。あるテーブルの主キー列は、別のテーブルの外部キー列から参照できます。

例えば という名前のテーブルがあります。 学生 Stud_ID、Roll_No、Name、Mobile、Email などの属性を使用します。

主キーと一意のキー

ここだけは、 ロール番号 列に同一の NULL 値を含めることはできません。私たちは、すべての生徒が固有のロール番号を持っていることを知っています。したがって、2 人の生徒が同じロール番号を持つことはありません。この機能は、データベース内の各レコードを一意に識別するのに役立ちます。したがって、Roll_No 属性を主キーにすることができます。

主キーの特徴

重要な主キー機能は次のとおりです。

  • 主キー列には重複した値を含めることはできません。
  • 主キーはテーブルのエンティティの整合性を実装します。
  • テーブルには複数の主キー列を含めることはできません。
  • 1 つ以上のテーブル フィールドから主キーを作成できます。
  • 主キー列には NOT NULL 制約が必要です。

固有キーとは何ですか?

一意のキー データベース レコードを一意に識別するための、テーブル内の単一の列または列の組み合わせです。固有のキー 防ぐ 保管から 重複した値 コラムで。主キー列とは異なり、テーブルには複数の一意キー列を含めることができます。このキーは主キーと似ていますが、一意のキー列に 1 つの NULL 値を格納できる点が異なります。一意のキーは次のように呼ばれます。 固有の制約 また、別のテーブルの外部キーによって参照することもできます。

例えば という名前の同じテーブルを考えてみましょう。 学生 Stud_ID、Roll_No、Name、Mobile、Email などの属性を使用します。

主キーと一意のキー

ここ スタッド_ID 各学生は一意の識別番号を持っている必要があるため、一意の制約として割り当てることができます。学生が大学を変更した場合、その学生は学生証を持たなくなります。その場合、エントリには ヌル 一意キー制約により NULL を格納できるため、値は 1 つだけである必要があります。

アンドロイドのイースターエッグとは何ですか

ユニークキーの特徴

重要な固有の主な機能は次のとおりです。

  • 1 つ以上のテーブル フィールドから一意のキーを構築できます。
  • テーブルでは複数の一意のキー列を定義できます。
  • デフォルトでは、一意のキーは非クラスター化一意のインデックス内にあります。
  • 一意制約列には NULL 値を格納できますが、列ごとに NULL が許可される NULL は 1 つだけです。
  • 外部キーは、テーブルの一意性を維持する際に一意性制約を参照できます。

主キーと一意キーの主な違い

次の点では、主キーと候補キーの主な違いについて説明します。

文字列javaの部分文字列
  • 主キーはテーブルの 1 つ以上のフィールドを構成し、テーブル内のレコードを一意に識別します。一方、一意のキーを使用すると、1 つの列に 2 つの行のエントリが重複することがなくなります。
  • リレーショナル データベースではテーブルに複数の主キーを持つことはできませんが、テーブルごとに複数の一意のキーを持つことができます。
  • 主キー列には NULL 値を含めることはできませんが、一意キーには NULL 値を含めることができますが、テーブル内で許可される NULL は 1 つだけです。
  • 主キーは一意である必要がありますが、一意のキーが必ずしも主キーになるとは限りません。
  • デフォルトの主キーはクラスター化インデックスであり、データは順次インデックスに物理的に編成されます。対照的に、一意のキーは一意の非クラスター化インデックスです。
  • 主キーはエンティティの整合性を実装するのに対し、一意キーは一意のデータを強制します。

主キーと一意キーの比較表

次の比較表は、それらの主な違いを簡単に説明しています。

比較基準 主キー 一意のキー
基本 主キーは、テーブル内の各レコードの一意の識別子として使用されます。 一意のキーは、テーブルに主キーが存在しない場合のレコードの一意の識別子でもあります。
ヌル NULL 値を主キー列に格納することはできません。 一意のキー列に NULL 値を格納できますが、許可される NULL は 1 つだけです。
目的 エンティティの整合性を強制します。 固有のデータを強制します。
索引 デフォルトでは、主キーによってクラスター化インデックスが作成されます。 デフォルトでは、一意のキーにより非クラスター化インデックスが作成されます。
キーの数 各テーブルは主キーを 1 つだけサポートします。 テーブルには複数の一意のキーを持つことができます。
値の変更 主キーの値を変更または削除することはできません。 一意のキー列の値を変更できます。
用途 テーブル内の各レコードを識別するために使用されます。 これにより、NULL 値を除き、重複したエントリが列に格納されるのを防ぎます。
構文 以下の構文を使用して、テーブルに主キー列を作成できます。
CREATE TABLE Employee ( Id INT PRIMARY KEY, name VARCHAR(150), address VARCHAR(250) )
以下の構文を使用して、テーブル内に一意のキー列を作成できます。
CREATE TABLE Person ( Id INT UNIQUE, name VARCHAR(150), address VARCHAR(250) )

結論

この記事では、主キー制約と一意キー制約を比較しました。ここで、列に重複した値が含まれないようにしたい場合には、一意のキーが役立つという結論に達しました。主キーはテーブルに NULL 値を保持したくない場合に便利です。また、テーブル間にリレーションシップを作成するために別のテーブルに外部キーがある場合にも理想的です。