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

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

Первичный ключ в таблице однозначно идентифицирует записи, а внешний ключ ссылается на первичный ключ другой таблицы. Давайте возьмем пример двух таблиц: таблицы сотрудников и зарплат, чтобы понять концепции первичного и внешнего ключей. Если в таблице Employee первичный ключ имеет значение Employee_ID, то в таблице Salary должен присутствовать столбец Employee_ID, так как он должен иметь связь между этими двумя таблицами, имея в таблице Salary внешний ключ, который может ссылаться на первичный ключ Таблица сотрудников.

Сравнение между первичным ключом и внешним ключом (инфографика)

Ниже приведены 6 основных различий между первичным ключом и внешним ключом:

Ключевые различия между первичным ключом и внешним ключом

Давайте обсудим некоторые основные различия между первичным ключом и внешним ключом:

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

Сравнительная таблица первичного ключа с внешним ключом

В таблице ниже приведены сравнения между первичным ключом и внешним ключом:

Первичный ключИностранный ключ
Первичный ключ таблицы в RDBMS может представлять собой один столбец или может содержать более одного столбца, который используется для уникальной идентификации каждой строки в таблице. В случае первичного ключа, состоящего из нескольких столбцов, данные из каждого столбца используются для определения уникальности строки. Таблица в RDMBS может иметь только один первичный ключ.Внешний ключ может быть одним столбцом или состоять из нескольких столбцов в таблице, которая используется для ссылки на первичный ключ другой таблицы. Внешний ключ может использоваться для связывания таблиц в RDBMS. В отличие от атрибута первичного ключа, таблица в РСУБД может иметь более одного внешнего ключа.
Есть несколько условий, которые должны быть выполнены, чтобы столбец был первичным ключом в таблице. Одним из условий является то, что первичный ключ должен содержать уникальное значение для каждой записи. Поэтому нельзя допускать, чтобы таблица в СУБД имела дублирующиеся значения для двух строк для атрибута первичного ключа.В отличие от первичного ключа таблицы в РСУБД, внешний ключ может содержать повторяющиеся значения. Это позволяет иметь дублирующиеся значения для строк таблицы для атрибута внешнего ключа.
Другое условие для столбца, удовлетворяющего первичному ключу, состоит в том, что он не должен содержать значения Null.Но внешний ключ таблицы в RDBMS может содержать значения Null.
Первичный ключ указывается при определении таблицы, и он является обязательным для определения первичного ключа.В отличие от первичного ключа, нет конкретного определения таблицы для обозначения ключа как внешнего ключа.
Невозможно удалить ограничение первичного ключа из родительской таблицы, ссылаясь на внешний ключ дочерней таблицы. Таким образом, дочерняя таблица должна быть удалена перед удалением родительской таблицы.Но если нам нужно удалить ограничение внешнего ключа в таблице, его можно удалить из дочерней таблицы, даже если оно ссылается на первичный ключ родительской таблицы.

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

Вывод

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

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

Рекомендуемые статьи

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

  1. WebLogic против WebSphere
  2. РОЛАП против МОЛАП против ХОЛАП
  3. GoCD против Дженкинс
  4. Долг против Финансирования Акции