Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Первичный ключ может состоять из реальных наблюдаемых объектов, и в этом случае он называется естественным ключом , а атрибут, созданный для работы в качестве ключа и не используемый для идентификации вне базы данных, называется суррогатным ключом . Например, для базы данных людей (определенной национальности) время и место рождения могут быть естественным ключом. [b] Национальный идентификационный номер - еще один пример атрибута, который может использоваться в качестве естественного ключа.

История [ править ]

Хотя в настоящее время термин «первичный ключ» используется в основном в контексте реляционной базы данных, он предшествует реляционной модели и также используется в других моделях баз данных. Чарльз Бахман в своем определении навигационной базы данных был первым, кто определил первичные ключи. [2]

Дизайн [ править ]

В терминах реляционной базы данных первичный ключ не отличается по форме или функциям от ключа, который не является первичным. На практике различные мотивы могут определять выбор одного ключа в качестве первичного по сравнению с другим. Обозначение первичного ключа может указывать «предпочтительный» идентификатор для данных в таблице, или то, что первичный ключ должен использоваться для ссылок на внешние ключи из других таблиц, или он может указывать на некоторые другие технические, а не семантические особенности таблицы. Некоторые языки и программное обеспечение имеют специальные синтаксические функции, которые можно использовать для идентификации первичного ключа как такового (например, ограничение PRIMARY KEY в SQL).

Реляционная модель, выраженная через реляционное исчисление и реляционную алгебру, не делает различий между первичными ключами и другими типами ключей. Первичные ключи были добавлены в стандарт SQL в основном для удобства программистов. [ необходима цитата ]

Определение первичных ключей в SQL [ править ]

Первичные ключи определены в стандарте ISO SQL посредством ограничения PRIMARY KEY. Синтаксис для добавления такого ограничения к существующей таблице определен в SQL: 2003 следующим образом:

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

Первичный ключ также можно указать непосредственно во время создания таблицы. В стандарте SQL первичные ключи могут состоять из одного или нескольких столбцов. Каждый столбец, участвующий в первичном ключе, неявно определяется как NOT NULL. Обратите внимание, что некоторые СУБД требуют явной пометки столбцов первичного ключа как NOT NULL. [ необходима цитата ]

СОЗДАТЬ  ТАБЛИЦУ  имя_таблицы  (  ... )

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

CREATE  TABLE  table_name  (  id_col  INT  PRIMARY  KEY ,  col2  ХАРАКТЕР  VARYING ( 20 ),  ... )

Суррогатные ключи [ править ]

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

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

Из-за популярности суррогатных первичных ключей многие разработчики, а в некоторых случаях даже теоретики стали рассматривать суррогатные первичные ключи как неотъемлемую часть реляционной модели данных. Это во многом связано с миграцией принципов из модели объектно-ориентированного программирования в модель реляционной, создавая гибридную объектно-реляционную модель. В ORM, подобном шаблону активной записи , эти дополнительные ограничения накладываются на первичные ключи:

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

Однако ни одно из этих ограничений не является частью реляционной модели или какого-либо стандарта SQL. Следует проявлять должную осмотрительность при принятии решения о неизменности значений первичных ключей во время разработки базы данных и приложения. Некоторые системы баз данных даже подразумевают, что значения в столбцах первичного ключа нельзя изменить с помощью UPDATEоператора SQL. [ необходима цитата ]

Альтернативный ключ [ править ]

Обычно в качестве первичного ключа выбирается один ключ-кандидат. Другие ключи-кандидаты становятся альтернативными ключами, каждому из которых может быть назначено уникальное ограничение для предотвращения дублирования (повторяющаяся запись не действительна в уникальном столбце). [3]

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

См. Также [ править ]

  • Натуральный ключ
  • Суперключ
  • Уникальный ключ

Примечание [ править ]

  1. ^ Соответствующие термины являются соответственно теоретическими (атрибут, кортеж, отношение) и конкретными (столбец, строка, таблица).
  2. ^ С достаточной точностью, два человека не могут родиться в одном и том же месте в одно и то же мгновение.

Ссылки [ править ]

  1. ^ «Добавить или изменить первичный ключ таблицы в Access» . Microsoft . Проверено 20 января 2020 года . Первичный ключ - это поле или набор полей со значениями, уникальными для всей таблицы.
  2. ^ «Программист как навигатор» . Portal.acm.org. DOI : 10.1145 / 355611.362534 . Проверено 1 октября 2012 .
  3. ^ Альтернативный ключ - Oracle FAQ