Normalisering af databaser: Tredje Normalform
Tredje normalform forkortes 3. NF. i ligehed med første og anden normalform.
Definition: En relation R er på tredje normalform, hvis den er på anden normalform og det gælder, at ingen ikke-nøgle-attribut er transitivt afhængig af nogen kandidatnøgle i R.
– Anden normalform SKAL være opfyldt.
– Ingen attributter må afhænge af andre attributter, der ikke selv er nøgler.
Ser vi på tabellen LAANER kan vi se at der er ting som ikke stemmer overens med reglerne i tredje normalform.
LAANER:
laanerId | Navn | Gade | Postnr | Bynavn |
101 | Poul | Avej | 8260 | Viby J |
201 | Britt | Bvej | 8000 | Århus |
– For det første er ’bynavn’ og ’postnr’ afhængige af hinanden, men ikke af ’laanerId’ som er primærnøgle.
– ‘navn’, ‘gade’, ‘postnr’, ‘bynavn’ er afhængige af ‘laanerId’, men samtidig er ‘bynavn’ også afhængig af ‘postnr’. Det hedder sig at ‘bynavn’ er transitivt afhængig af ‘laanerId’. Indirekte afhængig af den. Det skrives således:
(laanerId → navn, gade, postnr, bynavn men også
postnr → bynavn)
Jeg deler derfor tabellen LAANER op i to, så vi får:
LAANER:
laanerId | Navn | Gade | Postnr |
101 | Poul | Avej | 8260 |
201 | Britt | Bvej | 8000 |
POSTNUMMER:
Postnr | Bynavn |
8000 | Århus |
8260 | Viby J |
(Forestil dig at tabellen POSTNR er en tabel over alle postnumrer og byer i Danmark).
Efter jeg har delt tabellen i to, er ‘bynavn’ ikke længere afhængig af en attribut (postnr), som ikke er en nøgle.
‘postnr’ findes stadig i tabellen LAANER, da vi skal kunne identificere hvilken by en given låner kommer fra. Derved er begge tabeller normaliseret efter tredje normalform.
Læs om normalisering: 1. normalform
Læs om normalisering: 2. normalform
[...] Læs om 3. normalform her. [...]
Normalisering af en database: Første Normalform | 4. januar 2010 | 21:58[…] Læs om 3. normalform her. […]
Din definition af 3. NF er forkert - det er
allan helboe | 13. juni 2010 | 22:33Din definition af 3. NF er forkert – det er faktick Boyce-Codd NF du beskriver. 3. NF handler om transitiv funktionel afhængighed (A -> B -> C betyder at C er transitiv afhængig af A gennem B – f.eks. Id -> PostNr. -> By)
Jeg er netop blevet gjort opmærksom på at min kommentar
Allan Helboe | 7. september 2020 | 13:31Jeg er netop blevet gjort opmærksom på at min kommentar stadig er vist, selvom du nu har rettet din tekst.