Full presentasjon

INF130 – Datahåndtering og
analyse
Normalisering
INF130: Normalisering
10.03.15
1.1
Repetisjon av standard terminologi i databaser
INF130: Normalisering
10.03.15
2
Normalisering
•  Motivasjon
•  Redundans
•  Funksjonelle avhengigheter
•  Determinanter
•  Partielle avhengigheter
•  Transitive avhengigheter
•  Normalformer: 1NF, 2NF, 3NF, BCNF
•  Normaliseringsstegene
Pensum: Kapittel 8.2
INF130: Normalisering
10.03.15
3
Hva er normalisering ?
•  Formell metode for å designe relasjonsdatabaser for å unngå
dobbellagring og redundans (som fører til inkonsistenser)
•  I praksis resulterer normalisering i splitting opp av tabeller inn i
mindre tabeller
•  (En tabell som ikke er normalisert er i UNF - unormalisert
form)
INF130: Normalisering
10.03.15
4
Normalisering
•  Normalisering består i å dekomponere (splitte opp)
tabeller til flere enklere tabeller slik at:
– Redundans ikke oppstår
– Informasjonsinnholdet bevares
•  Normaliseringsteori gir oss:
– Presise regler for å avgjøre om og hvordan tabeller
skal dekomponeres basert på kunnskap om
funksjonelle avhengigheter.
INF130: Normalisering
10.03.15
5
Redundans: Informasjon som blir gjentatt
OrdreNr
Ordredato
KNr
Adresse
20505
20.8.2011
5022
Kongens gate 3
20505
20.8.2011
5022
Kongens gate 3
20506
20.8.2011
5009
Furulia 72
20506
20.8.2011
5009
Furulia 72
20506
20.8.2011
5009
Furulia 72
20507
20.9.2011
5188
Svingen 7
q  Tabellen inneholder data om både ordrer og kunder.
q  OrdreNr er primærnøkkel, men KNr bestemmer (nåværende) Adresse.
q  Redundans er sløsing med plass og øker sjansen for inkonsistens
(hvis vi endrer adresse for en kunde ett sted, men ikke alle).
q  Kunder som ikke har kjøpt noe lar seg ikke representere.
q  Tabellen bør splittes i to enklere tabeller: Kunde og Ordre!
INF130: Normalisering
10.03.15
6
Et unormalisert register
repeterende
gruppe
ansatt
bopel
priv.tlf
lønn
22334466
250000
avdeling
avd.adr
avd.tlf
avd.budsj prosjekt prosj.timer prosjekt prosj.timer
Salg
Oslo
22876543
Salg
Oslo
22876543
120
Oslo
2000000
110
Skedsmo 63298765
2000000
081
Asker
1500000
240000
Produksj.
Bærum 22878855
230
Bærum
1000000
300000
Økonomi
Bærum 22878850
Bryter kravene til relasjoner:
•  Varierende antall attributter for hvert tuppel
•  Duplikate attributtnavn
INF130: Normalisering
10.03.15
Alfa
200
Alfa
75
Alfa
150
Beta
100
Beta
250
Vi går gjenom
normalisering
med et nytt
eksempel!
7
Eksempel på repeterende grupper
(ikke atomiske verdier)
studnavn
Hansen
INF130: Normalisering
telefonnr
63804356 47328990
10.03.15
8
Eksempel på
oppdateringsanomalier
ansattnr
navn
stilling
filial
filialadresse
s001
Hansen
leder
f01
Liavn 5
s203
Larsen
saksbeh. f03
Storgt 10
p011
Olsen
assistent f01
Liavn 5
1.  Kan ikke legge inn en ny filial uten at man har en ansatt der
fordi man ikke kan sette ansattnr=NULL (ansattnr er
primærnøkkel) (innleggingsanomali)
2.  Hvis Larsen slutter mister vi info om filial f03 (slettingsanomali)
3.  Hvis vi ønsker å endre f01’s filialadresse må vi gjøre det i to
tupler ellers får vi datainkonsistens (endringsanomali)
INF130: Normalisering
10.03.15
9
Hvorfor er redundans så farlig?
•  Kan føre til oppdateringsanomalier (avvik fra reglene,
uregelmessighet). Det finnes tre forskjellige typer av disse
avvikene:
- Innleggingsanomalier
- Slettingsanomalier
- Endringsanomlier
INF130: Normalisering
10.03.15
10
Forut for normalisering …
•  En god database-design begynner med en ”Entity
Relationship” (ER-)modell, som er et godt utgangspunkt for
normalisering. (Vi tar opp modellering litt senere.)
•  Hva ønsker vi å søke på i databasen? For å gjøre søkingen så
rask som mulig bør de tingene vi søker på være attributter i en
relasjon.
INF130: Normalisering
10.03.15
11
Funksjonelle avhengigheter I
•  En funksjonell avhengighet X → Y uttrykker en
beskrankning: Hvis to rader har samme verdi i X må
de ha samme verdi i Y.
– Eks: Hvis to rader har samme KNr (5022), så må
de ha samme Adresse. Dvs. at KNr → Adresse.
•  Vi sier at X bestemmer Y, og kaller X en determinant.
•  For å avgjøre om X → Y må vi kjenne betydningen til
X og Y. Beskrankningen skal gjelde for alle mulige
tabellinnhold.
INF130: Normalisering
10.03.15
12
Funksjonelle avhengigheter II
•  Eksempler:
– VareNr → Betegnelse
– VareNr → Pris
– OrdreNr, VareNr → Antall
•  Kan disse «forenkles»?
– VareNr, Betegnelse → Pris
– OrdreNr, VareNr, Antall, Betegnelse → Pris
– VareNr → Pris, Kategori
INF130: Normalisering
10.03.15
13
Funksjonelle avhengigheter III
•  Grafisk notasjon:
A
B
C
D
E
•  X kandidatnøkkel: X → Y for alle Y
•  Noen avhengigheter lar vi være underforstått.
INF130: Normalisering
10.03.15
14
Normaliseringsprosessen
Tabell på 1NF
Fjern partielle
avhengigheter.
Tabell på 2NF
Fjern transitive
avhengigheter.
Tabell på 3NF
Fjern resterende
redundans.
Tabell på BCNF
INF130: Normalisering
10.03.15
15
Normaliseringssteg
A
A
INF130: Normalisering
B
A
B
C
B
C
D
C
D
D
E
E
D
F
E
F
E
10.03.15
16
1. NormalForm (1NF)
q En tabell tilfredsstiller 1NF hvis alle verdier er atomære.
Ø 1NF er kun av historisk interesse; enhver tabell er pr.
definisjon på 1NF.
Ø Restriksjonen til atomære verdier hindrer «tabeller i
tabeller» / «repeterende grupper».
Ø Vi har ikke jobbet med tabeller som ikke er på 1NF.
INF130: Normalisering
10.03.15
17
2. NormalForm (2NF)
q En tabell tilfredsstiller 2NF hvis den er på 1NF og
dessuten ikke har attributter som er partielt avhengig av
primærnøkkelen.
A
INF130: Normalisering
B
C
D
Brudd!
E
10.03.15
18
3. NormalForm (3NF)
q En tabell tilfredsstiller 3NF hvis den er på 2NF og dessuten
ikke inneholder transitive funksjonelle avhengigheter.
A
INF130: Normalisering
B
C
D
Brudd!
E
10.03.15
19
Boyce-Codd NormalForm (BCNF)
•  En tabell er på BCNF hvis enhver minimal
determinant er en kandidatnøkkel.
A
INF130: Normalisering
B
C
D
Brudd!
E
10.03.15
20
Repeterende gruppe i egen relasjon
ansatt
bopel
priv.tlf
lønn
250000
120
Oslo
22334466
110
Skedsmo
63298765
081
Asker
230
Bærum
prosjekt
ansatt
Alfa
120
200
Beta
120
250
Alfa
110
75
Alfa
081
150
Beta
230
100
INF130: Normalisering
prosj.timer
avdeling
avd.adr
avd.tlf
avd.budsj
Salg
Oslo
22876543
2000000
Salg
Oslo
22876543
2000000
240000
Produksj.
Bærum
22878855
1500000
300000
Økonomi
Bærum
22878850
1000000
•  Bare atomiske verdier
•  Fast antall attributter i hver relasjon
•  Primærnøkkel definert
•  Ikke null i primærnøkkel
Tilfredsstiller de formelle krav for
relasjoner, men . . .
10.03.15
21
Partielle og transitive funksjonelle
avhengigheter
prosjekt
ansatt
Alfa
120
200
250000
Beta
120
250
250000
Alfa
110
75
Alfa
081
150
240000
Beta
230
100
300000
ansatt
bopel
prosj.timer
priv.tlf
lønn
250000
120
Oslo
22334466
110
Skedsmo
63298765
081
Asker
230
Bærum
INF130: Normalisering
lønn
avdeling
Partiell funksjonell avhengighet
avd.budsj
Salg
2000000
Salg
2000000
240000
Produksj.
1500000
300000
Økonomi
1000000
10.03.15
Transitiv
funksjonell avhengighet
22
Funksjonelle avhengigheter
Dersom det i en relasjon til ethvert tidspunkt er to
(muligens sammensatte attributter) X og Y der verdiene
alltid er slik at det like verdier av X gir like verdier av Y, er
Y funksjonelt avhengig av X.
Sagt på en annen måte:
Y er funksjonelt avhengig av X hvis X entydig bestemmer
Y
ansatt
INF130: Normalisering
bopel
priv.tlf
120
Oslo
22334466
110
Skedsmo
63298765
081
Asker
230
Bærum
lønn
250000
avdeling
avd.adr
avd.tlf
avd.budsj
Salg
Oslo
22876543 2000000
Salg
Oslo
22876543 2000000
240000
Produksj.
Bærum
22878855 1500000
300000
Økonomi
Bærum
22878850 1000000
10.03.15
23
Eksempel på funksjonelle avhengigheter
ansatt
bopel
priv.tlf
lønn
250000
120
Oslo
22334466
110
Skedsmo
63298765
081
Asker
230
Bærum
avdeling
avd.adr
avd.tlf
avd.budsj
Salg
Oslo
22876543 2000000
Salg
Oslo
22876543 2000000
240000
Produksj.
Bærum
22878855 1500000
300000
Økonomi
Bærum
22878850 1000000
Husk at en funksjonell avhengighet skal gjelde for alle
lovlige forekomster i et relasjonsskjema.
Et tilfeldig øyeblikksbilde av tupler kan derfor bare gi et
ufullstendig bilde av hvilke funksjonelle avhengigheter
som finnes. Derfor må de funksjonelle avhengigheter
avledes fra “virkelighetens” regler!
INF130: Normalisering
10.03.15
24
Normaliseringsprosessen
Til 1. normalform:
• 
A
B
C
D
E
C
Skill ut repeterende
grupper
D
E
C
D
E
F
G
A
B
F
G
A
C
D
E
A
C
D
C
E
A
B
B
G
Til 2. normalform:
• 
Skill ut attributter som er
funksjonelt avhengige av
en del av primærnøkkelen
sammen med en kopi av
denne
Til 3. normalform:
• 
INF130: Normalisering
Skill ut attributter som
er funksjonelt
avhengige av andre
attributter sammen
med en kopi av disse
A
A
C
B
D
F
E
G
F
GS: Dataorientert systemutvikling figur 6.6
10.03.15
25
Normalformer 1NF, 2NF, 3NF
•  Tabellene skal bare ha én kandidatnøkkel og denne
er primærnøkkelen –dette er en forenkling
•  1NF (Første normalform) har ingen repeterende
grupper, dvs hver rute inneholder kun én verdi
•  En tabell i 2NF er i 1NF og ingen av de ikke-nøkkel
kolonnene determineres av en mindre del av
nøkkelen
•  En tabell i 3NF er i 2NF og det er ingen transitive
determineringer (en ikke-nøkkelkolonne
determineres av en annen ikke-nøkkelkolonne)
INF130: Normalisering
10.03.15
26
Disse tabellene er i 3NF.
INF130: Normalisering
10.03.15
27
Dette var et overblikk over
normalisering
• Informasjon skal ikke gå tapt pga normalisering,
verken entitetsinformasjon eller reelle bindinger
mellom relasjoner
• Men ønsker vi alltid å normalisere fullt ut?
• Det er kjent at søkingen går raskere over færre tabeller
• Hvis vi bevisst avkorter normaliseringen, burde vi
dokumentere hvorfor vi har valgt å gjøre det.
INF130: Normalisering
10.03.15
28
Normalformene (1)
•  1. normalform (1NF)
–  Primærnøkkelattributtene er definert
–  Ingen repeterende grupper
–  Alle attributter funksjonelt avhengig av
primærnøkkelen
INF130: Normalisering
10.03.15
29
Normalformene (2)
•  2. normalform (2NF)
–  1. normalform
–  Ingen partielle funksjonelle avhengigheter
•  3. normalform (3NF)
–  2. normalform
–  Ingen transitive funksjonelle avhengigheter
•  Boyce-Codd
–  Er det flere avhengigheter? Disse bør eventuelt
fjernes / legges til egne tabeller
INF130: Normalisering
10.03.15
30
Øvingsoppgaver
•  Oppgave 6
– Normalisering av tabellet
•  DimPostnummer(Postnummer;Poststed;FylkeKode;Fylke;
KommuneKode;Kommune;PostnummerKategoriKode;Po
stnummerKategori;Latitude;Longitude)
•  Fyker(nummer,navn);
– BLOGGINNLEGG
INF130: Normalisering
10.03.15
31
Normalisering av tabeller
INF130: Normalisering
10.03.15
32