Лучшие вопросы
Таймлайн
Чат
Перспективы

Уникальный ключ

Из Википедии, свободной энциклопедии

Remove ads

В реляционных СУБД уникальный ключ — это потенциальный ключ, который не является первичным ключом отношения[источник не указан 860 дней]. Все потенциальные ключи отношения могут однозначно идентифицировать записи отношения, но только один из них используется в качестве первичного ключа отношения[1]. Остальные ключи-кандидаты называются уникальными ключами, поскольку они могут однозначно идентифицировать запись в отношении. Уникальные ключи могут состоять из нескольких столбцов. Уникальные ключи также называются альтернативными ключами[источник не указан 860 дней]. Уникальные ключи являются альтернативой первичному ключу отношения. Как правило, уникальные ключи имеют ограничение UNIQUE.

Remove ads

Определение в 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 первичный ключ в некоторых таблицах может отсутствовать[1].

Свойства уникального ключа

Ограничение уникальности может быть задано для столбцов, которые допускают значения NULL, и в этом случае строки, содержащие значения NULL, могут фактически не быть уникальными в наборе столбцов, определённых ограничением.

Каждая таблица может иметь несколько уникальных ключей. В некоторых СУБД уникальное ограничение по умолчанию создаёт некластеризованный индекс.

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

В соответствии со стандартом SQL, ограничение уникальности не обеспечивает уникальность при наличии значений NULL и поэтому может содержать несколько строк с идентичными комбинациями пустых и непустых значений — однако не все СУБД реализуют эту функцию в соответствии со стандартом SQL[2][3].

Remove ads

Ссылки

Примечания

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads