Реляційні бази даних є основою сучасного управління даними, забезпечуючи цілісність даних і безперешкодні взаємозв’язки між наборами даних. Два важливі поняття, що роблять це можливим, — це первинні ключі та зовнішні ключі. У цьому блозі ми розглянемо, що це таке, чому вони важливі, їхні переваги, технічні визначення, реальні приклади та як їх реалізувати за допомогою SQL.
Що таке первинні ключі та зовнішні ключі?
Первинний ключ
Первинний ключ — це стовпчик (або набір стовпців) у таблиці, який унікально ідентифікує кожен рядок цієї таблиці. Він гарантує, що жодні два рядки не матимуть однаковий ідентифікатор, і не може містити значення null.
Ключові характеристики первинного ключа:
- Унікальність: гарантує відсутність дублікатів значень.
- Невідсутність (Non-nullability): гарантує, що кожен рядок має дійсний ідентифікатор.
Зовнішній ключ
Зовнішній ключ — це стовпчик (або набір стовпців) у таблиці, який посилається на первинний ключ іншої таблиці. Він встановлює зв'язок між двома таблицями та забезпечує referential integrity (референтну цілісність), гарантуючи, що дані в стовпці зовнішнього ключа збігаються з даними в стовпці первинного ключа.
Ключові характеристики зовнішнього ключа:
- Посилається на первинний ключ в іншій таблиці.
- Забезпечує зв'язки між наборами даних.
- Перешкоджає неправильним записам, накладаючи обмеження.
Чому нам потрібні первинні ключі та зовнішні ключі?
1. Цілісність даних
- Первинний ключ гарантує, що кожен запис є унікальним і ідентифікованим.
- Зовнішній ключ гарантує, що зв'язки між таблицями є дійсними, що запобігає появі сирітських записів або некоректних посилань.
2. Уникнення надмірності даних
Розділяючи дані на кілька таблиць і використовуючи ключі для їхнього з'єднання, ми уникаємо дублювання даних без потреби.
3. Легкість запитів до даних
Ключі роблять написання запитів, що з'єднують таблиці та ефективно витягують взаємопов'язані дані, значно простішим.
4. Забезпечення бізнес-правил
Зовнішні ключі забезпечують виконання правил, таких як «студент не може записатися на курс, якщо його немає в таблиці студентів».
Переваги та вигоди
Первинний ключ
- Гарантує унікальну ідентифікацію рядків.
- Прискорює пошук і індексацію.
- Перешкоджає дублюванню та значенням null.
Зовнішній ключ
- З'єднує таблиці та встановлює зв'язки.
- Підтримує референтну цілісність.
- Спрощує складні зв'язки даних.
- Зменшує надмірність, дозволяючи використовувати нормалізований дизайн таблиць.
Технічні визначення
Визначення первинного ключа
Стовпчик або набір стовпців, який унікально ідентифікує кожен рядок таблиці. Приклад: У таблиці Students
стовпчик StudentID
може бути первинним ключем.
Визначення зовнішнього ключа
Стовпчик або набір стовпців у таблиці, який встановлює зв'язок з первинним ключем іншої таблиці. Приклад: У таблиці Courses
стовпчик StudentID
може бути зовнішнім ключем, що посилається на стовпчик StudentID
в таблиці Students
.
Реальний приклад
Припустимо, ви керуєте базою даних школи.
- Таблиця
Students
: зберігає дані про студентів з унікальнимStudentID
як первинним ключем. - Таблиця
Courses
: відслідковує, які студенти записані на які курси, використовуючиStudentID
як зовнішній ключ для посилання на таблицюStudents
.
Тут:
- StudentID
у таблиці Students
є первинним ключем.
- StudentID
у таблиці Courses
є зовнішнім ключем, що посилається на таблицю Students
.
Це забезпечує:
1. Відсутність дублікатів або некоректних студентів у таблиці Students
.
2. Тільки дійсні StudentID
можуть бути додані до таблиці Courses
.
Як створити первинні та зовнішні ключі в SQL
Ось як ви можете визначити ці ключі в SQL:
Висновок
Первинні ключі та зовнішні ключі є невід’ємними для створення надійних, ефективних та стійких реляційних баз даних.
Вони забезпечують цілісність даних, накладають обмеження на зв'язки між таблицями та спрощують запити до них. Розуміючи їх та використовуючи ефективно, ви можете створювати бази даних, які є масштабованими та простими в обслуговуванні.
Незалежно від того, чи ви створюєте систему управління школою, чи велике підприємницьке застосування, освоєння первинних та зовнішніх ключів — це основна навичка, яку повинен мати кожен розробник і інженер з даних.
Примітка
Якщо ця стаття допомогла вам дізнатися щось нове, будь ласка, поставте «клап» і залиште коментар. Не забудьте підписатися на мене на Medium та на LinkedIn. Ваша підтримка допомагає мені створювати більше контенту такого типу та дозволяє нам залишатися на зв'язку в спільноті інженерії даних. Дякую!
Перекладено з: Mastering Primary Key and Foreign Key in Relational Databases