Normalisering, eksempler
Der skal være en primærnøgle
| s_navn | password | koen |
| Jean | gulerod35 | mand |
| Helen | 123rty | kvinde |
| Simon | 456yui | mand |
Denne tabel har ikke nogen primærnøgle. Løsning: vælg en eller flere rækker, der vil være unikke, eller indfør en ny, kunstig
nøgle. I dette tilfælde kan vi ophøje s_navn til en primærnøgle. En primærnøgle kan fx. angives, ved at understrege dens navn.
| s_navn | password | koen |
| Jean | gulerod35 | mand |
| Helen | 123rty | kvinde |
| Simon | 456yui | mand |
Alle rækker skal være lige lange
| s_navn | c_navn1 | c_navn2 | c_navn3 |
| Jean | Den sjove | Den kedelige | Den lange |
| Helen | Den lange | | |
| Simon | Den kedelige | Den hemmelige | |
I denne tabel kan man se 3 spillere, og hvilke chatrooms, de er inde i. Rækkernes længde
afhænger af, hvor mange chatrooms den enkelte er inde i. Det må man ikke. Løsning: en tabel, hvor spillerne
opbevares, og en anden tabel, hvor den enkelte spiller-chatroom-forbindelse har en række hver.
|
|
| s_navn | c_navn |
| Jean | Den sjove |
| Jean | Den kedelige |
| Jean | Den lange |
| Helen | Den lange |
| Simon | Den kedelige |
| Simon | Den hemmelige |
|
En søjle skal altid indeholde den samme slags data hele vejen ned, og må ikke have tomme felter undervejs
| s_navn | fastnet | koen |
| Jean | 12345678 | mand |
| Helen | | kvinde |
| Simon | 98765432 | mand |
Problemet minder om det ovenstående problem, hvor rækkerne ikke var lige lange, og løses på samme måde.
| s_navn | koen |
| Jean | mand |
| Helen | kvinde |
| Simon | mand |
|
| s_navn | fastnet |
| Jean | 12345678 |
| Simon | 98765432 |
|
To søjler må ikke have samme slags data
| s_navn | fastnet | mobil |
| Jean | 12345678 | 87654321 |
| Helen | 65432123 | 23456789 |
| Simon | 98765432 | 67890987 |
Der er 2 søjler til telefonnumre. Der laves en ny tabel, kun til telefonnumre, og typen af telefon bliver et nyt felt.
|
|
| s_navn | telefon | type |
| Jean | 12345678 | fastnet |
| Jean | 87654321 | mobil |
| Helen | 65432123 | fastnet |
| Helen | 23456789 | mobil |
| Simon | 98765432 | fastnet |
| Simon | 67890987 | mobil |
|
Der må ikke være søjler, der kun afhænger af noget af primærnøglen
| s_navn | c_navn | koen |
| Jean | Den sjove | mand |
| Jean | Den kedelige | mand |
| Jean | Den lange | mand |
| Helen | Den lange | kvinde |
| Simon | Den kedelige | mand |
| Simon | Den hemmelige | mand |
Søjlen koen (køn) afhænger kun af spilleren, ikke af hvilket chatroom spilleren er inde i i øjeblikket.
Løsning: kønnet splittes ud i en ny tabel.
| s_navn | c_navn |
| Jean | Den sjove |
| Jean | Den kedelige |
| Jean | Den lange |
| Helen | Den lange |
| Simon | Den kedelige |
| Simon | Den hemmelige |
|
| s_navn | koen |
| Jean | mand |
| Helen | kvinde |
| Simon | mand |
|
Der må ikke være søjler, der slet ikke afhænger af primærnøglen
| s_navn | password | koen | postnr | by |
| Jean | gulerod35 | mand | 4900 | Nakskov |
| Helen | 123rty | kvinde | 4800 | Nykøbing F |
| Simon | 456yui | mand | 4900 | Nakskov |
I dette tilfælde afhænger byens navn af postnummeret, ikke af primærnøglen. Løsning:
forbindelsen mellem postnummer og by lægges ud i en ny tabel.
| s_navn | password | koen | postnr |
| Jean | gulerod35 | mand | 4900 |
| Helen | 123rty | kvinde | 4800 |
| Simon | 456yui | mand | 4900 |
|
| postnr | by |
| 4900 | Nakskov |
| 4800 | Nykøbing F |
|
Dataordbog
Når normaliseringen er overstået, kan man notere resultatet i en dataordbog.
| spiller |
| Søjle | Datatype | Null | Specielt |
Forklaring |
| s_navn | varchar(10) | Nej | Primærnøgle |
Spillernavn |
| password | varchar(10) | Nej | |
Password |
| koen | varchar(6) | Ja | |
Køn (mand, kvinde) |
| tilhoerer |
| Søjle | Datatype | Null | Specielt |
Forklaring |
| s_navn | varchar(10) | Nej | Primærnøgle, fremmednøgle til spiller.s_navn |
Spillernavn |
| c_navn | varchar(10) | Nej | Primærnøgle, fremmednøgle til chatroom.c_navn |
Charoomnavn |