Title: Normalisering (databaser, del 8)
1Normalisering (databaser, del 8)
2Normalisering
- Normalisering er en teknik til at forbedre et
database-design, i forhold til at undgå vores
dødsfjender - Redundans at noget data forekommer mere end én
gang - Inkonsistens at noget data er i modstrid med
andet data
3Normalisering
- Hvis man er en haj til database-design og
følger reglerne vil man ofte ende med en
normaliseret database uden at tænke over det
3. normalform? You wanna bet on that?
- Normalisering er en slags sundhedstjek af dit
database-design
4Tre grader af normalisering første grad
- 1.Normalform
- Tabellen har en nøgle
- Alle tabellens poster er lige lange
5Tre grader af normalisering første grad
- Hvorfor skal en tabel have en nøgle?
- Hvis en tabel ikke har en nøgle, kan vi ikke vide
hvad data egentlig refererer til (tvetydighed)
Navn Spansk Fransk Dansk
Maria 10 4 7
Maria 7 12 7
Maria 4 10 10
6Tre grader af normalisering første grad
- Hvorfor skal posterne være lige lange?
- For at undgå spild af plads
- Typisk struktur
- Nøglefelt
- Variabelt antal datafelter
- Giver en tabel med felter a la Navn, Fag1, Fag2,
Fag3, Fag4,
7Tre grader af normalisering første grad (før)
Elevnavn Fag1 Fag2 Fag3 Fag4 Fag5 Fag6 Fag7
Ib Jensen DA TY IT EN
Bo Søgård TY EN IT AF SP
Anne Høgh EN DA AF
Ib Jensen TY EN SP IT DA AF JU
Ikke alle poster er lige lange
Elevnavn er ikke entydigt
8Tre grader af normalisering første grad
- Hvordan løser vi problemerne?
- Trin 1 Indfør en nøgle
- Inkludér nok felter til at nøglen er entydig
- Opfind selv nøgle, ofte et løbenummer
- Trin 2 Indfør ny tabel med fast længde
- Ofte ændres Nøgle, Fag1, Fag2, til
- Nøgle, Fag (med mange poster)
9Tre grader af normalisering første grad (efter)
Elevnummer Elevnavn Fag
1 Ib Jensen DA
1 Ib Jensen TY
1 Ib Jensen IT
1 Ib Jensen EN
2 Bo Søgård TY
2 Bo Søgård EN
2 Bo Søgård IT
2 Bo Søgård AF
2 Bo Søgård SP
4 Ib Jensen JU
Alle poster i tabellen er unikke Alle poster i
tabellen har længde 3 Tabellen er nu på
1.normalform!
og så videre
103 grader af normalisering anden grad
- 2.Normalform
- Tabellen er på 1.normalform
- Der må kun være et nøglefelt i hver tabel, der
entydigt afgør indholdet af alle øvrige felter
113 grader af normalisering anden grad
- Hvad i alverden betyder Der må kun være et
nøglefelt i hver tabel, der entydigt afgør
indholdet af alle øvrige felter!? - Husk, at et nøglefelt kan være et enkelt felt,
eller en kombination af felter - Nogle informationer kan måske udpeges entydigt
med mindre information end den nøglefeltet rummer
12Tre grader af normalisering anden grad (før)
Elevnummer Elevnavn Fag Timer
1 Ib Jensen DA 2
1 Ib Jensen TY 3
1 Ib Jensen IT 2
1 Ib Jensen EN 4
2 Bo Søgård TY 2
2 Bo Søgård EN 1
2 Bo Søgård IT 4
2 Bo Søgård AF 3
2 Bo Søgård SP 4
4 Ib Jensen JU 1
I denne tabel er Elev-nummer og Fag nøgle denne
kombination er entydig Men Elevnavn udpeges jo
entydigt af Elev-nummer alene! Spild at
gentage Elev-navn gang på gang
og så videre
133 grader af normalisering anden grad
- Løsningen er oftest at lave nye tabeller, hvor
den mindst mulige nøgle bruges - I eksemplet Elevnavn udpeges entydigt af
Elevnummer så lav en tabel med kun Elevnummer
som nøgle - Elevnavn fjernes derfor fra den oprinde-lige tabel
14Tre grader af normalisering anden grad (efter)
Elevnummer Fag Timer
1 DA 2
1 TY 3
1 IT 2
1 EN 4
2 TY 2
2 EN 1
2 IT 4
2 AF 3
2 SP 4
4 JU 1
Elevnummer Elevnavn
1 Ib Jensen
2 Bo Søgård
3 Anne Høgh
4 Ib Jensen
Elevnummer -gt Elevnavn
(Elevnummer, Fag) -gt Timer
og så videre
153 grader af normalisering tredje grad
- 3.Normalform
- Tabellen er på 2.normalform
- Alle felter, der afhænger af andet end
nøgle-feltet, splittes ud i andre tabeller
163 grader af normalisering tredje grad (før)
Elevnummer Elevnavn Postnummer By
1 Ib Jensen 4100 Ringsted
2 Bo Søgård 4000 Roskilde
3 Anne Høgh 4100 Ringsted
4 Ib Jensen 4000 Roskilde
- Elevnummer udpeger entydigt Elevnavn, Postnummer
og By d.v.s. 2.normalform OK - MEN Postnummer udpeger også entydigt By!
173 grader af normalisering tredje grad (efter)
Elevnummer Elevnavn Postnummer
1 Ib Jensen 4100
2 Bo Søgård 4000
3 Anne Høgh 4100
4 Ib Jensen 4000
Postnummer By
4100 Ringsted
4000 Roskilde
Hmm, no bluffing, huh?
Elevnummer -gt Elevnavn, Postnummer
Postnummer -gt By
18Normalisering i en nøddeskal
- Normalisering skal fjerne redundans og
inkonsistens fra databasen - Vær på vagt, hvis samme information forekommer
mange gange er det nødvendigt? - Brug reglerne for normalisering som et
sundhedscheck for databasens design