stringtranslate.com

Первичный ключ

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

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

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

Дизайн

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

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

Первичные ключи могут быть целым числом, которое увеличивается, универсальным уникальным идентификатором (UUID) или могут быть сгенерированы с использованием алгоритма Hi/Lo .

Определение первичных ключей в SQL

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

ALTER TABLE < идентификатор таблицы > ADD [ CONSTRAINT < идентификатор ограничения > ] PRIMARY KEY ( < имя столбца > [ { , < имя столбца > } ... ] )                       

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

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

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

CREATE TABLE table_name ( id_col INT PRIMARY KEY , col2 CHARACTER VARYING ( 20 ), ... )           

Суррогатные ключи

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

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

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

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

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

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

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

Смотрите также

Примечания

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

Ссылки

  1. ^ "Добавление или изменение первичного ключа таблицы в Access". Microsoft . Получено 20 января 2020 г. . Первичный ключ — это поле или набор полей со значениями, которые являются уникальными во всей таблице.
  2. ^ Альтернативный ключ – Oracle FAQ