Skip to content

Database-normalization & functional dependencies cheatsheet

Keys / Nøgler

ConceptDescription
Primærnøgle (primary key) (pk)Den valgte unikke nøgle for tabellen, ingen NULL, entydig pr. række
Kandidatnøgle (candidate key)Et minimalt sæt kolonner der entydigt identificerer en række. Der kan være flere.
Eksempel: (studentID, email) hvis begge (hver for sig) er unikke → to kandidatnøgler.
Supernøgle (superkey)Ethvert sæt kolonner der gør rækker unikke (må gerne indeholde overflødige kolonner).
Eksempel: (studentID, email, name) er en supernøgle
Alternativ nøgle (alternate key)En kandidatnøgle, som ikke er valgt som primærnøgle
Sammensat nøgle (composite key)Nøgle bestående af flere kolonner
Surrogate keyKunstig nøgle (typisk et løbenummer)
Prime attributeEn attribut der er del af en kandidatnøgle
non-prime attributeEn attribut der ikke er del af nogen kandidatnøgle

Functional Dependencies / Funktionelle afhængigheder

ConceptDescription
Funktionel afhængighed (functional dependency (FD)En relation mellem to sæt af attributter i en tabel, hvor værdien af et sæt (det determinerende sæt) entydigt bestemmer værdien af et andet sæt (det afhængige sæt).
Noteret som X -> Y, hvor X determinerer Y.
f.eks. personnummer -> navn
DeterminantDet sæt af attributter der bestemmer værdien af et andet sæt (venstre side af FD)
fra tidligere eksempel personnummer
Fuld funktionel afhængighed (full functional dependency)En funktionel afhængighed hvor det afhængige sæt er fuldt afhængigt af hele det determinerende sæt, og ikke kun en delmængde.
f.eks. studentID, courseID -> grade
Partial afhængighed (partial dependency)En funktionel afhængighed hvor det afhængige sæt er afhængigt af kun en del af det determinerende sæt.
f.eks. studentID, courseID -> studentEmail (her er studentEmail kun afhængig af studentID)
Transitiv afhængighed (transitive dependency)En funktionel afhængighed hvor et attribut er afhængigt af et andet attribut, som igen er afhængigt af et tredje attribut.
f.eks. A -> B og B -> C implicerer A -> C

Normal Forms / Normalformer

NormalformBeskrivelseKrav
1NF (First Normal Form)Alle attributter indeholder kun atomare (udividerede) værdier, og hver række er unik.- Ingen gentagne grupper eller arrays.
- Hver celle indeholder kun én værdi.
- En entydig primærnøgle skal være defineret.
2NF (Second Normal Form)Opfylder 1NF og alle ikke-nøgle attributter er fuldt funktionelt afhængige af hele primærnøglen.- Opfylder 1NF.
- Ingen delvise afhængigheder af primærnøglen (gælder kun for sammensatte nøgler).
3NF (Third Normal Form)Opfylder 2NF og ingen ikke-nøgle attributter er transitivt afhængige af primærnøglen.- Opfylder 2NF.
- Ingen transitive afhængigheder mellem ikke-nøgle attributter.
BCNF (Boyce-Codd Normal Form)En strengere version af 3NF hvor hver determinant er en kandidatnøgle.- For hver funktionel afhængighed X -> Y, skal X være en kandidatnøgle.

Anomalier (symptomer på dårlig struktur)

AnomaliBeskrivelse
Indsætnings-anomalier (insertion anomalies)Problemer med at indsætte data på grund af manglende andre data.
Sletnings-anomalier (deletion anomalies)Problemer med at slette data uden at miste andre nødvendige data.
Opdaterings-anomalier (update anomalies)Problemer med at opdatere data på grund af redundans, hvilket kan føre til inkonsistens.