Уникальный ключ - Unique key

В базе данных реляционное моделирование и реализация, уникальный ключ (также известный как кандидат ключ или просто ключ) это набор атрибутов (столбцов) в таблице реляционной базы данных (также называемой связь ), такое что:

  1. в таблице нет двух отдельных строк или записей с одинаковыми значениями для этих столбцов;
  2. этот набор столбцов минимален; т.е. удаление любого столбца из ключа приведет к дублированию значений в результирующем подмножестве.

Когда столбец или набор столбцов определяется как уникальный для система управления базами данных, система проверяет уникальность каждого набора значений перед назначением ограничение. После того, как столбцы будут определены как уникальные, произойдет ошибка, если будет предпринята попытка вставки с уже существующими значениями. Некоторые системы не позволяют обновлять ключевые значения, все системы не допускают дублирования. Это гарантирует, что уникальность сохраняется как в основной таблице, так и во всех отношениях, которые позже к ней привязываются.

Резюме

Ключи предоставляют пользователям базы данных и прикладному программному обеспечению средства для идентификации, доступа и обновления информации в таблице базы данных. В любой таблице может быть несколько ключей. Например, в таблице сотрудников и номер сотрудника, и имя пользователя уникальны. Применение ключевого ограничения (т. Е. Ограничения уникальности) в таблице также является функцией целостности данных в базе данных. СУБД предотвращает обновления, которые могут привести к дублированию значений ключей, и тем самым гарантирует, что таблицы всегда соответствуют желаемым правилам уникальности. Следовательно, правильный выбор ключей при проектировании базы данных является важным аспектом целостности базы данных.

Таблица реляционной базы данных может иметь один или несколько доступных уникальных ключей (формально называемых ключи-кандидаты ). Один из этих ключей в таблице может быть обозначен как первичный ключ; другие ключи называются альтернативные ключи.

Любой ключ может состоять из одного или нескольких атрибутов. Например, ИНН может быть ключом одного атрибута для сотрудника; комбинация номера рейса и даты может быть ключом, состоящим из двух атрибутов для запланированного рейса.

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

Имя ключаОпределение
ПростойКлюч состоит только из одного атрибута.
КонкатенированныйКлюч, состоящий из нескольких атрибутов, объединенных в один ключ, например, часть или полное имя с добавленным номером, сгенерированным системой, как это часто используется для Электронное письмо адреса.
СложныйКлюч состоит как минимум из двух атрибутов или простых ключей, в составном ключе существуют только простые ключи.
КомпозитныйПодобно составному ключу, но отдельные атрибуты не обязательно должны быть простыми ключами.
ЕстественныйКлюч, созданный на основе данных, существующих вне текущей базы данных. Другими словами, данные не генерируются системой, например ИНН импортировано из другой системы.
СуррогатИскусственный ключ, созданный из данных, присвоенных системой или созданных, когда существует другой ключ-кандидат. Суррогатные ключи обычно представляют собой числовые значения идентификатора и часто используются по соображениям производительности.[нужна цитата ]
КандидатКлюч, который может стать первичным ключом.
НачальныйКлюч, выбранный в качестве первичного ключа. Только один ключ внутри объекта выбирается в качестве первичного ключа. Это ключ, которому разрешено переходить к другим объектам для определения отношений, существующих между объектами. Когда модель данных создается в физической базе данных, это ключ, который система использует больше всего при доступе к таблице или объединении таблиц при выборе данных.
АльтернативныйНепервичный ключ, который можно использовать для идентификации только одной строки в таблице. Альтернативные ключи могут использоваться как первичный ключ при выборе одной таблицы.
ИностранныйКлюч, перенесенный на другую сущность.

В самом общем виде «ключ - это уникальный идентификатор»,[1] так уникальный ключ это плеоназм. Ключи, которые находятся в исходной сущности, уникальны в этой сущности. Ключи, которые переносятся в другой объект, могут быть или не быть уникальными, в зависимости от конструкции и того, как они используются в другой таблице. Внешние ключи могут быть первичным ключом в другой таблице; например, PersonID может стать EmployeeID в таблице Employee. В этом случае EmployeeID является и внешним ключом, и уникальным первичным ключом, что означает, что таблицы имеют отношение 1: 1. В случае, когда физическое лицо содержало идентификатор биологического отца, не следует ожидать, что идентификатор отца будет уникальным, поскольку у отца может быть более одного ребенка.

Вот пример того, как первичный ключ становится внешним ключом связанной таблицы. ID переносится из таблицы "Автор" в таблицу "Книга".

