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 |