web-dev-qa-db-ja.com

SQL-一意のキー、主キー、および外部キー

SQLの概念に関する一意のキー、主キー外部キーの違いは何ですか?

それらはどのように互いに異なっていますか?

8
Jaipal Reddy K

PRIMARYキー制約とUNIQUEキー制約はどちらも類似しており、定義されている列の一意性を強制的に一意にします。

主キー

  • 主キーにNULL値を含めることはできません。
  • 各テーブルには、1つの主キーのみを含めることができます。
  • 既定では、プライマリキーはクラスター化インデックスであり、データベーステーブルのデータはクラスター化インデックスの順序で物理的に編成されます。
  • 主キーは、外部キーとして別のテーブルに関連付けることができます。
  • Auto Incrementフィールドを使用して、IDを自動的に生成できます。主キーは自動増分値をサポートします。

ユニークキー

  • 一意の制約にはNULL値が含まれる場合があります。
  • 各テーブルには、複数の一意の制約を設定できます。
  • 既定では、一意のキーは一意の非クラスター化インデックスです。
  • 一意の制約は、外部キーとして別のテーブルに関連付けることはできません。
  • 一意の制約は、自動インクリメント値をサポートしていません。

Foreign Key

  • 外部キーは、別のテーブルの主キーであるテーブル内のフィールドです。
  • 外部キーは複数のヌル値を受け入れることができます。
  • 外部キーは、クラスター化または非クラスター化のインデックスを自動的に作成しません。外部キーにインデックスを手動で作成できます。
  • テーブルには複数の外部キーを含めることができます。
  • クラスタ化インデックスで外部キーをサポートすることには実際の利点がありますが、テーブルごとに1つしか取得できません。利点は何ですか?親とすべての子レコードを選択する場合、子レコードを隣り合わせにしたいでしょう。これは、クラスター化インデックスを使用して簡単に実現できます。
  • 通常、nullの外部キーを持つことは悪い考えです。以下の例では、[dbo]。[child]のレコードは「孤立レコード」と呼ばれるものです。これを行う前に、よく考えてください。
23
Jaipal Reddy K

注:データの整合性を強化するために制約を使用します

主キー
1)null値を挿入できません
2)1つのテーブルに1つの主キーがあります

一意キー1)一度に1つのヌル値を挿入します2)1つのテーブルに複数の一意キーがあります3)候補キーとしても参照できます

外部キー1)2つのテーブルと複数のテーブルの間の関係を維持します。注:制約なしでは複数のテーブルにデータを取得できますが、データを確実に取得することはできません。

1