I en relasjonsdatabase oppstår en avhengighet når informasjonen som er lagret i den samme databasetabellen, unikt bestemmer annen informasjon lagret i samme tabell. En multivalued avhengighet oppstår når tilstedeværelsen av en eller flere rader i et bord innebærer tilstedeværelse av en eller flere andre rader i samme tabell. Sett på en annen måte, to attributter (eller kolonner) i et bord er uavhengige av hverandre, men begge er avhengig av et tredje attributt.
En multivalued avhengighet forhindrer normaliseringsstandarden fjerde normal form (4NF). Relasjonsdatabaser følger fem vanlige skjemaer som representerer retningslinjer for rekorddesign. De forhindrer oppdateringsanomalier og inkonsekvenser i dataene. Den fjerde normale formen omhandler mange-til-en-relasjoner i en database.
Funksjonell Dependence vs Multivalued Dependency
For å forstå en multivalued avhengighet, er det nyttig å se på hva en funksjonell avhengighet er.
Hvis et attributt X unikt bestemmer et attributt Y, er Y funksjonelt avhengig av X. Dette er skrevet som X -> Y. For eksempel, i Student-tabellen nedenfor, bestemmer Student_Name Major:
Student navn | Major |
---|---|
Ravi | Kunst historie |
Beth | Kjemi |
Denne funksjonelle avhengigheten kan skrives: Student_Name -> Major . Hver Student_Name bestemmer nøyaktig en Major og ikke mer. Hvis du vil at databasen også skal spore sportene som disse elevene tar, kan du kanskje tro at den enkleste måten å gjøre dette på er å bare legge til en annen kolonne med tittelen Sport: Problemet her er at både Ravi og Beth spiller flere idretter. Det er nødvendig å legge til en ny rad for hver ekstra sport. Denne tabellen har innført en multivalued avhengighet fordi hovedrollen og sporten er uavhengige av hverandre, men begge er avhengige av studenten. Dette er et enkelt eksempel og lett identifiserbart, men en multivaliell avhengighet kan bli et problem i en stor, kompleks database. En multivalued dependence er skrevet X -> -> Y. I dette tilfellet: Student navn ->-> MajorStudent navn->-> Sport
Dette er lest som "Student_Name multidetermines Major" og "Student_Name multidetermines Sport." En multivalued dependence krever alltid minst tre attributter fordi den består av minst to attributter som er avhengig av en tredjedel. Et bord med en multivalent avhengighet bryter normaliseringsstandarden for fjerde normalformular (4NK) fordi den skaper unødvendige redundanser og kan bidra til inkonsekvente data. For å bringe dette opp til 4NF, er det nødvendig å bryte denne informasjonen i to tabeller. Tabellen nedenfor har nå en funksjonell avhengighet av Student_Name -> Major, og ingen multivalued avhengigheter: Mens dette bordet også har en enkelt funksjonell avhengighet av Student_Name -> Sport: Det er klart at normalisering ofte håndteres ved å forenkle komplekse tabeller slik at de inneholder informasjon relatert til en enkelt ide eller et tema i stedet for å prøve å lage et enkelt bord, inneholder for mye forskjellig informasjon.Student navn Major Sport Ravi Kunst historie Fotball Ravi Kunst historie volleyball Ravi Kunst historie Tennis Beth Kjemi Tennis Beth Kjemi Fotball Multivalued Dependency and Normalization
Student navn Major Ravi Kunst historie Ravi Kunst historie Ravi Kunst historie Beth Kjemi Beth Kjemi Student navn Sport Ravi Fotball Ravi volleyball Ravi Tennis Beth Tennis Beth Fotball