Разница между первичным ключом и внешним ключом в СУБД

Автор: Laura McKinney
Дата создания: 1 Апрель 2021
Дата обновления: 12 Май 2024
Anonim
Начальный курс SQL.Первичный ключ и внешний ключ  Типы связей между таблицами
Видео: Начальный курс SQL.Первичный ключ и внешний ключ Типы связей между таблицами

Содержание


Ключи являются важной частью СУБД, которую они используют для идентификации и установления связи между таблицами в схеме. Теперь, сегодня мы собираемся обсудить два очень важных ключа СУБД, а именно: Первичный ключ и Внешний ключ, и мы также обсудим разницу между первичным ключом и внешним ключом. По пути позвольте мне сказать вам, что основное различие между первичным и внешним ключом, который является первичным ключом, является одним из выбранных ключей-кандидатов дизайнером базы данных, тогда как внешний ключ - это ключ, который ссылается на первичный ключ другого отношения.

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

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Заключение

Сравнительная таблица

Основа для сравненияОсновной ключВнешний ключ
основнойПервичный ключ - это выбранный ключ-кандидат, который однозначно определяет кортеж в отношении.Внешний ключ в таблице относится к первичному ключу другой таблицы.
ЗНАЧЕНИЕ NULLЗначение первичного ключа никогда не может быть NULL.Внешний ключ принимает значение NULL.
ДублированныйНет двух кортежей в отношении, содержащих одинаковые значения для атрибута первичного ключа.Кортежи могут содержать повторяющиеся значения для атрибута внешнего ключа.
АссортиментМожет быть только один первичный ключ отношения.В отношении может быть несколько внешних ключей.
Временная таблицаОграничение первичного ключа может быть определено для временных таблиц.Ограничение внешнего ключа не может быть определено для временных таблиц.
Кластерный индексПо умолчанию первичный ключ кластеризован и проиндексирован.Внешний ключ не кластеризуется, индексируется автоматически; это должно быть сделано вручную.
вставкаМы можем вставить значение в атрибут первичного ключа, даже если ссылочный внешний ключ не имеет этого значения в своем столбце.Мы не можем вставить значение во внешний ключ, если это значение отсутствует в указанном столбце первичного ключа.
делецияПрежде чем удалять значение первичного ключа, убедитесь, что значение по-прежнему отсутствует в столбце внешнего ключа, на который указывает ссылка, в таблице ссылок.Вы можете удалить значение из столбца внешнего ключа, не беспокоясь о том, присутствует ли это значение в столбце ссылочного первичного ключа ссылочной связи.


Определение первичного ключа

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

Дизайнер баз данных выбирает один из ключи-кандидаты в качестве первичного ключа, принимая во внимание некоторые моменты. Первое соображение - значение атрибута первичного ключа никогда не может содержать ЗНАЧЕНИЕ NULL стоимость. Потому что, если значение атрибута первичного ключа содержит NULL, это означает, что мы не можем идентифицировать эту запись в таблице. Это также нарушает ограничение целостности объекта. Второе соображение, нет двух кортежей в таблице может содержать такой же значение для атрибута первичного ключа, так как это нарушит уникальность среди кортежей.


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

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

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

Определение внешнего ключа

Когда отношение R1среди его атрибутов, имеет первичный ключ другого отношения R2то этот атрибут называется Внешний ключ для связи R1, Отношение R1 содержащий внешний ключ называется отношение ссылки как это относится к первичному ключу отношения R2 и отношения R2 называется ссылочное отношение.
В отличие от первичного ключа, внешний ключ может принимать ЗНАЧЕНИЕ NULL значения, потому что у него нет задачи четко идентифицировать запись в отношении, поскольку у нас есть первичный ключ для этого. Таким же образом внешний ключ также принимает повторяющиеся значения.

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

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

  1. Первичный - это набор атрибутов / ключа-кандидата, который четко определяет запись в отношении. Однако внешний ключ в таблице относится к первичному ключу другой таблицы.
  2. Ни один атрибут первичного ключа не может содержать значения NULL, тогда как атрибут внешнего ключа может принимать значение NULL.
  3. Первичный ключ должен иметь уникальные значения атрибута, тогда как внешний ключ может иметь дублированные значения атрибута.
  4. В отношении может быть несколько внешних ключей, но отношение имеет только один первичный ключ.
  5. Ограничение первичного ключа может быть применено к временным таблицам. Однако ограничение внешнего ключа не может быть применено к временным таблицам.
  6. По умолчанию первичный ключ индексируется кластеризованно, тогда как внешний ключ не индексируется автоматически, но это можно сделать вручную.
  7. Вставляя значение в столбец внешнего ключа, убедитесь, что значение атрибута вставки присутствует в указанном столбце первичного ключа. Тем не менее, нет никаких ограничений на вставку в столбец первичного ключа.
  8. При удалении значения из столбца первичного ключа убедитесь, что значение удаленного атрибута отсутствует в ссылочном столбце внешнего ключа. Тем не менее, нет никаких ограничений на удаление значения из столбца внешнего ключа.

Заключение:

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