Tredje normalform

Den tredje normalform ( eng.  Tredje normalform ; forkortet 3NF ) er en af ​​de mulige normalformer for en relation i en relationsdatabase . 3NF blev oprindeligt formuleret af E. F. Codd i 1971 .

Definition

En relationsvariabel R er i 3NF, hvis og kun hvis følgende betingelser er sande:

Forklaringer til definitionen:

En ikke-nøgleattribut af en relation R  er en egenskab, der ikke hører til nogen af ​​kandidatnøglerne til R .

Den funktionelle afhængighed  af et attributsæt Z på et attributsæt X (skrevet X → Z , udtales "x bestemmer z") er transitiv , hvis der er et attributsæt Y , således at X → Y og Y → Z. Samtidig er ingen af ​​mængderne X , Y og Z en delmængde af den anden, dvs. de funktionelle afhængigheder X → Z , X → Y og Y → Z er ikke trivielle , og der er heller ingen funktionel afhængighed Y → X.

En definition af 3NF svarende til Codds, men formuleret anderledes, blev givet af Carlo Zaniolo i 1982 . Ifølge den er en relationsvariabel i 3NF, hvis og kun hvis hver af dens funktionelle afhængigheder X → A opfylder mindst én af følgende betingelser:

Zaniolos definition definerer klart forskellen mellem 3NF og den mere stringente Boyce-Codd Normal Form (BCNF): BCNF eliminerer den tredje betingelse (" A  er en nøgleegenskab").

"Intet andet end nøglen"

Et mindeværdigt og traditionelt beskrivende resumé af Codds 3NF-definition blev givet af Bill Kent : hver ikke-nøgle-attribut "bør give information om nøglen, den fulde nøgle og intet andet end nøglen" [1] .

Betingelsen for at være afhængig af "fuld nøgle" af ikke-nøgle attributter sikrer, at relationen er i anden normal form; og betingelsen for, at de er afhængige af "intet andet end nøglen", er, at de er i tredje normalform.

Chris Date taler om Kents resumé som et "intuitivt attraktivt træk" af 3NF og bemærker, at det med en lille modifikation også kan tjene som en definition af den strengere Boyce-Codd-normalform : "hver egenskab skal give information om en nøgle , en fuld nøgle, og hverken andet end nøglen. Kents version af 3NF-definitionen er mindre streng end Boyce-Codds normalformversion af Datas formulering, da førstnævnte kun siger, at ikke-nøgleattributter afhænger af nøgler. Primære attributter (som er nøgler eller dele af dem) behøver slet ikke at være funktionelt afhængige; hver af dem giver information om nøglen ved at give selve nøglen eller en del af den. Det skal bemærkes her, at denne regel kun er gyldig for ikke-nøgleattributter, da anvendelsen af ​​den på alle attributter fuldstændigt vil deaktivere alle komplekse alternative nøgler, da hvert element i en sådan nøgle vil overtræde betingelsen "fuld nøgle".

Eksempel

Betragt relationsvariablen R1 som et eksempel:

R1
Medarbejder Afdeling Telefon
Grishin Regnskab 11-22-33
Vasiliev Regnskab 11-22-33
Petrov Levere 44-55-66

Hver medarbejder tilhører udelukkende én afdeling; hver afdeling har en enkelt telefon. Employee- attributten er den primære nøgle. Medarbejderne har ikke personlige telefoner, og medarbejderens telefonnummer afhænger udelukkende af afdelingen.

I eksemplet findes følgende funktionelle afhængigheder: Medarbejder → Afdeling , Afdeling → Telefon , Medarbejder → Telefon .

Relationsvariablen R1 er i anden normal form , fordi hver attribut har en irreducerbar funktionel afhængighed af den potentielle nøgle Medarbejder .

Relationen Medarbejder → Telefon er transitiv, så relationen er ikke i tredje normalform.

Opdeling af R1 resulterer i to relationsvariable, der er i 3NF:

R2
Afdeling Telefon
Regnskab 11-22-33
Levere 44-55-66
R3
Medarbejder Afdeling
Grishin Regnskab
Vasiliev Regnskab
Petrov Levere

Den indledende relation R1, om nødvendigt, opnås let som et resultat af operationen med at forbinde relationerne R2 og R3.

Se også

Noter

  1. Kent, William. "A Simple Guide to Five Normal Forms in Relational Database Theory" Arkiveret 2. februar 2007 på Wayback Machine , Communications of the ACM 26 (2), Feb. 1983, s. 120-125.

Litteratur