Эта статья в значительной степени или полностью основана на одном источнике . ( июнь 2018 г. ) |
В реляционной модели из баз данных , первичный ключ является конкретным выбором из минимального набора атрибутов ( столбцы ) , которые однозначно определить кортеж ( строка ) в соотношении ( таблицах ). [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 , но обычно не используются для объединения нескольких таблиц.
См. Также [ править ]
- Натуральный ключ
- Суперключ
- Уникальный ключ
Примечание [ править ]
- ^ Соответствующие термины являются соответственно теоретическими (атрибут, кортеж, отношение) и конкретными (столбец, строка, таблица).
- ^ С достаточной точностью, два человека не могут родиться в одном и том же месте в одно и то же мгновение.
Ссылки [ править ]
- ^ «Добавить или изменить первичный ключ таблицы в Access» . Microsoft . Проверено 20 января 2020 года .
Первичный ключ - это поле или набор полей со значениями, уникальными для всей таблицы.
- ^ «Программист как навигатор» . Portal.acm.org. DOI : 10.1145 / 355611.362534 . Проверено 1 октября 2012 .
- ^ Альтернативный ключ - Oracle FAQ