Jump to content

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

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

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

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

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

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

  1. ^ «Добавить или изменить первичный ключ таблицы в Access» . Майкрософт . Проверено 20 января 2020 г. Первичный ключ — это поле или набор полей со значениями, уникальными во всей таблице.
  2. ^ Альтернативный ключ - Часто задаваемые вопросы по Oracle
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8c074a20d6a54838d8252fe8435b8448__1718122500
URL1:https://arc.ask3.ru/arc/aa/8c/48/8c074a20d6a54838d8252fe8435b8448.html
Заголовок, (Title) документа по адресу, URL1:
Primary key - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)