En relasjon er en tabell der:
Det er punkt 5 som er viktig.
En kandidatnøkkel er et minimalt sett med attributter i en relasjon som entydig bestemmer en rad i relasjonen.
En primærnøkkel er det bestemte settet med attributter i en relasjon som er valgt blant relasjonens kandidatnøkler.
En fremmednøkkel i en relasjon er et sett med attributter som opptrer som en primærnøkkel i en annen relasjon.
Hvis det er en avengighet mellom attributter i en relasjon der A bestemmer B (A -> B), så er A en determinant. Her kan A og B være et sett med attributter.
NormalformeneFiguren til høyre viser alle normalformene, og det er normalt slik at en høyere normalform er fullstendig innehold i en lavere normalform. 1NF er den laveste normalformen. og DKNF er den høyeste normalformen. Normalformene 4NF og 5NF har så liten betydning, at de ikke vil bli beskrevet her.
Det er ikke alltid slik at føringene på en tabell (i en database)
er slik at det vil være mulig å få den på DKNF på grunn av spesielle (og sære) føringer. Et eksempel
er tabellen Kino(Tid, Sal, Film) med følgende funksjonsdiagram:
(Føringen (Tid, Sal) ->
Film kan leses ut fra tabellens definisjon av nøkler, men ikke føringen Film -> Sal). Tabellen er på
3NF, men ikke på BCNF. En tapsfri dekomposisjon av denne tabellen til to tabeller på BCNF er
Kino2(Tid, Film) og Film(Film, Sal). Men da mister man føringen (Tid, Sal) ->
Film som medfører at man ikke kan oppdatere tabellene uavhengig av hverandre. I dette tilfellet er det ikke
mulig å finne andre dekomposisjoner der tabellene er på DKNF.
Forholdet mellom 3NF, BCNF og DKNF er som vist på figuren
til høyre. Den må leses slik at en tabell som er på BCNF ikke nødvendigvis kan kan komme på DKNF,og at en tabell på DKNF ikke
nødvendigvis kan komme på BCNF. Spørsmålet er derfor om man skal beholde eller gi avkall på føringen som gjør at BCNF blir en problemstilling.
Beholder man føringen så er DKNF en uoppnåelig normalform, og gir en avkall på føringen så er DKNF oppnåelig.
Enhver tabell som oppfyller kravet til en relasjon er på 1NF.
En relasjon er på 2NF, hvis den er på 1NF, og alle attributter som ikke er en del av primærnøkkelen, er fullstendig avhengig av primærnøkkelen.
En relasjon er på 3NF, hvis den er på 2NF, og det ikke finnes avhengigheter mellom attributter som ikke er en del av primærnøkkelen.
En relasjon er på BCNF, hvis og bare hvis alle determinanter også er en kandidatnøkkel.
En relasjon er på DKNF, hvis alle føringene på relasjonen er en logisk konsekvens av attributtenes domener (verdiområder) og relasjonens nøkler (primær- og fremmednøkler). DKNF forsikrer at tabellene kan oppdateres uavhengig av hverandre.
![]()