PRIMARY KEY 制約

テーブルには通常、テーブルの各行を一意に識別する値が格納された単一の列または複数の列の組み合わせがあります。この列、または列の組み合わせを、テーブルの主キー (PK) と呼び、テーブルのエンティティが整合性を持つようにします。テーブルを作成または変更するとき、PRIMARY KEY 制約を定義して主キーを作成できます。

1 つのテーブルに定義できる PRIMARY KEY 制約は 1 つだけであり、PRIMARY KEY 制約が定義された列には NULL 値を格納できません。PRIMARY KEY 制約は一意なデータを保証するものなので、PRIMARY KEY 制約は通常、ID 列に対して定義します。

PRIMARY KEY 制約をテーブルに対して指定すると、データベース エンジンでは、一意なインデックスを主キー列に対して作成して、データが一意になるようにします。また、クエリの中で主キーが使用された場合は、このインデックスによってデータに高速にアクセスできます。したがって、主キーとして使用する列は一意インデックスの作成規則に従う必要があります。

複数の列に PRIMARY KEY 制約が定義されている場合は、1 つの列内で値が重複してもかまいませんが、PRIMARY KEY 制約が定義された列に格納される値の組み合わせは一意でなければなりません。

次の図に示すように、このテーブルの複合 PRIMARY KEY 制約は、Purchasing.ProductVendor テーブルの ProductID 列と VendorID 列により作成されています。このため、ProductIDVendorID の組み合わせは必ず一意になります。

複合 PRIMARY KEY 制約

結合操作を行うと、PRIMARY KEY 制約はテーブルとテーブルを関係付けます。たとえば、どのベンダがどの製品を提供するのかを判断するには、Purchasing.Vendor テーブル、Production.Product テーブル、および Purchasing.ProductVendor テーブル間で 3 方向の結合を使用できます。ProductVendor テーブルには ProductID 列と VendorID 列の両方があるので、Product テーブルと Vendor テーブルはどちらも ProductVendor テーブルとのリレーションシップを使用してアクセスできます。