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

Що таке ключі в СУБД?
Ключі в СУБД — це атрибут або набір атрибутів, які допомагають ідентифікувати рядок (кортеж) у відношенні (таблиці). Вони дозволяють знайти зв'язок між двома таблицями. Ключі допомагають однозначно ідентифікувати рядок у таблиці за комбінацією одного або кількох стовпців, а також корисні для пошуку унікального запису в таблиці.
приклад:
| Ідентифікатор працівника | Ім'я | Прізвище |
|---|---|---|
| 11 | Ендрю | Джонсон |
| 22 | Том | Дерево |
| 33 | Alex | Міцний |
У наведеному вище прикладі ідентифікатор співробітника є первинним ключем, оскільки він однозначно ідентифікує запис співробітника. У цій таблиці жоден інший співробітник не може мати такий самий ідентифікатор співробітника.
Навіщо нам потрібен ключ?
Ось кілька причин використання ключа в СУБД:
- Ключі допомагають ідентифікувати будь-який рядок даних у таблиці. У реальному застосунку таблиця може містити тисячі записів, і ці записи можуть бути дубльованими. Ключі гарантують, що ви можете однозначно ідентифікувати запис таблиці, незважаючи на ці труднощі.
- Вони дозволяють встановлювати та ідентифікувати зв'язки між таблицями.
- Вони допомагають вам зміцнити ідентичність та цілісність у стосунках.
Типи ключів у СУБД
У СУБД існує вісім різних типів ключів, і кожен ключ має свою власну функціональність:
- Супер ключ
- Первинний ключ
- Ключ від кандидата
- Альтернативний ключ
- Зовнішній ключ
- Складний ключ
- Композитний ключ
- Сурогатний ключ
У таблиці нижче наведено короткий огляд усіх восьми пунктів, перш ніж кожен з них буде детально пояснено.
| ключ | В один рядок | Унікальний? |
|---|---|---|
| Супер ключ | Будь-який набір атрибутів, що ідентифікує рядок, дозволені додаткові атрибути | Так |
| Ключ від кандидата | Мінімальний суперключ, без надлишкових атрибутів | Так |
| Первинний ключ | Вибраний ключ-кандидат, не null | Так |
| Альтернативний ключ | Ключ-кандидат не вибрано як первинний | Так |
| Зовнішній ключ | Посилається на первинний ключ в іншій таблиці | Немає |
| Складний ключ | Два або більше атрибутів, кожен з яких може бути неунікальним | Комбіновані |
| Композитний ключ | Два або більше стовпців, об'єднаних для унікальності | Комбіновані |
| Сурогатний ключ | Згенерований штучний ідентифікатор | Так |
Що таке Суперключ?
Суперключ — це група з одного або кількох ключів, що ідентифікує рядки в таблиці. Суперключ може мати додаткові атрибути, які не потрібні для унікальної ідентифікації.
приклад:
| EmpSSN | EmpNum | Empname |
|---|---|---|
| 9812345098 | AB05 | Показано |
| 9876512345 | AB06 | Рослин |
| 199937890 | AB07 | James |
У наведеному вище прикладі EmpSSN та EmpNum – це суперключі.
Що таке первинний ключ?
PRIMARY KEY in СУБД — це стовпець або група стовпців у таблиці, яка однозначно ідентифікує кожен рядок у цій таблиці. Первинний ключ не може бути дублікатом, тобто одне й те саме значення не може з'являтися в таблиці більше одного разу. Таблиця не може мати більше одного первинного ключа.
Правила визначення первинного ключа
- Два рядки не можуть мати однакове значення первинного ключа.
- Кожен рядок повинен мати значення первинного ключа.
- Поле первинного ключа не може бути нульовим.
- Значення в стовпці первинного ключа ніколи не можна змінити або оновити, якщо будь-який зовнішній ключ посилається на цей первинний ключ.
приклад: У наступному прикладі StudID є первинним ключем.
| StudID | Номер рулону | Ім'я | Прізвище | Електронна пошта |
|---|---|---|---|---|
| 1 | 11 | Том | Тарифи | abc@gmail.com |
| 2 | 12 | Nick | Райт | xyz@gmail.com |
| 3 | 13 | дана | Натана | mno@yahoo.com |
Що таке альтернативний ключ?
АЛЬТЕРНАТИВНИЙ КЛЮЧ — це стовпець або група стовпців у таблиці, яка однозначно ідентифікує кожен рядок. Таблиця може мати кілька варіантів первинного ключа, але лише один може бути встановлений як первинний ключ. Усі ключі, які не є первинним ключем, називаються альтернативними ключами.
приклад: У цій таблиці StudID, Roll No та Email кваліфіковані як первинний ключ. Але оскільки StudID є первинним ключем, Roll No та Email стають альтернативними ключами.
| StudID | Номер рулону | Ім'я | Прізвище | Електронна пошта |
|---|---|---|---|---|
| 1 | 11 | Том | Тарифи | abc@gmail.com |
| 2 | 12 | Nick | Райт | xyz@gmail.com |
| 3 | 13 | дана | Натана | mno@yahoo.com |
Що таке ключ-кандидат?
КЛЮЧ КАНДИДАТ — це набір атрибутів, які однозначно ідентифікують кортежі в таблиці. Ключ-кандидат — це суперключ без повторюваних атрибутів. Первинний ключ слід вибирати з ключів-кандидатів. Кожна таблиця повинна мати принаймні один ключ-кандидат, а таблиця може мати кілька ключів-кандидатів, але лише один первинний ключ.
Властивості кандидатського ключа:
- Він повинен містити унікальні значення.
- Ключ-кандидат може мати кілька атрибутів.
- Він не повинен містити нульових значень.
- Він повинен містити мінімальну кількість полів, необхідних для забезпечення унікальності.
- Він однозначно ідентифікує кожен запис у таблиці.
Приклад: У таблиці нижче StudID, Roll No та Email – це кандидати на ключі, які допомагають нам однозначно ідентифікувати запис студента. Їх зв’язок із суперключами та первинними ключами є поширеним способом розуміння. функціональна залежність.
| StudID | Номер рулону | Ім'я | Прізвище | Електронна пошта |
|---|---|---|---|---|
| 1 | 11 | Том | Тарифи | abc@gmail.com |
| 2 | 12 | Nick | Райт | xyz@gmail.com |
| 3 | 13 | дана | Натана | mno@yahoo.com |

Що таке зовнішній ключ?
FOREIGN KEY – це стовпець, який створює зв'язок між двома таблицями. Призначення зовнішнього ключа полягає в підтримці цілісності даних і забезпеченні навігації між двома різними екземплярами сутності. Він діє як перехресне посилання між двома таблицями, оскільки посилається на первинний ключ іншої таблиці.
приклад:
| КафедраCode | DeptName |
|---|---|
| 001 | наука |
| 002 | Англійська |
| 005 | комп'ютер |
| ID вчителя | Fname | Lname |
|---|---|---|
| B002 | Девід | Сигналізатор |
| B017 | Сара | Джозеф |
| B009 | Майк | Брантон |
У цьому прикладі у школі є дві таблиці: «Вчитель» та «Відділ». У їхньому поточному вигляді неможливо побачити, який вчитель у якому відділі працює.
Додавши зовнішній ключ DeptCode до таблиці "Вчитель" ми можемо створити зв'язок між двома таблицями.
| ID вчителя | КафедраCode | Fname | Lname |
|---|---|---|---|
| B002 | 002 | Девід | Сигналізатор |
| B017 | 002 | Сара | Джозеф |
| B009 | 001 | Майк | Брантон |
Ця концепція також відома як посилальна цілісність.
Що таке складний ключ?
СКЛАДЕНИЙ КЛЮЧ має два або більше атрибутів, які дозволяють однозначно розпізнати певний запис. Можливо, кожен стовпець не є унікальним сам по собі в базі даних. Однак, якщо їх об'єднати, стовпці стають унікальними. Мета складеного ключа — однозначно ідентифікувати кожен запис у таблиці.
приклад:
| Номер замовлення | Ідентифікатор продукту | Назва Продукту | Кількість |
|---|---|---|---|
| B005 | JAP102459 | миша | 5 |
| B005 | DKT321573 | USB | 10 |
| B005 | OMG446789 | РК-монітор | 20 |
| B004 | DKT321573 | USB | 15 |
| B002 | OMG446789 | Лазерний принтер | 3 |
У цьому прикладі OrderNo та ProductID не можуть бути первинними ключами, оскільки жоден з них однозначно не ідентифікує запис. Однак складений ключ OrderNo та ProductID однозначно ідентифікує кожен запис.
Що таке композитний ключ?
КОМПОЗИТНИЙ КЛЮЧ — це комбінація двох або більше стовпців, які однозначно ідентифікують рядки в таблиці. Комбінація стовпців гарантує унікальність, хоча унікальність кожного окремо не гарантується. Отже, вони об'єднуються для однозначної ідентифікації записів у таблиці.
Різниця між складеним та композитним ключем полягає в тому, що будь-яка частина складеного ключа може бути зовнішнім ключем, тоді як композитний ключ може бути або не бути частиною зовнішнього ключа.
Що таке сурогатний ключ?
СУРОГАТНИЙ КЛЮЧ — це штучний ключ, метою якого є унікальна ідентифікація кожного запису. Цей тип ключа є унікальним, оскільки він створюється, коли у вас немає жодного природного первинного ключа. Сурогатні ключі не надають значення даним у таблиці та зазвичай є цілим числом, згенерованим безпосередньо перед вставкою запису.
| Fname | Прізвище | Час початку | Час закінчення |
|---|---|---|---|
| Anne | коваль | 09:00 | 18:00 |
| Джек | Френсіс | 08:00 | 17:00 |
| Анна | Маклін | 11:00 | 20:00 |
| Показано | Віллам | 14:00 | 23:00 |
У наведеному вище прикладі показано графік змін різних співробітників. Тут потрібен сурогатний ключ для унікальної ідентифікації кожного співробітника. Сурогатні ключі в SQL використовуються, коли:
- Жодна властивість не має параметра первинного ключа.
- Первинний ключ занадто великий або складний.
Різниця між первинним ключем і зовнішнім ключем
Нижче наведено основну відмінність між первинним ключем та зовнішнім ключем:
| Первинний ключ | Зовнішній ключ |
|---|---|
| Допомагає однозначно ідентифікувати запис у таблиці. | Це поле в таблиці, яке є первинним ключем іншої таблиці. |
| Первинний ключ ніколи не приймає нульових значень. | Зовнішній ключ може приймати кілька нульових значень. |
| Первинний ключ – це кластерний індекс, а дані в таблиці фізично організовані в послідовності кластерного індексу. | Зовнішній ключ не може автоматично створювати індекс, кластерний чи некластерний. Ви можете створити його вручну. |
| У таблиці може бути один первинний ключ. | Ви можете мати кілька зовнішніх ключів у таблиці. |
