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

Що таке функціональна залежність?
Функціональна залежність (FD) — це обмеження, яке визначає зв'язок одного атрибута з іншим атрибутом у системі керування базами даних (СКБД). Функціональна залежність допомагає підтримувати якість даних у базі даних. Вона відіграє життєво важливу роль у визначенні різниці між хорошим та поганим дизайном бази даних.
Функціональна залежність позначається стрілкою «→». Функціональна залежність Y від X представлена як X → Y. Давайте розглянемо функціональну залежність на прикладі.
приклад:
| Номер співробітника | ім'я працівника | Зарплата | City |
|---|---|---|---|
| 1 | дана | 50000 | Сан Франциско |
| 2 | Френсіс | 38000 | Лондон |
| 3 | Ендрю | 25000 | Токіо |
У цьому прикладі, якщо нам відомо значення номера співробітника, ми можемо отримати ім'я співробітника, місто, зарплату тощо. Таким чином, можна сказати, що місто, ім'я співробітника та зарплата функціонально залежать від номера співробітника.
Ключові терміни
Ось деякі ключові терміни для позначення функціональної залежності в базі даних:
| Ключові терміни | Опис |
|---|---|
| аксіома | Аксіоми — це набір правил виведення, що використовуються для виведення всіх функціональних залежностей реляційної бази даних. |
| Розкладання | Правило, яке пропонує, якщо у вас є таблиця, яка, здається, містить дві сутності, визначені одним первинним ключем, вам слід розглянути можливість її розділення на дві різні таблиці. |
| Залежний | Він відображається у правій частині діаграми функціональних залежностей. |
| Determinant | Він відображається з лівого боку діаграми функціональних залежностей. |
| Union | Це говорить про те, що якщо дві таблиці окремі, а первинний ключ однаковий, слід розглянути можливість їх об'єднання. |
Правила функціональних залежностей (аксіоми Армстронга)
Нижче наведено три найважливіші правила функціональної залежності в базі даних. Вони відомі як аксіоми Армстронга, і з них можна вивести будь-яке інше правило виводу.
- Зворотне правило: Якщо X є множиною атрибутів, а Y є підмножиною X, то виконується X → Y.
- Правило аугментації: Коли X → Y виконується, а C є набором атрибутів, тоді XC → YC також виконується. Додавання атрибутів не змінює базової залежності.
- Правило транзитивності: Подібно до транзитивного правила в алгебрі: якщо виконується X → Y та Y → Z, то виконується також X → Z.
З них випливають ще три правила, які постійно використовуються на практиці:
- Правило Союзу: якщо X → Y та X → Z, то X → YZ.
- Правило розкладання: якщо X → YZ, то X → Y і X → Z.
- Правило псевдотранзитивності: якщо X → Y та WY → Z, то WX → Z.
Багаторазове застосування цих правил до набору залежностей призводить до його закриття, повний набір залежностей, що логічно випливають. Замикання набору атрибутів також є способом знаходження ключів-кандидатів, що безпосередньо пов'язано з вивченням Ключі СУБД.
Типи функціональних залежностей у СУБД
У СУБД існує чотири основні типи функціональної залежності:
- Багатозначна залежність
- Тривіальна функціональна залежність
- Нетривіальна функціональна залежність
- Транзитивна залежність
Багатозначна залежність у СУБД
Багатозначна залежність виникає в ситуації, коли в одній таблиці є кілька незалежних багатозначних атрибутів. Багатозначна залежність – це повне обмеження між двома наборами атрибутів у відношенні, що вимагає наявності певних кортежів. Розглянемо наступний приклад.
приклад:
| Модель_автомобіля | Маф_рік | Колір |
|---|---|---|
| H001 | 2017 | Металевий |
| H001 | 2017 | зелений |
| H005 | 2018 | Металевий |
| H005 | 2018 | синій |
| H010 | 2015 | Металевий |
| H033 | 2012 | сірий |
У цьому прикладі Maf_year та Color незалежні один від одного, але залежать від Car_model. Ці два стовпці називаються багатозначними, залежними від Car_model. Це представлено так:
модель_автомобіля → рік_випуску
модель_автомобіля → колір
Тривіальна функціональна залежність у СУБД
Тривіальна залежність — це набір атрибутів, який називається тривіальним, якщо набір атрибутів включено до цього атрибута. Отже, X → Y є тривіальною функціональною залежністю, якщо Y є підмножиною X. Розглянемо приклад нижче.
| Emp_id | Emp_name |
|---|---|
| AS555 | Гаррі |
| AS811 | Джордж |
| AS999 | Kevin |
Розглянемо цю таблицю з двома стовпцями, Emp_id та Emp_name. {Emp_id, Emp_name} → Emp_id — це тривіальна функціональна залежність, оскільки Emp_id є підмножиною {Emp_id, Emp_name}.
Нетривіальна функціональна залежність у СУБД
Нетривіальна залежність виникає, коли A → B виконується, і B не є підмножиною A. Якщо атрибут B не є підмножиною атрибута A, залежність вважається нетривіальною.
| Компанія | CEO | вік |
|---|---|---|
| Microsoft | Сатья Наделла | 51 |
| Сундар Пічаї | 46 | |
| Apple | Тім Кук | 57 |
приклад:
{Компанія} → {Генеральний директор} (якщо нам відома Компанія, нам відоме ім'я генерального директора). Але генеральний директор не є підмножиною Company, а отже, це нетривіальна функціональна залежність.
Транзитивна залежність у СУБД
Транзитивна залежність — це тип функціональної залежності, яка виникає, коли атрибут опосередковано визначається двома функціональними залежностями. Розглянемо приклад нижче.
| Компанія | CEO | вік |
|---|---|---|
| Microsoft | Сатья Наделла | 51 |
| Сундар Пічаї | 46 | |
| Alibaba | Джек Ма | 54 |
{Компанія} → {Генеральний директор} (якщо нам відома компанія, нам відоме ім'я її генерального директора).
{CEO} → {Age} (якщо нам відомий генеральний директор, то нам відомий і вік).
Отже, за правилом транзитивної залежності, {Company} → {Age} має виконуватися, що має сенс, оскільки якщо ми знаємо назву компанії, ми можемо знайти її вік.
Примітка: транзитивна залежність може виникати лише у відношенні з трьома або більше атрибутами.
Що таке нормалізація?
Нормалізація — це метод організації даних у базі даних, який допомагає уникнути надлишковості даних та аномалій вставки, оновлення та видалення. Це процес аналізу схем зв'язків на основі їхніх різних функціональних залежностей та первинного ключа.
Нормалізація є невід'ємною частиною теорії реляційних баз даних. Вона може мати ефект розділення даних між додатковими таблицями, щоб кожен факт зберігався один раз. Повний процес описано в посібнику з нормалізація бази даних, який безпосередньо базується на вищезазначених типах залежностей.
Переваги функціональної залежності
- Функціональна залежність дозволяє уникнути надмірності даних, тому одні й ті ж дані не повторюються в кількох місцях база даних.
- Це допомагає підтримувати якість даних у базі даних.
- Це допомагає вам визначити значення та обмеження баз даних.
- Це допомагає вам виявити погані дизайни.
- Це допомагає вам знайти факти щодо проектування бази даних.
