Normalisering, eksempler

Der skal være en primærnøgle

s_navnpasswordkoen
Jeangulerod35mand
Helen123rtykvinde
Simon456yuimand

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_navnpasswordkoen
Jeangulerod35mand
Helen123rtykvinde
Simon456yuimand

Alle rækker skal være lige lange

s_navnc_navn1c_navn2c_navn3
JeanDen sjoveDen kedeligeDen lange
HelenDen lange  
SimonDen kedeligeDen 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
Jean
Helen
Simon
s_navnc_navn
JeanDen sjove
JeanDen kedelige
JeanDen lange
HelenDen lange
SimonDen kedelige
SimonDen hemmelige

En søjle skal altid indeholde den samme slags data hele vejen ned, og må ikke have tomme felter undervejs

s_navnfastnetkoen
Jean12345678mand
Helen kvinde
Simon98765432mand

Problemet minder om det ovenstående problem, hvor rækkerne ikke var lige lange, og løses på samme måde.

s_navnkoen
Jeanmand
Helenkvinde
Simonmand
s_navnfastnet
Jean12345678
Simon98765432

To søjler må ikke have samme slags data

s_navnfastnetmobil
Jean1234567887654321
Helen6543212323456789
Simon9876543267890987

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
Jean
Helen
Simon
s_navntelefontype
Jean12345678fastnet
Jean87654321mobil
Helen65432123fastnet
Helen23456789mobil
Simon98765432fastnet
Simon67890987mobil

Der må ikke være søjler, der kun afhænger af noget af primærnøglen

s_navnc_navnkoen
JeanDen sjovemand
JeanDen kedeligemand
JeanDen langemand
HelenDen langekvinde
SimonDen kedeligemand
SimonDen hemmeligemand

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_navnc_navn
JeanDen sjove
JeanDen kedelige
JeanDen lange
HelenDen lange
SimonDen kedelige
SimonDen hemmelige
s_navnkoen
Jeanmand
Helenkvinde
Simonmand

Der må ikke være søjler, der slet ikke afhænger af primærnøglen

s_navnpasswordkoenpostnrby
Jeangulerod35mand4900Nakskov
Helen123rtykvinde4800Nykøbing F
Simon456yuimand4900Nakskov

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_navnpasswordkoenpostnr
Jeangulerod35mand4900
Helen123rtykvinde4800
Simon456yuimand4900
postnrby
4900Nakskov
4800Nykøbing F

Dataordbog

Når normaliseringen er overstået, kan man notere resultatet i en dataordbog.

spiller
SøjleDatatypeNullSpecielt Forklaring
s_navnvarchar(10)NejPrimærnøgle Spillernavn
passwordvarchar(10)Nej  Password
koenvarchar(6)Ja  Køn (mand, kvinde)
tilhoerer
SøjleDatatypeNullSpecielt Forklaring
s_navnvarchar(10)NejPrimærnøgle, fremmednøgle til spiller.s_navn Spillernavn
c_navnvarchar(10)NejPrimærnøgle, fremmednøgle til chatroom.c_navn Charoomnavn