В релационна база данни възниква зависимост, когато информацията, съхранена в същата таблица на базата данни, уникално определя друга информация, съхранена в същата таблица. Многозначна зависимост възниква, когато наличието на един или повече редове в таблица предполага наличието на един или повече други редове в същата таблица. Казано по друг начин, два атрибута (или колони) в таблица са независими един от друг, но и двата зависят от трети атрибут.
Многозначна зависимост предотвратява стандартната четвърта нормална форма за нормализиране. Релационните бази данни следват пет нормални форми, които представляват насоки за дизайн на записи. Те предотвратяват аномалии при актуализиране и несъответствия в данните. Четвъртата нормална форма се занимава с релации много към едно в база данни.
Функционална зависимост срещу многозначна зависимост
За да разберете многозначната зависимост, е полезно да преразгледате какво е функционална зависимост.
Ако атрибут X уникално определя атрибут Y, тогава Y е функционално зависим от X. Това се записва като X -> Y. Например в таблицата Студенти по-долу Student_Name определя специалността:йени
Име_на_ученик | Специалност |
---|---|
Рави | История на изкуството |
Бет | Химия |
Тази функционална зависимост може да бъде написана: Student_Name -> Major. Всяко Student_Name определя точно една специалност и не повече.
Ако искате базата данни да проследява и спортовете, които тези ученици практикуват, може би смятате, че най-лесният начин да направите това е просто да добавите друга колона, озаглавена Sport:
Име_на_ученик | Специалност | Спорт |
---|---|---|
Рави | История на изкуството | футбол |
Рави | История на изкуството | Волейбол |
Рави | История на изкуството | Тенис |
Бет | Химия | Тенис |
Бет | Химия | футбол |
Проблемът тук е, че и Рави, и Бет играят няколко спорта. Необходимо е да добавите нов ред за всеки допълнителен спорт.
Тази таблица въвежда многозначна зависимост, тъй като специалността и спортът са независими един от друг, но и двата зависят от ученика. Това е прост пример и лесно разпознаваем, но многостойностната зависимост може да се превърне в проблем в голяма, сложна база данни.
Многозначна зависимост се записва X ->-> Y. В този случай:
Student_Name ->-> Major
Student_Name ->- > Спорт
Това се чете като "Името_на_студента определя специалността" и "Името_на студента определя много спорта."
Многозначната зависимост винаги изисква поне три атрибута, защото се състои от поне два атрибута, които зависят от трети.
Многозначна зависимост и нормализация
Таблица с многозначна зависимост нарушава стандарта за нормализиране на четвъртата нормална форма, защото създава ненужни излишъци и може да допринесе за непоследователни данни. За да доведете това до 4NF, е необходимо да разделите тази информация на две таблици.
Таблицата по-долу вече има функционална зависимост от Student_Name -> специалност и няма многостойностни зависимости:
Име_на_ученик | Специалност |
---|---|
Рави | История на изкуството |
Рави | История на изкуството |
Рави | История на изкуството |
Бет | Химия |
Бет | Химия |
Въпреки че тази таблица също има една единствена функционална зависимост от Student_Name -> Sport:
Име_на_ученик | Спорт |
---|---|
Рави | футбол |
Рави | Волейбол |
Рави | Тенис |
Бет | Тенис |
Бет | футбол |
Нормализирането често се постига чрез опростяване на сложни таблици, така че да съдържат информация, свързана с една идея или тема, вместо да се опитвате да направите една таблица да съдържа твърде много различна информация.