Contraintes PRIMARY KEY
Une table contient généralement une colonne ou une combinaison de colonnes dont les valeurs identifient de façon unique chaque ligne dans la table. Cette colonne (ou ces colonnes), appelée clé primaire (PK, Primary Key), assure l'intégrité de l'entité de la table. Vous pouvez créer une clé primaire en définissant une contrainte PRIMARY KEY lorsque vous créez ou modifiez une table.
Une table ne peut comporter qu'une seule contrainte PRIMARY KEY, et une colonne impliquée dans la contrainte PRIMARY KEY ne peut pas accepter les valeurs NULL. Les contraintes PRIMARY KEY garantissent des données uniques, c'est pourquoi elles sont souvent définies pour une colonne d'identité.
Lorsque vous spécifiez une contrainte PRIMARY KEY pour une table, le Moteur de base de données garantit l'unicité des données en créant un index unique pour les colonnes de clé primaire. Cet index permet également l'accès rapide aux données lorsque la clé primaire est utilisée dans des requêtes. Par conséquent, les clés primaires choisies doivent respecter les règles de création d'index uniques.
Si une contrainte PRIMARY KEY est définie sur plusieurs colonnes, des valeurs peuvent apparaître en double dans une colonne, mais chaque combinaison de valeurs issue de toutes les colonnes de la définition de contrainte PRIMARY KEY doit être unique.
Comme illustré ci-dessous, les colonnes ProductID et VendorID de la table Purchasing.ProductVendor constituent une contrainte PRIMARY KEY composite pour cette table. Cela garantit l'unicité de la combinaison de ProductID et de VendorID.
Lorsque vous utilisez des jointures, les contraintes PRIMARY KEY associent une table à une autre. Par exemple, pour déterminer les distributeurs qui fournissent certains produits, vous pouvez utiliser une jointure tridirectionnelle entre les tables Purchasing.Vendor, Production.Product et Purchasing.ProductVendor. Comme ProductVendor contient à la fois les colonnes ProductID et VendorID, les tables Product et Vendor sont accessibles par leur relation à ProductVendor.
Voir aussi