Skip to main content

Multivalued dependence i databaser

4th Normal Form (4NF) | Multi-Valued Dependency | Database Normalization (Juni 2026)

4th Normal Form (4NF) | Multi-Valued Dependency | Database Normalization (Juni 2026)
Anonim

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:

Studerende
ElevnavnMajor
RaviKunsthistorie
BethKemi

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:

Studerende
ElevnavnMajorSport
RaviKunsthistorieFodbold
RaviKunsthistorieVolleyball
RaviKunsthistorieTennis
BethKemiTennis
BethKemiFodbold

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.

Multivalent afhængighed og normalisering

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:

Studerende og Majors
ElevnavnMajor
RaviKunsthistorie
RaviKunsthistorie
RaviKunsthistorie
BethKemi
BethKemi

Mens denne tabel også har en enkelt funktionel afhængighed af Student_Name -> Sport:

Studerende og sport
ElevnavnSport
RaviFodbold
RaviVolleyball
RaviTennis
BethTennis
BethFodbold

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.