Jump to content

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

(Перенаправлено с первичных ключей )

В системах управления реляционными базами данных уникальный ключ является потенциальным ключом . Все потенциальные ключи отношения могут однозначно идентифицировать записи отношения, но только один из них используется в качестве первичного ключа отношения. Остальные потенциальные ключи называются уникальными ключами, поскольку они могут однозначно идентифицировать запись в отношении. Уникальные ключи могут состоять из нескольких столбцов. Уникальные ключи также называются альтернативными ключами . Уникальные ключи являются альтернативой первичному ключу отношения. В 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,
     ...
  )

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

[ редактировать ]

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

  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 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 762a1373b26186ce0bef6239b4b09818__1714059660
URL1:https://arc.ask3.ru/arc/aa/76/18/762a1373b26186ce0bef6239b4b09818.html
Заголовок, (Title) документа по адресу, URL1:
Unique key - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)