Багатозначна залежність у проектуванні баз даних

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

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

Функціональна залежність проти багатозначної залежності

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

Якщо атрибут X однозначно визначає атрибут Y, Y функціонально залежить від X. Це записується як X - > Y. Наприклад, у таблиці учнів нижче, Student_Name визначає Major:

Ця функціональна залежність може бути записана: Student_Name -> Major . Кожне Student_Name визначає рівно один Major і не більше.

Якщо ви хочете, щоб база даних також відстежувала види спорту, якими займаються ці студенти, ви можете подумати, що найпростіший спосіб зробити це - просто додати ще один стовпчик під назвою Спорт:

Проблема в тому, що Раві і Бет займаються кількома видами спорту. Необхідно додати новий рядок для кожного додаткового виду спорту.

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

Багатозначна залежність записується X - > - > Y. У цьому випадку:

Student_Name   -> ->  Major
Student_Name  -> ->  Спорт

Це читається як «Student_Name multidetermines визначає Major» і «Student_Name multidetermines визначає Sport».

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

Багатозначна залежність і нормалізація

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

Таблиця нижче тепер має функціональну залежність Student_Name - > Major і не має багатозначних залежностей:

Хоча ця таблиця також має одну функціональну залежність Student_Name - > Sport:

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