Skip to main content

Multivalued Dependency i databaser

functional dependency in dbms (April 2025)

functional dependency in dbms (April 2025)
Anonim

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:

studenter
Student navnMajor
RaviKunst historie
BethKjemi

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:

studenter
Student navnMajorSport
RaviKunst historieFotball
RaviKunst historievolleyball
RaviKunst historieTennis
BethKjemiTennis
BethKjemiFotball

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.

Multivalued Dependency and Normalization

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:

Studenter og Majors
Student navnMajor
RaviKunst historie
RaviKunst historie
RaviKunst historie
BethKjemi
BethKjemi

Mens dette bordet også har en enkelt funksjonell avhengighet av Student_Name -> Sport:

Studenter og sport
Student navnSport
RaviFotball
Ravivolleyball
RaviTennis
BethTennis
BethFotball

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.