Funktionel afhængighed i DBMS: Typer med eksempler
⚡ Smart opsummering
Funktionel afhængighed er en begrænsning, der bestemmer, hvordan en attribut relaterer sig til en anden i et databasesystem. Den understøtter normalisering ved at identificere determinanter og afhængige, og den klassificeres i flerværdi-, trivielle, ikke-trivielle og transitive afhængigheder.
Hvad er funktionel afhængighed?
Funktionel afhængighed (FD) er en begrænsning, der bestemmer forholdet mellem en attribut og en anden attribut i et databasestyringssystem (DBMS). Funktionel afhængighed hjælper med at opretholde datakvaliteten i databasen. Den spiller en afgørende rolle i at finde forskellen mellem godt og dårligt databasedesign.
En funktionel afhængighed er angivet med en pil "→". Den funktionelle afhængighed af Y på X er repræsenteret ved X → Y. Lad os forstå den funktionelle afhængighed med et eksempel.
Eksempel:
| Medarbejdernummer | Ansattes navn | Løn | By |
|---|---|---|---|
| 1 | Dana | 50000 | San Francisco |
| 2 | Francis | 38000 | London |
| 3 | Andrew | 25000 | Tokyo |
I dette eksempel, hvis vi kender værdien af medarbejdernummer, kan vi få medarbejdernavn, by, løn osv. Dermed kan vi sige, at by, medarbejdernavn og løn funktionelt er afhængige af medarbejdernummer.
Vigtige vilkår
Her er nogle nøglebegreber for funktionel afhængighed i en database:
| Vigtige vilkår | Beskrivelse |
|---|---|
| Axiom | Aksiomer er et sæt af inferensregler, der bruges til at udlede alle funktionelle afhængigheder i en relationsdatabase. |
| nedbrydning | En regel, der antyder, at hvis du har en tabel, der tilsyneladende indeholder to enheder bestemt af den samme primærnøgle, bør du overveje at opdele den i to forskellige tabeller. |
| Afhængig | Den vises i højre side af diagrammet over funktionel afhængighed. |
| determinanten | Den vises i venstre side af diagrammet over funktionel afhængighed. |
| Union | Det antyder, at hvis to tabeller er separate, og primærnøglen er den samme, bør du overveje at sætte dem sammen. |
Regler for funktionelle afhængigheder (Armstrongs aksiomer)
Nedenfor er de tre vigtigste regler for funktionel afhængighed i en database. De er kendt som Armstrongs aksiomer, og alle andre inferensregler kan udledes af dem.
- Refleksiv regel: Hvis X er et sæt af attributter, og Y er en delmængde af X, så gælder X → Y.
- Forøgelsesregel: Når X → Y gælder, og C er en attributmængde, gælder XC → YC også. Tilføjelse af attributter ændrer ikke den grundlæggende afhængighed.
- Transitivitetsregel: Svarende til den transitive regel i algebra: hvis X → Y gælder og Y → Z gælder, så gælder X → Z også.
Tre yderligere regler er afledt af disse og anvendes konstant i praksis:
- Unionsregel: Hvis X → Y og X → Z, så er X → YZ.
- Nedbrydningsregel: Hvis X → YZ, så er X → Y og X → Z.
- Pseudo-transitivitetsregel: Hvis X → Y og WY → Z, så er WX → Z.
Gentagen anvendelse af disse regler på et sæt af afhængigheder producerer dens lukning, det komplette sæt af afhængigheder, der logisk følger. Lukningen af et attributsæt er også måden, hvorpå kandidatnøgler findes, hvilket er direkte forbundet med studiet af DBMS-nøgler.
Typer af funktionelle afhængigheder i DBMS
Der er primært fire typer funktionelle afhængigheder i DBMS:
- Flerværdiafhængig afhængighed
- Triviel funktionel afhængighed
- Ikke-triviel funktionel afhængighed
- Transitiv afhængighed
Flerværdiafhængig afhængighed i DBMS
Flerværdiafhængighed opstår i en situation, hvor der er flere uafhængige flerværdiattributter i en enkelt tabel. En flerværdiafhængighed er en fuldstændig begrænsning mellem to sæt attributter i en relation, der kræver, at bestemte tupler er til stede. Overvej følgende eksempel.
Eksempel:
| Bilmodel | Maf_år | Farve |
|---|---|---|
| H001 | 2017 | Metallic |
| H001 | 2017 | Grøn |
| H005 | 2018 | Metallic |
| H005 | 2018 | Blå |
| H010 | 2015 | Metallic |
| H033 | 2012 | Grå |
I dette eksempel er Maf_year og Color uafhængige af hinanden, men afhængige af Car_model. Disse to kolonner siges at være flerværdiafhængige af Car_model. Dette repræsenteres som:
bilmodel → mav_år
bilmodel → farve
Triviel funktionel afhængighed i DBMS
En triviel afhængighed er et sæt af attributter, der kaldes triviel, hvis sættet af attributter er inkluderet i den pågældende attribut. Så X → Y er en triviel funktionel afhængighed, hvis Y er en delmængde af X. Overvej eksemplet nedenfor.
| Emp_id | Emp_name |
|---|---|
| AS555 | Harry |
| AS811 | George |
| AS999 | Kevin |
Betragt denne tabel med to kolonner, Emp_id og Emp_name. {Emp_id, Emp_name} → Emp_id er en triviel funktionel afhængighed, da Emp_id er en delmængde af {Emp_id, Emp_name}.
Ikke-triviel funktionel afhængighed i DBMS
En ikke-triviel afhængighed opstår, når A → B gælder, og B ikke er en delmængde af A. Hvis attribut B ikke er en delmængde af attribut A, betragtes afhængigheden som ikke-triviel.
| Firmanavn | CEO | Alder |
|---|---|---|
| Microsoft | Satya Nadella | 51 |
| Sundar Pichai | 46 | |
| Apple | Tim Cook | 57 |
Eksempel:
{Firma} → {Administrerende direktør} (hvis vi kender virksomheden, kender vi også navnet på administrerende direktør). Men administrerende direktør er ikke en delmængde af Firma, og derfor er det en ikke-triviel funktionel afhængighed.
Transitiv afhængighed i DBMS
En transitiv afhængighed er en type funktionel afhængighed, der opstår, når en attribut indirekte bestemmes af to funktionelle afhængigheder. Overvej eksemplet nedenfor.
| Firmanavn | CEO | Alder |
|---|---|---|
| Microsoft | Satya Nadella | 51 |
| Sundar Pichai | 46 | |
| Alibaba | Jack Ma | 54 |
{Virksomhed} → {Administrerende direktør} (hvis vi kender virksomheden, kender vi også dens administrerende direktørs navn).
{Administrerende direktør} → {Alder} (hvis vi kender administrerende direktør, kender vi alderen).
Derfor, ifølge reglen om transitiv afhængighed, bør {Company} → {Age} gælde, hvilket giver mening, fordi hvis vi kender virksomhedens navn, kan vi finde alderen.
Bemærk: Transitiv afhængighed kan kun forekomme i en relation af tre eller flere attributter.
Hvad er normalisering?
Normalisering er en metode til at organisere data i en database, der hjælper dig med at undgå dataredundans og anomalier ved indsættelse, opdatering og sletning. Det er en proces, hvor relationsskemaer analyseres baseret på deres forskellige funktionelle afhængigheder og primære nøgler.
Normalisering er en integreret del af relationel databaseteori. Det kan have den effekt, at data opdeles på tværs af yderligere tabeller, så hver fakta gemmes én gang. Hele processen er dækket i vejledningen til database normalisering, som bygger direkte på ovenstående afhængighedstyper.
Fordele ved funktionel afhængighed
- Funktionel afhængighed undgår dataredundans, så de samme data ikke gentages flere steder i database.
- Det hjælper dig med at opretholde datakvaliteten i databasen.
- Det hjælper dig med at definere betydningerne og begrænsningerne i databaser.
- Det hjælper dig med at identificere dårlige designs.
- Det hjælper dig med at finde fakta vedrørende databasedesignet.

