Appearance
Database-normalization & functional dependencies cheatsheet
Keys / Nøgler
| Concept | Description |
|---|---|
| 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 key | Kunstig nøgle (typisk et løbenummer) |
| Prime attribute | En attribut der er del af en kandidatnøgle |
| non-prime attribute | En attribut der ikke er del af nogen kandidatnøgle |
Functional Dependencies / Funktionelle afhængigheder
| Concept | Description |
|---|---|
| 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 |
| Determinant | Det 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
| Normalform | Beskrivelse | Krav |
|---|---|---|
| 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)
| Anomali | Beskrivelse |
|---|---|
| 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. |