Описание тега primary-key

Ключ - это набор атрибутов, который является неснижаемо уникальным и не допускающим значения NULL в таблице.

Ключ - это набор атрибутов, который является неснижаемо уникальным и не допускающим значения 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),
    ...
)