Skip to content

Flervärdesberoende i databasdesign

10 de juli de 2021
network connection 898821398 5b4395afc9e77c00370fd486

I en relationsdatabas uppstår ett beroende när informationen som lagras i samma databastabell unikt bestämmer annan information som är lagrad i samma tabell. Ett beräkning med flera värden uppstår när närvaron av en eller flera rader i en tabell innebär närvaron av en eller flera andra rader i samma tabell. På ett annat sätt är två attribut (eller kolumner) i en tabell oberoende av varandra, men båda är beroende av ett tredje attribut.

Ett beroende av flera värden förhindrar normaliseringsstandarden fjärde normala formen. Relationsdatabaser följer fem normala former som representerar riktlinjer för skivdesign. De förhindrar uppdateringsavvikelser och inkonsekvenser i data. Den fjärde normala formen behandlar många-till-en-förhållanden i en databas.

 

Funktionellt beroende vs flervärdesberoende

För att förstå ett flervärdesberoende är det bra att se över vad ett funktionellt beroende är. Om ett attribut X bestämmer ett attribut Y unikt, är Y funktionellt beroende av X. Detta skrivs som X -> Y. Till exempel, i studenttabellen nedan, bestämmer Student_Name Majoren:

Elevs namn Större
Ravi Konsthistoria
Beth Kemi

Studenter

Detta funktionella beroende kan skrivas: Student_Name -> Major. Varje studentnamn bestämmer exakt en major och inte mer. Om du vill att databasen också ska spåra de sporter som dessa elever tar, kanske du tycker att det enklaste sättet att göra detta är att bara lägga till en annan kolumn med titeln Sport:

Elevs namn Större Sport
Ravi Konsthistoria Fotboll
Ravi Konsthistoria Volleyboll
Ravi Konsthistoria Tennis
Beth Kemi Tennis
Beth Kemi Fotboll

Studenter

Problemet här är att både Ravi och Beth spelar flera sporter. Det är nödvändigt att lägga till en ny rad för varje ytterligare sport. Denna tabell har infört ett flervärdesberoende eftersom majoren och sporten är oberoende av varandra men båda är beroende av eleven. Detta är ett enkelt exempel och lätt identifierbart, men ett beroende av flera värden kan bli ett problem i en stor, komplex databas. Ett beräkning med flera värden skrivs X -> -> Y. I det här fallet:

Elevs namn -> -> Större
Elevs namn -> -> Sport

Detta läses som ”Student_Name multidetermines Major” och ”Student_Name multidetermines Sport.” Ett flervärdesberoende kräver alltid minst tre attribut eftersom det består av minst två attribut som är beroende av ett tredje.

 

Flervärdesberoende och normalisering

En tabell med ett flervärdesberoende bryter mot normaliseringsstandarden för den fjärde normala formen eftersom den skapar onödiga uppsägningar och kan bidra till inkonsekvent data. För att få upp detta till 4NF är det nödvändigt att dela upp denna information i två tabeller. Tabellen nedan har nu ett funktionellt beroende av Student_Name -> Major och inga beroenden med flera värden:

Elevs namn Större
Ravi Konsthistoria
Ravi Konsthistoria
Ravi Konsthistoria
Beth Kemi
Beth Kemi

Studenter & Majors

Även om den här tabellen också har ett enda funktionellt beroende av Student_Name -> Sport:

Elevs namn Sport
Ravi Fotboll
Ravi Volleyboll
Ravi Tennis
Beth Tennis
Beth Fotboll

Studenter & Sport

Normalisering åstadkoms ofta genom att förenkla komplexa tabeller så att de innehåller information relaterad till en enda idé eller ett tema istället för att försöka få en enda tabell att innehålla för mycket olika information.