I en relationsdatabase opstår der en afhængighed, når informationen, der er lagret i den samme database tabel, bestemmer unikt andre oplysninger, der er gemt i samme tabel. En multivalued afhængighed opstår, når tilstedeværelsen af en eller flere rækker i en tabel indebærer tilstedeværelsen af en eller flere andre rækker i samme tabel. Angiv en anden måde, to attributter (eller kolonner) i en tabel er uafhængige af hinanden, men begge afhænger af en tredje attribut.
En multivalued afhængighed forhindrer normaliseringsstandarden fjerde normal form (4NF). Relationsdatabaser følger fem normale formularer, der repræsenterer retningslinjer for rekorddesign. De forhindrer opdateringsanomalier og inkonsekvenser i dataene. Den fjerde normale form omhandler mange-til-en-relationer i en database.
Funktionel afhængighed versus multivalent afhængighed
For at forstå en multivalent afhængighed er det nyttigt at se, hvad en funktionel afhængighed er.
Hvis en egenskab X unikt bestemmer en attribut Y, er Y funktionelt afhængig af X. Dette er skrevet som X -> Y. For eksempel i Student-tabellen nedenfor bestemmer Student_Name Major:
| Elevnavn | Major |
|---|---|
| Ravi | Kunsthistorie |
| Beth | Kemi |
Denne funktionelle afhængighed kan skrives: Student_Name -> Major . Hver Student_Name bestemmer nøjagtigt en major og ikke mere. Hvis du vil have, at databasen også skal følge de sportsgrene, som disse studerende tager, kan du måske synes, at den nemmeste måde at gøre dette på er at blot tilføje en anden kolonne med titlen Sport: Problemet her er, at både Ravi og Beth spiller flere sportsgrene. Det er nødvendigt at tilføje en ny række til hver ekstra sport. Denne tabel har introduceret en multivalent afhængighed, fordi hovedrollen og sporten er uafhængige af hinanden, men begge afhænger af den studerende. Dette er et simpelt eksempel og let kan identificeres, men en multivaluel afhængighed kan blive et problem i en stor, kompleks database. En multivalued afhængighed er skrevet X -> -> Y. I dette tilfælde: Elevnavn ->-> MajorElevnavn->-> Sport
Dette læses som "Student_Name multidetermines Major" og "Student_Name multidetermines Sport." En multivalued afhængighed kræver altid mindst tre attributter, fordi den består af mindst to attributter, der er afhængige af en tredjedel. Et bord med en multivalent afhængighed overtræder normaliseringsstandarden for fjerde normal formular (4NK), fordi den skaber unødvendige afskedigelser og kan bidrage til inkonsekvente data. For at bringe dette op til 4NF er det nødvendigt at bryde disse oplysninger i to tabeller. Tabellen nedenfor har nu en funktionel afhængighed af Student_Name -> Major, og ingen multivalued afhængigheder: Mens denne tabel også har en enkelt funktionel afhængighed af Student_Name -> Sport: Det er klart, at normalisering ofte behandles ved at forenkle komplekse tabeller, så de indeholder oplysninger relateret til en enkelt ide eller et tema i stedet for at forsøge at lave et enkelt bord indeholder for mange forskellige oplysninger.Elevnavn Major Sport Ravi Kunsthistorie Fodbold Ravi Kunsthistorie Volleyball Ravi Kunsthistorie Tennis Beth Kemi Tennis Beth Kemi Fodbold Multivalent afhængighed og normalisering
Elevnavn Major Ravi Kunsthistorie Ravi Kunsthistorie Ravi Kunsthistorie Beth Kemi Beth Kemi Elevnavn Sport Ravi Fodbold Ravi Volleyball Ravi Tennis Beth Tennis Beth Fodbold




