Уникальный ключ
В системах управления реляционными базами данных уникальный ключ является потенциальным ключом . Все потенциальные ключи отношения могут однозначно идентифицировать записи отношения, но только один из них используется в качестве первичного ключа отношения. Остальные потенциальные ключи называются уникальными ключами, поскольку они могут однозначно идентифицировать запись в отношении. Уникальные ключи могут состоять из нескольких столбцов. Уникальные ключи также называются альтернативными ключами . Уникальные ключи являются альтернативой первичному ключу отношения. В SQL уникальные ключи имеют UNIQUE
ограничение, назначенное им для предотвращения дублирования (дубликат записи недопустим в уникальном столбце). Альтернативные ключи могут использоваться как первичный ключ при выборе одной таблицы или при фильтрации в предложенииwhere , но обычно не используются для объединения нескольких таблиц.
Краткое содержание
[ редактировать ]Ключи предоставляют пользователям базы данных и прикладному программному обеспечению средства идентификации, доступа и обновления информации в таблице базы данных. В каждой таблице может быть несколько ключей. Например, в таблице сотрудников и номер сотрудника, и имя входа уникальны. Применение ключевого ограничения (т. е. ограничения уникальности) в таблице также является функцией целостности данных базы данных. СУБД предотвращает обновления, которые могут привести к дублированию значений ключей, и тем самым гарантирует, что таблицы всегда соответствуют желаемым правилам уникальности. Поэтому правильный выбор ключей при проектировании базы данных является важным аспектом целостности базы данных.
Таблица реляционной базы данных может иметь один или несколько доступных уникальных ключей (формально называемых ключами-кандидатами ). Один из этих ключей в таблице может быть назначен первичным ключом ; другие ключи называются альтернативными ключами .
Любой ключ может состоять из одного или нескольких атрибутов. Например, номер социального страхования может быть единственным ключом атрибута для сотрудника; комбинация номера рейса и даты может быть ключом, состоящим из двух атрибутов для регулярного рейса.
Существует несколько типов ключей, используемых при моделировании и реализации баз данных.
Имя ключа | Определение |
---|---|
Простой | Ключ, состоящий только из одного атрибута. |
Объединенный | Ключ, состоящий из нескольких атрибутов, объединенных в один ключ, например часть или полное имя с добавленным номером, сгенерированным системой, который часто используется для электронной почты адресов . |
Сложный | Ключ, состоящий как минимум из двух атрибутов или простых ключей. В составном ключе существуют только простые ключи. |
Композитный | Подобно составному ключу, но отдельные атрибуты не обязательно должны быть простыми ключами. |
Естественный | Ключ, созданный на основе данных, существующих за пределами текущей базы данных. Другими словами, данные не генерируются системой, например номер социального страхования, импортированный из другой системы. |
Суррогатное материнство | Искусственный ключ, созданный на основе данных, которые назначаются или генерируются системой при наличии другого потенциального ключа. Суррогатные ключи обычно представляют собой числовые значения идентификаторов и часто используются из соображений производительности. [ нужна ссылка ] |
Кандидат | Ключ, который может стать первичным ключом. |
Начальный | Ключ, выбранный в качестве первичного ключа. Только один ключ внутри сущности выбирается в качестве первичного ключа. Это ключ, который разрешено мигрировать в другие объекты для определения отношений, существующих между объектами. Когда модель данных создается в физической базе данных, это ключ, который система использует чаще всего при доступе к таблице или объединении таблиц при выборе данных. |
Альтернативный | Непервичный ключ, который можно использовать для идентификации только одной строки таблицы. Альтернативные ключи могут использоваться как первичный ключ при выборе одной таблицы. |
Иностранный | Ключ, который перекочевал в другую сущность. |
В самом простом определении «ключ — это уникальный идентификатор». [ 1 ] поэтому уникальный ключ - это плеоназм . Ключи, находящиеся внутри исходного объекта, уникальны внутри этого объекта. Ключи, которые переносятся в другую сущность, могут быть или не быть уникальными, в зависимости от конструкции и того, как они используются в другой таблице. Внешние ключи могут быть первичным ключом в другой таблице; например, PersonID может стать идентификатором сотрудника в таблице сотрудников. В этом случае идентификатор сотрудника является одновременно внешним ключом и уникальным первичным ключом, что означает, что таблицы имеют связь 1:1. В случае, когда сущность-физическое лицо содержит идентификатор биологического отца, не ожидается, что идентификатор отца будет уникальным, поскольку у отца может быть более одного ребенка.
Вот пример первичного ключа, который становится внешним ключом в связанной таблице. ID переносится из таблицы «Автор» в таблицу «Книги».
Author Table Schema:
Author(ID, Name, Address, Born)
Book Table Schema:
Book(ISBN, AuthorID, Title, Publisher, Price)
Здесь идентификатор служит первичным ключом в таблице «Автор», но также и идентификатор автора служит внешним ключом в таблице «Книга». Внешний ключ служит связью и, следовательно, соединением между двумя связанными таблицами в этом образце базы данных.
В реляционной базе данных потенциальный ключ однозначно идентифицирует каждую строку значений данных в таблице базы данных. Кандидатный ключ состоит из одного столбца или набора столбцов в одной таблице базы данных. Никакие две разные строки или записи данных в таблице базы данных не могут иметь одинаковое значение данных (или комбинацию значений данных) в этих потенциальных ключевых столбцах, поскольку значения NULL не используются. В зависимости от конструкции таблица базы данных может иметь множество ключей-кандидатов, но не более одного ключа-кандидата можно выделить в качестве первичного ключа.
Ключевое ограничение применяется к набору кортежей в таблице в любой заданный момент времени. Ключ не обязательно является уникальным идентификатором среди всех возможных экземпляров кортежей, которые могут храниться в таблице, но он подразумевает правило целостности данных, согласно которому дубликаты не должны допускаться в таблице базы данных. Некоторыми возможными примерами ключей являются номера социального страхования , ISBN , регистрационные номера транспортных средств или имена пользователей.
В принципе, на любой ключ могут ссылаться внешние ключи. SQL Некоторые СУБД допускают ограничение внешнего ключа только для первичного ключа, но большинство систем допускают ограничение внешнего ключа для ссылки на любой ключ таблицы.
Определение ключей в SQL
[ редактировать ]Определение ключей в SQL:
ALTER TABLE <table identifier>
ADD [ CONSTRAINT <constraint identifier> ]
{ PRIMARY KEY | UNIQUE } ( <column name> [ {, <column name>}... ] )
Аналогично, ключи могут быть определены как часть CREATE TABLE
SQL-заявление.
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 (первичный ключ не может быть определен для столбцов, допускающих значение NULL).
- Каждая таблица не может иметь более одного первичного ключа.
- В некоторых СУБД первичный ключ по умолчанию генерирует кластерный индекс .
Уникальное ограничение
- Ограничение уникальности может быть определено для столбцов, допускающих значения NULL; в этом случае строки, содержащие значения NULL, на самом деле могут быть не уникальными в наборе столбцов, определенных ограничением.
- Каждая таблица может иметь несколько уникальных ограничений.
- В некоторых СУБД ограничение уникальности по умолчанию генерирует некластеризованный индекс .
Обратите внимание, что в отличие от ограничения PRIMARY KEY ограничение UNIQUE не подразумевает NOT NULL для столбцов, участвующих в ограничении. Необходимо указать NOT NULL, чтобы сделать столбец(и) ключевым. Можно наложить ограничения UNIQUE на столбцы, допускающие значение NULL, но стандарт SQL гласит, что ограничение не гарантирует уникальность столбцов, допускающих значение NULL (уникальность не обеспечивается для строк, в которых любой из столбцов содержит значение NULL).
По данным SQL [ 2 ] Стандартное ограничение уникальности не обеспечивает уникальность при наличии нулевых значений и поэтому может содержать несколько строк с одинаковыми комбинациями нулевых и ненулевых значений — однако не все СУБД реализуют эту функцию в соответствии со стандартом SQL. [ 3 ] [ 4 ]
См. также
[ редактировать ]- Глобальный уникальный идентификатор (GUID), также известный как универсальный уникальный идентификатор (UUID).
- Постоянный идентификатор объекта (POID), уникальный идентификатор записи в таблице, используемый в качестве первичного ключа.
Ссылки
[ редактировать ]- ^ Авад, Элиас (1985), Системный анализ и проектирование, второе издание , Ричард Д. Ирвин, Inc., ISBN 0-256-02824-9
- ^ Краткое изложение SQL ANSI/ISO/IEC. Архивировано 25 апреля 2012 г. на Wayback Machine.
- ^ «Ограничения — Справочный материал по базе данных SQL — Изучите sql, прочитайте руководство по sql, следуйте учебнику по sql или узнайте, как структурировать SQL-запрос!» . www.sql.org . Проверено 16 августа 2018 г.
- ^ «Сравнение различных реализаций SQL» . troels.arvin.dk . Проверено 16 августа 2018 г.
Внешние ссылки
[ редактировать ]- Техническое задание реляционной базы данных, Ключи : обзор различных типов ключей в СУБД.