Normalformer

Tilbake

Definisjon av en relasjon

En relasjon er en tabell der:

  1. Radene inneholder data om en entitet (et objekt)
  2. Alle kolonnene har et entydig navn (attributtnavn)
  3. Verdiene i en kolonne er alle av samme type
  4. Kolonnene inneholder data om et attributt (en egenskap) til entiteter
  5. Rutene i tabellen inneholder bare én verdi (atomisk verdi)
  6. Rekkefølgen på kolonnene er uten betydning
  7. Rekkefølgen på radene er uten betydning
  8. To rader kan ikke være like

Det er punkt 5 som er viktig.


Definisjon av en kandidatnøkkel

En kandidatnøkkel er et minimalt sett med attributter i en relasjon som entydig bestemmer en rad i relasjonen.


Definisjon av en primærnøkkel

En primærnøkkel er det bestemte settet med attributter i en relasjon som er valgt blant relasjonens kandidatnøkler.


Definisjon av en fremmednøkkel

En fremmednøkkel i en relasjon er et sett med attributter som opptrer som en primærnøkkel i en annen relasjon.


Definisjon av en determinant

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.


Normalformer Normalformene

Figuren 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: BCNF (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.

Normalformer2 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.


1NF (første normalform)

Enhver tabell som oppfyller kravet til en relasjon er på 1NF.


2NF (andre normalform)

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.


3NF (tredje normalform)

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.


BCNF (Boyce-Codd)

En relasjon er på BCNF, hvis og bare hvis alle determinanter også er en kandidatnøkkel.


DKNF (Domain Key)

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.


Tilbake

Valid XHTML 1.0 Strict