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

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

  • Обмеження первинного ключа – це стовпець, який однозначно ідентифікує кожен рядок у таблиці системи керування реляційною базою даних, а зовнішній ключ – це стовпець, який створює зв’язок між двома таблицями.
  • Первинний ключ ніколи не приймає нульових значень, тоді як зовнішній ключ може приймати кілька нульових значень.
  • Ви можете мати лише один первинний ключ у таблиці, тоді як ви можете мати кілька зовнішніх ключів у таблиці.
  • Значення первинного ключа не можна видалити з батьківської таблиці, тоді як значення зовнішнього ключа можна видалити з дочірньої таблиці.
  • Жодні два рядки не можуть мати однакові значення для первинного ключа; з іншого боку, зовнішній ключ може містити повторювані значення.
  • Немає обмежень щодо вставлення значень у стовпець таблиці під час вставлення будь-якого значення в таблицю зовнішнього ключа; переконайтеся, що значення присутнє в стовпці первинного ключа.
Різниця між первинним ключем і зовнішнім ключем
Різниця між первинним ключем і зовнішнім ключем

Тут я проаналізував різницю між первинним ключем і зовнішнім ключем і всебічно оцінив їх плюси і мінуси.

Що таке первинний ключ?

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

Таблиця не може мати більше одного первинного ключа. The primary key можна визначити на рівні стовпця або таблиці. Якщо ви створюєте складений первинний ключ, його слід визначити на рівні таблиці.

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

Синтаксис:

Нижче наведено синтаксис первинного ключа:

CREATE TABLE <Table-Name>
(
Column1 datatype,
Column2 datatype,  PRIMARY KEY (Column-Name)
.
);    

Тут,

  • Table_Name — це ім’я таблиці, яку потрібно створити.
  • Column_Name — це ім’я стовпця з первинним ключем.

приклад:

StudID Номер рулону Ім'я Прізвище Електронна пошта
1 11 Том ціна abc@gmail.com
2 12 Nick Райт xyz@gmail.com
3 13 дана Натана mno@yahoo.com

У наведеному вище прикладі ми створили таблицю студентів із такими стовпцями, як StudID, Roll No., First Name, Last Name та Email. StudID обрано як первинний ключ, оскільки він може однозначно ідентифікувати інші рядки в таблиці.

Навіщо використовувати первинний ключ?

Протягом багатьох років роботи з системами баз даних я помітив ці мінуси та переваги використання первинного ключа:

  • Основна мета первинного ключа — ідентифікувати кожен запис у таблиці бази даних.
  • Ви можете використовувати первинний ключ, коли ви не дозволяєте комусь вводити нульові значення.
  • Якщо ви видалите або оновите записи, буде виконано вказану вами дію для забезпечення цілісності даних.
  • Виконайте операцію restrict, щоб відхилити операцію видалення або оновлення для батьківської таблиці.
  • Дані організовуються в послідовності кластерних індексів щоразу, коли ви фізично організовуєте таблицю СУБД.

Що таке зовнішній ключ?

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

Приклад зовнішнього ключа

Синтаксис:

Нижче наведено синтаксис зовнішнього ключа:

CREATE TABLE <Table Name>( 
column1    datatype,
column2    datatype,  
constraint (name of constraint) 
FOREIGN KEY [column1, column2...] 
REFERENCES [primary key table name] (List of primary key table column) ...);

Тут,

  • Параметр Назва таблиці вказує назву таблиці, яку ви збираєтеся створити.
  • Параметри column1, column2… зображують стовпці, які потрібно додати до таблиці.
  • Обмеження позначає назву обмеження, яке ви створюєте.
  • Посилання вказують на таблицю з первинним ключем.

приклад:

DeptCode DeptName
001 наука
002 Англійська
005 комп'ютер
ID вчителя Fname Lname
B002 Девід Сигналізатор
B017 Сара Джозеф
B009 Майк Брантон

У наведеному вище прикладі ми маємо дві таблиці: вчитель і відділ у школі. Однак неможливо побачити, який пошук працює в якому відділі.

У цій таблиці, додавши зовнішній ключ у Deptcode до імені викладача, ми можемо створити зв’язок між двома таблицями.

ID вчителя DeptCode Fname Lname
B002 002 Девід Сигналізатор
B017 002 Сара Джозеф
B009 001 Майк Брантон

Ця концепція також відома як посилальна цілісність.

Навіщо використовувати зовнішній ключ?

З того, що я бачив, ось важливі причини впровадження зовнішніх ключів:

  • Зовнішні ключі допомагають перенести сутності за допомогою первинного ключа з батьківської таблиці.
  • A зовнішній ключ дозволяє зв'язати дві або більше таблиць.
  • Це робить дані вашої бази даних узгодженими.
  • Зовнішній ключ можна використовувати для зіставлення стовпця або комбінації стовпців із первинним ключем у батьківській таблиці.
  • Обмеження зовнішнього ключа SQL використовується, щоб переконатися, що посилальна цілісність батьківських даних відповідає значенням у дочірній таблиці.

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

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

Первинний ключ проти зовнішнього ключа
Первинний ключ проти зовнішнього ключа
Основа порівняння Первинний ключ Зовнішній ключ
Визначення Обмеження первинного ключа – це стовпець або група стовпців, які однозначно ідентифікують кожен рядок у таблиці система управління реляційною базою даних. Зовнішній ключ - це стовпець, який створює зв'язок між двома таблицями.
Базовий Це допомагає вам однозначно ідентифікувати запис у таблиці. Це поле в таблиці, яке є первинним ключем іншої таблиці.
NULL Первинний ключ ніколи не приймає нульових значень. Зовнішній ключ може приймати кілька нульових значень.
Індексація Первинний ключ — це кластерний індекс, а дані в таблиці СУБД фізично організовані в послідовності кластерного індексу. Зовнішній ключ не може автоматично створити індекс, кластеризований чи некластеризований.
Рахувати Ви можете мати один первинний ключ у таблиці. Ви можете мати кілька зовнішніх ключів у таблиці.
видалення Значення первинного ключа не можна видалити з батьківської таблиці. Значення зовнішнього ключа можна видалити з дочірньої таблиці.
Тимчасовий стіл Ви можете неявно визначити первинний ключ у тимчасових таблицях. Ви не можете визначити зовнішні ключі в локальних або глобальних тимчасових таблицях.
Зв'язок Первинний ключ — це кластерний індекс. За замовчуванням це не кластерний індекс.
Дублювання Жодні два рядки не можуть мати однакові значення для первинного ключа. Зовнішній ключ може містити повторювані значення.
вставка Немає обмежень щодо вставки значень у стовпець таблиці. Вставляючи будь-яке значення в таблицю зовнішнього ключа, переконайтеся, що значення присутнє в стовпці первинного ключа.

Як вибрати між первинним ключем і зовнішнім ключем

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