stringtranslate.com

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

В системах управления реляционными базами данных уникальный ключ является потенциальным ключом . Все потенциальные ключи отношения могут однозначно идентифицировать записи отношения, но только один из них используется в качестве первичного ключа отношения. Остальные потенциальные ключи называются уникальными ключами, поскольку они могут однозначно идентифицировать запись в отношении. Уникальные ключи могут состоять из нескольких столбцов. Уникальные ключи также называются альтернативными ключами . Уникальные ключи являются альтернативой первичному ключу отношения. В SQL уникальным ключам присвоено UNIQUE ограничение , чтобы предотвратить дублирование (дубликат записи недействителен в уникальном столбце). Альтернативные ключи могут использоваться как первичный ключ при выборе одной таблицы или при фильтрации в предложенииwhere , но обычно не используются для объединения нескольких таблиц.

Краткое содержание

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

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

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

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

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

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

Схема таблицы авторов :  Автор ( идентификатор , имя , адрес , место рождения )   Схема таблицы книг :  Книга ( ISBN , ID автора , название , издательство , цена )    

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

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

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

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

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

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

 ALTER TABLE < идентификатор таблицы > ADD [ CONSTRAINT < идентификатор ограничения > ] { ПЕРВИЧНЫЙ КЛЮЧ | UNIQUE } ( < имя столбца > [ { , < имя столбца > } ... ] )                          

Аналогично, ключи могут быть определены как часть оператора CREATE TABLESQL.

 CREATE TABLE имя_таблицы ( id_col INT , col2 CHARACTER VARYING ( 20 ), key_col SMALLINT NOT NULL , ... CONSTRAINT key_unique UNIQUE ( key_col ), ... )                  
 CREATE TABLE имя_таблицы ( id_col INT PRIMARY KEY , col2 CHARACTER VARYING ( 20 ), ... key_col SMALLINT NOT NULL UNIQUE , ... )                  

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

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

  1. Первичный ключ не может допускать значение 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. ^ Краткое изложение SQL ANSI/ISO/IEC. Архивировано 25 апреля 2012 г. на Wayback Machine.
  3. ^ «Ограничения — Справочный материал по базе данных SQL — Изучите sql, прочитайте руководство по sql, следуйте учебнику по sql или узнайте, как структурировать SQL-запрос!». www.sql.org . Проверено 16 августа 2018 г.
  4. ^ «Сравнение различных реализаций SQL». troels.arvin.dk . Проверено 16 августа 2018 г.

Внешние ссылки