Описание тега primary-key
Ключ - это набор атрибутов, который является неснижаемо уникальным и не допускающим значения NULL в таблице. Неснижаемый означает, что все атрибуты ключа необходимы для гарантии уникальности - удалите любой один атрибут, и свойство уникальности будет потеряно. Ключ может состоять из нуля, одного или нескольких атрибутов, а реляционная таблица (переменная отношения) должна иметь по крайней мере один ключ и может иметь более одного.
Если таблица имеет более одного ключа, то по соглашению один из ключей обозначается как первичный (то есть он является предпочтительным идентификатором или имеет какое-либо другое значение для разработчика базы данных или пользователя). Остальные называются вторичными или альтернативными ключами.
При проектировании реляционной базы данных первичный ключ часто является тем, на который ссылаются внешние ключи в других таблицах. Однако это не всегда так. В принципе, первичный ключ по функциям или функциям не отличается от непервичного ключа. Вprimary-key
Таким образом, тег подходит для любого обсуждения ключей в целом.
Ключи более формально известны как ключи-кандидаты или минимальные суперключи.
Атрибуты ключа называются первичными атрибутами. Атрибуты, не входящие в состав ключа, называются непростыми.
В SQL ключи в таблицах необязательны. Первичные ключи определены в стандарте ISO SQL с помощью ограничения PRIMARY KEY. Синтаксис для добавления такого ограничения к существующей таблице определен в SQL:2003 следующим образом:
ALTER TABLE <TABLE identifier>
ADD [ CONSTRAINT <CONSTRAINT identifier> ]
PRIMARY KEY ( <COLUMN expression> {, <COLUMN expression>}... )
Первичный ключ также можно указать непосредственно при создании таблицы. В стандарте SQL первичные ключи могут состоять из одного или нескольких столбцов. Каждый столбец, участвующий в первичном ключе, неявно определяется какNOT NULL
. Обратите внимание, что некоторые СУБД требуют явной пометки столбцов первичного ключа какNOT NULL
.
CREATE TABLE TABLE_NAME (
id_col INT,
col2 CHARACTER VARYING(20),
...
CONSTRAINT tab_pk PRIMARY KEY(id_col),
...
)
Если первичный ключ состоит только из одного столбца, столбец можно пометить как таковой, используя следующий синтаксис:
CREATE TABLE TABLE_NAME (
id_col INT PRIMARY KEY,
col2 CHARACTER VARYING(20),
...
)