Різниця між первинним і зовнішнім ключем

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

Первинний ключ у таблиці ідентифікує записи унікально, а зовнішній ключ посилається на первинний ключ іншої таблиці. Візьмемо для прикладу дві таблиці: таблиці працівників та зарплати, щоб зрозуміти поняття первинного та зовнішнього ключових. Якщо у таблиці "Співробітник" є первинний ключ як "Employee_ID", стовпець Employee_ID повинен бути присутнім у таблиці заробітної плати, оскільки він повинен мати зв'язок між цими двома таблицями, маючи в таблиці заробітної плати зовнішній ключ, який може посилатися на первинний ключ таблиця працівника.

Порівняння між головними та зовнішніми ключами (Інфографіка)

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

Ключові відмінності між первинним і зовнішнім ключем

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

  • Первинний ключ однозначно ідентифікує записи в таблиці, тоді як зовнішній ключ використовується для зв’язку таблиць, тобто він посилається на первинний ключ іншої таблиці.
  • Стовпець первинного ключа в таблиці не може мати нульових значень і завжди повинен мати унікальні значення. Але зовнішній ключ у таблиці може містити нульові значення, а також може мати повторювані значення.
  • У таблиці може бути лише один первинний ключ, тоді як для таблиці може бути більше одного зовнішнього ключа.
  • Індекс створюється для Первинного ключа автоматично, тоді як для зовнішнього ключа індекси не створюються автоматично.
  • Видалити обмеження зовнішнього ключа легко, хоча це стосується первинного ключа. Але видалення обмеження первинного ключа може створювати записи з дочірніми записами, які не мають батьківських записів.

Таблиця порівняння первинного ключа та зовнішнього ключа

У таблиці нижче наведено порівняння між первинним і зовнішнім ключем:

Первинний ключЗовнішній ключ
Первинний ключ таблиці в RDBMS може бути одним стовпцем або може містити більше одного стовпця, який використовується для однозначної ідентифікації кожного рядка таблиці. У випадку Первинного ключа, що складається з декількох стовпців, дані з кожного стовпця використовуються для визначення унікальності рядка. Таблиця в RDMBS може мати лише один первинний ключ.Зовнішній ключ може бути одним стовпцем або може складатися з декількох стовпців таблиці, які використовуються для посилання на Первинний ключ іншої таблиці. Зовнішній ключ можна використовувати для зв’язку таблиць в RDBMS. На відміну від атрибута "Первинний ключ", таблиця в RDBMS може мати більше одного зовнішнього ключа.
Є кілька умов, які повинні бути виконані, щоб стовпець був первинним ключем у таблиці. Однією з умов є те, що Первинний ключ повинен містити унікальне значення для кожного запису. Таким чином, у таблиці RDBMS не може бути дозволено мати дублюючі значення для двох рядків для атрибута "Первинний ключ".На відміну від первинного ключа таблиці в RDBMS, зовнішній ключ може містити повторювані значення. Це дозволяє мати повторювані значення для рядків таблиці для атрибута іноземного ключа.
Інша умова стовпця, що задовольняє первинний ключ, - це те, що він не повинен містити нульових значень.Але зовнішній ключ таблиці в RDBMS може містити нульові значення.
Первинний ключ задається під час визначення таблиці, і він є обов'язковим для визначення Первинного ключа.На відміну від Первинного ключа, немає конкретного визначення таблиці для позначення ключа як зовнішнього ключа.
Видалити обмеження Первинного ключа з батьківської таблиці неможливо із зовнішнім ключем дочірньої таблиці, що посилається на нього. Отже, дочірню таблицю потрібно спочатку видалити перед видаленням батьківської таблиці.Але якщо нам потрібно видалити обмеження зовнішнього ключа в таблиці, його можна видалити з дочірньої таблиці, навіть якщо це стосується первинного ключа батьківської таблиці.

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

Висновок

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

Обмеження первинного ключа допомагає автоматично застосовувати цілісність даних, оскільки не дозволяє вставляти або оновлювати повторювані рядки даних. Використання ключових обмежень також запобігає видаленню рядка з таблиці первинних ключів з батьківської таблиці, щоб не створювалися такі дочірні записи, для яких немає батьківського запису. Крім того, коли рядок із посиланням на первинний ключ видаляється або оновлюється в батьківській таблиці, цілісність референції підтримується зовнішнім ключем. Ключі відіграють важливу роль у встановленні зв’язків між таблицями бази даних, а також всередині таблиці.

Рекомендовані статті

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

  1. WebLogic vs WebSphere
  2. ROLAP проти MOLAP проти HOLAP
  3. GoCD проти Дженкінса
  4. Борг проти власного фінансування