Первинний ключ проти зовнішнього ключа: в чому різниця?

Зміст:

Anonim

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

Що таке ключі?

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

Що таке взаємозв'язок з базою даних?

Зв'язок бази даних - це асоціації між однією або кількома таблицями, які створюються за допомогою операторів join. Він використовується для ефективного отримання даних з бази даних. Існує насамперед три типи відносин: 1) "Один до одного", 2) "Один до багатьох", 3) "Багато до багатьох".

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

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

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

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

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

ОСНОВНІ ВІДМІННОСТІ:

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

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

Ось мінуси / переваги використання первинного ключа:

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

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

Ось важливі причини використання зовнішнього ключа:

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

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

Синтаксис:

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

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

Ось,

  • Ім'я таблиці - це назва таблиці, яку потрібно створити.
  • Ім'я стовпця - ім'я стовпця, що має первинний ключ.

Приклад:

StudID Рулон No Ім'я Прізвище Електронна пошта
1 11 Том Ціна Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його.
2 12 Нік Райт Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його.
3 13 Дана Натан Ця електронна адреса захищена від спам-ботів. Вам потрібно увімкнути JavaScript, щоб переглянути його.

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

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

Синтаксис:

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

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Ось,

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

Приклад:

DeptCode Назва відділу
001 Наука
002 Англійська
005 Комп’ютер
Ідентифікатор вчителя Ім'я Lname
B002 Девід Уорнер
B017 Сара Йосип
B009 Майк Брантон

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

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

Ідентифікатор вчителя DeptCode Ім'я Lname
B002 002 Девід Уорнер
B017 002 Сара Йосип
B009 001 Майк Брантон

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

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

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

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