Первичный ключ
Эта статья в значительной степени или полностью опирается на один источник . ( июнь 2021 г. ) |
В реляционной модели баз данных первичный ключ — это конкретный выбор минимального ) набора атрибутов ( столбцов ), которые однозначно определяют кортеж ( строку ) в отношении ( таблице . [а] [1] Неформально, первичный ключ — это «какие атрибуты идентифицируют запись», и в простых случаях он представляет собой один атрибут: уникальный идентификатор. Более формально, первичный ключ — это выбор ключа-кандидата (минимальный суперключ ); любой другой потенциальный ключ является альтернативным ключом .
Первичный ключ может состоять из реальных наблюдаемых объектов, и в этом случае он называется естественным ключом , а атрибут, созданный для функционирования в качестве ключа и не используемый для идентификации за пределами базы данных, называется суррогатным ключом . Например, для базы данных людей (определенной национальности) время и место рождения могут быть естественным ключом. [б] Национальный идентификационный номер — еще один пример атрибута, который можно использовать в качестве естественного ключа.
Дизайн [ править ]
С точки зрения реляционной базы данных, первичный ключ не отличается по форме или функции от ключа, который не является первичным. На практике выбор того или иного ключа в качестве основного по сравнению с другим может определяться различными мотивами. Обозначение первичного ключа может указывать на «предпочтительный» идентификатор данных в таблице или на то, что первичный ключ должен использоваться для ссылок на внешние ключи из других таблиц, или может указывать на некоторые другие технические, а не семантические особенности таблицы. Некоторые языки и программное обеспечение имеют специальные синтаксические функции, которые можно использовать для идентификации первичного ключа как такового (например, ограничение PRIMARY KEY в SQL).
Реляционная модель, выраженная посредством реляционного исчисления и реляционной алгебры, не делает различия между первичными ключами и другими видами ключей. Первичные ключи были добавлены в стандарт SQL главным образом для удобства программистов приложений. [ нужна ссылка ]
Первичные ключи могут быть инкрементируемым целым числом, универсальным уникальным идентификатором (UUID) или могут быть сгенерированы с использованием алгоритма Hi/Lo .
Определение первичных ключей в SQL [ править ]
Первичные ключи определены в стандарте ISO SQL через ограничение PRIMARY KEY. Синтаксис добавления такого ограничения в существующую таблицу определен в SQL:2003 следующим образом:
ALTER TABLE <table identifier>
ADD [ CONSTRAINT <constraint identifier> ]
PRIMARY KEY ( <column name> [ {, <column name> }... ] )
Первичный ключ также можно указать непосредственно во время создания таблицы. В стандарте SQL первичные ключи могут состоять из одного или нескольких столбцов. Каждый столбец, участвующий в первичном ключе, неявно определен как NOT NULL. Обратите внимание, что некоторые СУБД требуют явного обозначения столбцов первичного ключа как NOT NULL
. [ нужна ссылка ]
CREATE TABLE table_name (
...
)
Если первичный ключ состоит только из одного столбца, столбец можно пометить как таковой, используя следующий синтаксис:
CREATE TABLE table_name (
id_col INT PRIMARY KEY,
col2 CHARACTER VARYING(20),
...
)
Суррогатные ключи [ править ]
В некоторых случаях естественный ключ, который однозначно идентифицирует кортеж в отношении, может оказаться затруднительным для использования при разработке программного обеспечения. Например, оно может включать несколько столбцов или большие текстовые поля. В таких случаях суррогатный ключ в качестве первичного ключа можно использовать может существовать более одного потенциального ключа . В других ситуациях для отношения , и ни один из возможных ключей, очевидно, не является предпочтительным. Суррогатный ключ может использоваться в качестве первичного ключа, чтобы избежать искусственного превосходства одного ключа-кандидата над другими.
Поскольку первичные ключи существуют в первую очередь для удобства программиста, суррогатные первичные ключи часто используются, во многих случаях исключительно, при разработке приложений баз данных.
Из-за популярности суррогатных первичных ключей многие разработчики, а в некоторых случаях даже теоретики, стали рассматривать суррогатные первичные ключи как неотъемлемую часть реляционной модели данных. Во многом это связано с миграцией принципов из модели объектно-ориентированного программирования в реляционную модель, создавая гибридную объектно-реляционную модель. В ORM , подобном шаблоне активной записи , эти дополнительные ограничения накладываются на первичные ключи:
- Первичные ключи должны быть неизменяемыми, то есть никогда не меняться и не использоваться повторно; их следует удалить вместе с соответствующей записью.
- Первичные ключи должны представлять собой анонимные целочисленные или числовые идентификаторы.
Однако ни одно из этих ограничений не является частью реляционной модели или какого-либо стандарта SQL. Должную осмотрительность следует применять при принятии решения о неизменности значений первичного ключа во время проектирования базы данных и приложения. Некоторые системы баз данных даже подразумевают, что значения в столбцах первичного ключа не могут быть изменены с помощью UPDATE
SQL-заявление. [ нужна ссылка ]
Альтернативный ключ [ править ]
Обычно в качестве первичного ключа выбирается один потенциальный ключ. Другие возможные ключи становятся альтернативными ключами, каждый из которых может иметь UNIQUE
назначенное ему ограничение для предотвращения дублирования (дубликат записи недопустим в уникальном столбце). [2]
Альтернативные ключи могут использоваться как первичный ключ при выборе одной таблицы или при фильтрации в предложенииwhere , но обычно не используются для объединения нескольких таблиц.
См. также [ править ]
- Естественный ключ
- Superkey
- Уникальный ключ
- Кандидатский ключ
- Реляционная база данных
- Диаграмма отношений сущностей
- Строго типизированный идентификатор
Примечания [ править ]
Ссылки [ править ]
- ^ «Добавить или изменить первичный ключ таблицы в Access» . Майкрософт . Проверено 20 января 2020 г.
Первичный ключ — это поле или набор полей со значениями, уникальными во всей таблице.
- ^ Альтернативный ключ - Часто задаваемые вопросы по Oracle