Skip to main content

Fuld funktionel afhængighed i database normalisering

YuXin 3x3 Treasure Box | MasterCubeStore.dk (April 2025)

YuXin 3x3 Treasure Box | MasterCubeStore.dk (April 2025)
Anonim

En fuld funktionel afhængighed er en tilstand af database normalisering, der svarer til normaliseringsstandarden for anden normal form (2NF). Kort sagt betyder det, at det opfylder kravene i First Normal Form (1NF), og alle ikke-nøgleattributter er fuldt funktionelt afhængige af primærnøglen.

Dette er ikke så kompliceret, som det måske lyder. Lad os se nærmere på dette.

Resumé af første normale formular

Før en database kan være fuldt funktionel afhængig, skal den først overholde Første Normal Form.

Alt dette betyder, at hver attribut skal indeholde en enkelt atomværdi.

For eksempel gør følgende tabel ikke overholde 1NF, fordi medarbejderen Tina er knyttet til to steder, begge i en enkelt celle:

Første Normal Form Ikke-Overensstemmelse
medarbejder Beliggenhed
John Los Angeles
Tina Los Angeles, Chicago

Tilladelse af dette design kan påvirke dataopdateringer eller -indgange negativt. For at sikre overholdelse af 1NF skal du omarrangere bordet, så alle attributter (eller kolonneceller) har en enkelt værdi:

Første Normal Form Compliance

medarbejder Beliggenhed John Los Angeles Tina Los Angeles Tina Chicago

Men 1NF er stadig ikke nok til at undgå problemer med dataene.

Hvordan 2NF arbejder for at sikre fuld afhængighed

For at være fuldt afhængig skal alle ikke-kandidatnøgleattributter afhænge af primærnøglen. (Husk, at en kandidatnøgleattribut er en hvilken som helst nøgle (for eksempel en primær eller en udenlandsk nøgle), der bruges til at identificere en databasepost entydigt.

Databasedesignere bruger en notation til at beskrive de afhængige relationer mellem attributter:

Hvis attribut A bestemmer værdien af ​​B, skriver vi detteA -> B- hvilket betyder, at B er funktionelt afhængig af A. I dette forhold bestemmer A værdien af ​​B, mens B afhænger af A.

For eksempel i det følgende Medarbejderafdelinger tabel, EmployeeID og DeptID er begge kandidatnøgler: EmployeeID er bordets primære nøgle, mens DeptID er en fremmednøgle.

Enhver anden attribut - i dette tilfælde, EmployeeName og DeptName - skal afhænge af den primære nøgle for at opnå dens værdi.

Medarbejderafdelinger
Medarbejder-ID Ansattes navn DeptID DEPTNAME
EMP1 John Dept001 Finansiere
Emp2 Tina Dept003 Salg
Emp3 Carlos Dept001 Finansiere

I dette tilfælde er tabellen ikke fuldt afhængig, fordi medarbejdernavnet afhænger af den primære nøgle EmployeeID, afhænger DeptName i stedet på DeptID. Dette kaldes delvis afhængighed .

For at gøre denne tabel i overensstemmelse med 2NF, skal vi adskille dataene i to tabeller:

medarbejdere
Medarbejder-ID Ansattes navn DeptID
EMP1 John Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

Vi fjerner DeptName attributten fra medarbejdere bord og opret en ny tabel Afdelinger :

Afdelinger
DeptID DEPTNAME
Dept001 Finansiere
Dept002 Menneskelige ressourcer
Dept003 Salg

Nu er forholdet mellem tabellerne helt afhængige, eller i 2NF.

Hvorfor fuld afhængighed er vigtig

Fuld afhængighed mellem databaseattributter hjælper med at sikre dataintegritet og undgå dataanomalier.

Se for eksempel tabellen i ovenstående afsnit, der kun overholder 1NF. Her er det igen:

Første Normal Form Compliance
medarbejder Beliggenhed
John Los Angeles
Tina Los Angeles
Tina Chicago

Tina har to optegnelser. Hvis vi opdaterer en uden at indse, at der er to, vil resultatet være inkonsekvente data.

Eller hvad hvis vi vil tilføje en medarbejder til denne tabel, men vi kender endnu ikke lokationen? Vi må måske ikke tillades at tilføje en ny medarbejder, hvis placeringsattributten ikke tillader NULL-værdier.

Fuld afhængighed er dog ikke hele billedet, når det kommer til normalisering. Du skal sørge for, at din database er i tredje normale formular (3NF).