Interested Article - Уникальный ключ
- 2021-04-17
- 1
В реляционных СУБД — это потенциальный ключ , который не является первичным ключом отношения [ источник не указан 214 дней ] . Все потенциальные ключи отношения могут однозначно идентифицировать записи отношения, но только один из них используется в качестве первичного ключа отношения . Остальные ключи-кандидаты называются уникальными ключами, поскольку они могут однозначно идентифицировать запись в отношении. Уникальные ключи могут состоять из нескольких столбцов. Уникальные ключи также называются альтернативными ключами [ источник не указан 214 дней ] . Уникальные ключи являются альтернативой первичному ключу отношения. Как правило, уникальные ключи имеют ограничение UNIQUE.
Определение в SQL
Определение ограничение уникальности в синтаксисе SQL:
ALTER TABLE <table identifier>
ADD [ CONSTRAINT <constraint identifier> ]
{ PRIMARY KEY | UNIQUE } ( <column name> [ {, <column name>}... ] )
Также, ключи могут быть определены при создании таблицы
CREATE TABLE
.
CREATE TABLE table_name (
id_col INT,
col2 CHARACTER VARYING(20),
key_col SMALLINT NOT NULL,
...
CONSTRAINT key_unique UNIQUE(key_col),
...
)
CREATE TABLE table_name (
id_col INT PRIMARY KEY,
col2 CHARACTER VARYING(20),
...
key_col SMALLINT NOT NULL UNIQUE,
...
)
Различия между первичным и уникальным ключом
Свойства первичного ключа
В первичном ключе не допускается значение NULL (его нельзя определить для столбцов, допускающих такое значение). Каждая таблица не может иметь более одного первичного ключа. В некоторых СУБД первичный ключ по умолчанию создаёт кластеризованный индекс. В практических реализациях SQL первичный ключ в некоторых таблицах может отсутствовать .
Свойства уникального ключа
Ограничение уникальности может быть задано для столбцов, которые допускают значения NULL, и в этом случае строки, содержащие значения NULL, могут фактически не быть уникальными в наборе столбцов, определённых ограничением.
Каждая таблица может иметь несколько уникальных ключей. В некоторых СУБД уникальное ограничение по умолчанию создаёт некластеризованный индекс.
Обратите внимание, что в отличие от ограничения PRIMARY KEY ограничение UNIQUE не означает NOT NULL для столбцов, участвующих в ограничении. Если нужно запретить значение NULL, необходимо указать ограничение NOT NULL дополнительно. Можно установить ограничения UNIQUE для столбцов, допускающих значение NULL, но в стандарте SQL указано, что ограничение не гарантирует уникальность столбцов, допускающих значение NULL (уникальность не применяется для строк, в которых любой из столбцов содержит значение NULL).
В соответствии со стандартом SQL, ограничение уникальности не обеспечивает уникальность при наличии значений NULL и поэтому может содержать несколько строк с идентичными комбинациями пустых и непустых значений — однако не все СУБД реализуют эту функцию в соответствии со стандартом SQL .
Ссылки
- : An overview of the different types of keys in an RDBMS
Примечания
- ↑ Сергей Кузнецов. . citforum.ru . Дата обращения: 24 апреля 2022. 10 мая 2022 года.
- www.sql.org . Дата обращения: 16 августа 2018. 28 июля 2021 года.
- . troels.arvin.dk . Дата обращения: 16 августа 2018. 9 марта 2005 года.
- 2021-04-17
- 1