Автор Стол Схема:Автор(Я БЫ, Имя, Адрес, Родившийся)Книга Стол Схема:Книга(ISBN, AuthorID, Заголовок, Издатель, Цена)

Здесь ID служит первичным ключом в таблице «Автор», но также как AuthorID служит Иностранный ключ в таблице "Книга". Внешний ключ служит связью и, следовательно, соединением между двумя связанными таблицами в этом примере базы данных.

В реляционной базе данных ключ-кандидат однозначно идентифицирует каждую строку значений данных в таблице базы данных. Ключ кандидата состоит из одного столбец или набор столбцов в одной таблице базы данных. Никакие две отдельные строки или записи данных в таблице базы данных не могут иметь одинаковое значение данных (или комбинацию значений данных) в этих столбцах ключей-кандидатов, поскольку значения NULL не используются. В зависимости от конструкции таблица базы данных может иметь много ключей-кандидатов, но в качестве первичного ключа можно выделить не более одного ключа-кандидата.

Ключевое ограничение применяется к набору кортежей в таблице в любой момент времени. Ключ не обязательно является уникальным идентификатором для всей совокупности возможный экземпляры кортежей, которые могут быть сохранены в таблице, но это подразумевает правило целостности данных, которое не должно допускать дублирования в таблице базы данных. Некоторые возможные примеры ключей: Номера социального страхования, ISBN, регистрационные номера автомобилей или имена пользователей.

В принципе, внешние ключи могут ссылаться на любой ключ. Немного SQL СУБД разрешает ограничение внешнего ключа только для первичного ключа, но большинство систем позволяют ограничению внешнего ключа ссылаться на любой ключ таблицы.

Определение ключей в SQL

Определение ключей в SQL:

  ИЗМЕНИТЬ СТОЛ <стол идентификатор>       ДОБАВИТЬ [ ОГРАНИЧЕНИЕ <ограничение идентификатор> ]       { НАЧАЛЬНЫЙ КЛЮЧ | УНИКАЛЬНЫЙ } ( <столбец имя> [ {, <столбец имя>}... ] )

Точно так же ключи можно определить как часть СОЗДАТЬ ТАБЛИЦУ Оператор SQL.

  СОЗДАЙТЕ СТОЛ table_name (     id_col   INT,     col2     ПЕРСОНАЖ РАЗЛИЧНЫЕ(20),     key_col  МАЛЕНЬКИЙ НЕТ НОЛЬ,     ...     ОГРАНИЧЕНИЕ key_unique УНИКАЛЬНЫЙ(key_col),     ...  )
  СОЗДАЙТЕ СТОЛ table_name (     id_col  INT  НАЧАЛЬНЫЙ КЛЮЧ,     col2    ПЕРСОНАЖ РАЗЛИЧНЫЕ(20),     ...     key_col  МАЛЕНЬКИЙ НЕТ НОЛЬ УНИКАЛЬНЫЙ,     ...  )

Различия между ограничением первичного ключа и ограничением уникальности

Ограничение первичного ключа

  1. Первичный ключ не можешь allow null (первичный ключ не может быть определен для столбцов, допускающих значения NULL).
  2. Каждая таблица не может иметь более одного первичного ключа.
  3. На некоторых СУБД первичный ключ генерирует кластерный индекс по умолчанию.

Уникальное ограничение

  1. Ограничение уникальности может быть определено для столбцов, которые допускают значения NULL, и в этом случае строки, содержащие значения NULL, могут фактически не быть уникальными в наборе столбцов, определенных ограничением.
  2. Каждая таблица может иметь несколько уникальных ограничений.
  3. На некоторых СУБД уникальное ограничение порождает некластеризованный индекс по умолчанию.

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

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

Смотрите также

Рекомендации

  1. ^ Авад, Элиас (1985), Системный анализ и дизайн, второе издание, Ричард Д. Ирвин, Inc., ISBN  0-256-02824-9
  2. ^ Резюме ANSI / ISO / IEC SQL В архиве 25 апреля 2012 г. Wayback Machine
  3. ^ «Ограничения - Справочные материалы по базе данных SQL - Изучите sql, прочтите руководство по sql, следуйте инструкциям по sql или узнайте, как структурировать запрос SQL!». www.sql.org. Получено 16 августа 2018.
  4. ^ «Сравнение различных реализаций SQL». troels.arvin.dk. Получено 16 августа 2018.

внешняя ссылка