Функціональна залежність у СУБД: типи з прикладами

⚡ Розумний підсумок

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

  • ➡️ Основна ідея: У X → Y визначник X фіксує значення залежного Y, записане стрілкою.
  • 🏷️ Ключові терміни: Визначник, залежний, аксіома, декомпозиція та об'єднання описують, як іменуються та маніпулюють залежностями.
  • 📐 Аксіоми Армстронга: Рефлексивність, аугментація та транзитивність виводять кожну залежність, яку логічно передбачає множина.
  • 🔀 Чотири типи: Багатозначні, тривіальні, нетривіальні та транзитивні залежності описують окремий зв'язок атрибутів.
  • 🧹 Посилання для нормалізації: Залежності забезпечують нормалізацію, яка усуває надлишковість та аномалії оновлення.
  • 🔑 Закриття: Замикання атрибута показує кандидатські ключі та чи має місце залежність.
  • ✅ Перевага: Хороші залежності сигналізують про хороший дизайн та відрізняють якісні схеми від поганих.

Функціональна залежність у СУБД

Що таке функціональна залежність?

Функціональна залежність (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
Google Сундар Пічаї 46
Apple Тім Кук 57

приклад:

{Компанія} → {Генеральний директор} (якщо нам відома Компанія, нам відоме ім'я генерального директора). Але генеральний директор не є підмножиною Company, а отже, це нетривіальна функціональна залежність.

Транзитивна залежність у СУБД

Транзитивна залежність — це тип функціональної залежності, яка виникає, коли атрибут опосередковано визначається двома функціональними залежностями. Розглянемо приклад нижче.

Компанія CEO вік
Microsoft Сатья Наделла 51
Google Сундар Пічаї 46
Alibaba Джек Ма 54

{Компанія} → {Генеральний директор} (якщо нам відома компанія, нам відоме ім'я її генерального директора).

{CEO} → {Age} (якщо нам відомий генеральний директор, то нам відомий і вік).

Отже, за правилом транзитивної залежності, {Company} → {Age} має виконуватися, що має сенс, оскільки якщо ми знаємо назву компанії, ми можемо знайти її вік.

Примітка: транзитивна залежність може виникати лише у відношенні з трьома або більше атрибутами.

Що таке нормалізація?

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

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

Переваги функціональної залежності

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

Поширені запитання

Визначник — це атрибут ліворуч від стрілки, який фіксує значення. Залежний — це атрибут праворуч, значення якого визначається. У X → Y, X визначає Y.

Функціональна залежність фіксує одне значення для залежного. Багатозначна залежність допускає набір незалежних значень, тому вона потребує власного атрибута та призводить до четвертої нормальної форми.

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

Так. Алгоритми виявлення залежностей, деякі з яких за допомогою штучного інтелекту, сканують набір даних і пропонують потенційні залежності. Розробник повинен їх підтвердити, оскільки шаблон, що є істинним у вибірці даних, може не виконуватися як правило.

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

Підсумуйте цей пост за допомогою: