W relacyjnej bazie danych występuje zależność, gdy informacje przechowywane w tej samej tabeli bazy danych jednoznacznie określają inne informacje przechowywane w tej samej tabeli. Zależność wielowartościowa występuje wtedy, gdy obecność jednego lub więcej wierszy w tabeli implikuje obecność jednego lub więcej innych wierszy w tej samej tabeli. Innymi słowy, dwa atrybuty (lub kolumny) w tabeli są niezależne od siebie, ale oba zależą od trzeciego atrybutu.
Zależność wielowartościowa uniemożliwia standardowi normalizacji czwartą normalną formę (4NF). Relacyjne bazy danych to pięć normalnych formularzy, które stanowią wytyczne dla rekordowego projektu. Zapobiegają anomalii aktualizacji i niespójności w danych. Czwarta normalna forma zajmuje się relacjami wiele-do-jednego w bazie danych.
Funkcjonalna zależność vs. wielowartościowa zależność
Aby zrozumieć wielowartościową zależność, warto ponownie sprawdzić, jaka jest zależność funkcjonalna.
Jeśli atrybut X jednoznacznie określa atrybut Y, to Y jest funkcjonalnie zależny od X. Jest to zapisane jako X -> Y. Na przykład w tabeli Studenci poniżej, Nazwa Studenta określa Major:
Student_Name | Poważny |
---|---|
Ravi | Historia sztuki |
Beth | Chemia |
Ta funkcjonalna zależność może być napisana: Student_Name -> Major . Każda nazwa_użytkownika określa dokładnie jedną główną i nic więcej. Jeśli chcesz, aby baza danych również śledziła, jakie sporty biorą ci uczniowie, możesz pomyśleć, że najprostszym sposobem na to jest dodanie kolejnej kolumny zatytułowanej Sport: Problem polega na tym, że zarówno Ravi, jak i Beth grają wiele sportów. Konieczne jest dodanie nowego wiersza dla każdego dodatkowego sportu. Ta tabela wprowadziła wielowartościową zależność, ponieważ główny i sport są niezależne od siebie, ale oba zależą od ucznia. Jest to prosty przykład i łatwy do zidentyfikowania, ale zależność wielowartościowa może stać się problemem w dużej, złożonej bazie danych. Zależność wielowartościową zapisano X -> -> Y. W tym przypadku: Student_Name ->-> PoważnyStudent_Name->-> Sport
To jest czytane jako "Student_Name multidetermines Major" i "Student_Name multidetermines Sport". Zależność wielowartościowa zawsze wymaga co najmniej trzech atrybutów, ponieważ składa się z co najmniej dwóch atrybutów zależnych od trzeciej. Tabela z uzależnieniem wielowartościowym narusza standard normalizacji czwartej formy normalnej (4NK), ponieważ tworzy niepotrzebne zwolnienia i może przyczyniać się do niespójnych danych. Aby doprowadzić to do 4NF, konieczne jest podzielenie tych informacji na dwie tabele. Poniższa tabela ma teraz zależność funkcjonalną od Nazwa_użytkownika -> Główna i bez zależności wielowartościowych: Podczas gdy ta tabela ma również jedną funkcjonalną zależność od Nazwa_menedii -> Sport: Jasne jest, że normalizację często rozwiązuje się, upraszczając złożone tabele, tak aby zawierały informacje związane z jedną ideą lub tematem, zamiast próbować sprawić, by pojedyncza tabela zawierała zbyt wiele odmiennych informacji.Student_Name Poważny Sport Ravi Historia sztuki Piłka nożna Ravi Historia sztuki Siatkówka Ravi Historia sztuki Tenis ziemny Beth Chemia Tenis ziemny Beth Chemia Piłka nożna Zależność wielowartościowa i normalizacja
Student_Name Poważny Ravi Historia sztuki Ravi Historia sztuki Ravi Historia sztuki Beth Chemia Beth Chemia Student_Name Sport Ravi Piłka nożna Ravi Siatkówka Ravi Tenis ziemny Beth Tenis ziemny Beth Piłka nożna