Ограничения PRIMARY KEY

Обычно в таблице есть столбец или комбинация столбцов, содержащих значения, уникально определяющие каждую строку таблицы. Этот столбец, или столбцы, называются первичным ключом (PK) таблицы и обеспечивает целостность сущности таблицы. Можно создать первичный ключ, задав ограничение PRIMARY KEY при создании или изменении таблицы.

В таблице может быть только одно ограничение PRIMARY KEY, и столбец с данным ограничением не может содержать значения NULL. Из-за того, что ограничения PRIMARY KEY гарантируют уникальность данных, они часто определяются в столбце идентификаторов.

При задании для таблицы ограничения PRIMARY KEY компонент Database Engine гарантирует уникальность данных созданием уникального индекса для столбцов первичных ключей. Этот индекс также обеспечивает быстрый доступ к данным при использовании первичного ключа в запросах. Таким образом, выбранные первичные ключи должны соответствовать правилам создания уникальных индексов.

Если ограничение PRIMARY KEY задано более чем для одного столбца, то значения могут дублироваться в пределах одного столбца, но каждая комбинация значений всех столбцов в определении ограничения PRIMARY KEY должна быть уникальной.

Как показано на следующем рисунке, столбцы ProductID и VendorID таблицы Purchasing.ProductVendor формируют составное ограничение PRIMARY KEY для данной таблицы. Это гарантирует уникальность комбинации значений столбцов ProductID и VendorID.

Составное ограничение PRIMARY KEY

При работе с соединениями ограничения PRIMARY KEY связывают одну таблицу с другой. Например, для определения того, какие поставщики какие продукты поставляют, можно использовать тройное соединение таблиц Purchasing.Vendor, Production.Product и Purchasing.ProductVendor. Из-за того, что ProductVendor содержит одновременно столбцы ProductID и VendorID, доступ к таблице Product и к таблице Vendor может быть осуществлен благодаря их связи с таблицей ProductVendor.