Relasjonsdatabasedesign

Relasjonsdatabasedesign
Oppdateringsanomalier
Dekomponering
Normalformer
INF3100 - 26-27.1.2004 - Ragnar Normann
1
Hva kjennetegner god
relasjonsdatabasedesign?
• Skjemaene samler beslektet informasjon:
– Tekstlig nærhet (samlokalisering i skjema) gjenspeiler logisk
nærhet
– Brudd på dette har en tendens til å påtvinge dobbeltlagring av
data og dermed forårsake oppdateringsanomalier
• Så lite dobbeltlagring som mulig:
– Plassbehovet minimaliseres
– Oppdatering forenkles
• Så få ”glisne” relasjoner som mulig:
– Plassbehovet minimaliseres
– Unngår problemer med håndtering av nil-verdier
• Korrekt totalinformasjon kan gjenskapes nøyaktig
– Ingen falske data genereres
INF3100 - 26-27.1.2004 - Ragnar Normann
2
Eksempel:
Grossistdatabase versjon 1
Produkt(Kode, Produktnavn, Produsent, #Enheter)
Kunde(Kode, Kundenr, Navn, Adresse, #Bestilt)
Skranker:
1. Alle verdier i Kode i Produkt-skjemaet skal være unike
2. For hvert par av Kundenr, Kode i Kunde-skjemaet skal
det være bare en mulig verdi av #Bestilt
3. Verdien i Kundenr bestemmer verdiene i Navn og
Adresse
4. Kode i Kunde-skjemaet henspeiler på verdier i Kode i
Produkt-skjemaet
INF3100 - 26-27.1.2004 - Ragnar Normann
3
Grossistdatabase versjon 1
med integritetsregler
Produkt(Kode, Produktnavn, Produsent, #Enheter)
Kunde(Kode, Kundenr, Navn, Adresse, #Bestilt)
Integritetsregler:
1. KodeÆProduktnavn Produsent #Enheter
2. Kundenr KodeÆ#Bestilt
3. KundenrÆNavn Adresse
4. Kode i Kunde-skjemaet er fremmednøkkel til Produkt
Merk at {Kode} er en kandidatnøkkel i Produkt
Den er den eneste slike i Produkt og blir derfor primærnøkkel
Merk at 2 og 3 gir at {Kode, Kundenr} er supernøkkel i Kunde
Dette er dessuten en kandidatnøkkel og den eneste slike i Kunde
Den blir derfor primærnøkkel
INF3100 - 26-27.1.2004 - Ragnar Normann
4
Eksempelekstensjon Kunde
Kunde
Kode
Kundenr
Navn
Adresse
1
2
1
1
1
2
A
A
B
a
a
b
#Bestilt
3
8
2
INF3100 - 26-27.1.2004 - Ragnar Normann
5
Oppdateringsanomalier
• Innsettingsanomalier
– Opprettholde konsistente verdier
– Hvordan håndtere ”sekundær informasjon”?
Tillate nil i primærnøkkel?
• Slettingsanomalier
– Risikerer å miste ”sekundær informasjon”
• Modifiseringsanomalier
– Opprettholde konsistente verdier
– Oppdatering av ”sekundær informasjon”
INF3100 - 26-27.1.2004 - Ragnar Normann
6
Hvordan unngå
oppdateringsanomalier
• Unngå/fjern oppdateringsanomalier og
dobbeltlagring ved å splitte
(dekomponere) relasjonene slik at
dobbeltlagring blir borte!
INF3100 - 26-27.1.2004 - Ragnar Normann
7
Dekomposisjon av et
relasjonsskjema
• Gitt et relasjonsskjema R(A1,A2,…,An).
En dekomposisjon D = {R1,R2,…,Rm} av R
er en samling med skjemaer R1,R2,…,Rm
som er slik at følgende to krav holder:
– alle attributtene i hver Rk er også attributt i R
– samtlige attributter A1,A2,…,An kan gjenfinnes i
minst ett av skjemaene R1,R2,…,Rm
INF3100 - 26-27.1.2004 - Ragnar Normann
8
Eksempel:
Grossistdatabase versjon 2
Produkt(Kode, Produktnavn, Produsent)
Kundereg(Kundenr, Navn, Adresse)
Bestilling(Kode, Kundenr, #Bestilt)
Integritetsregler:
• Kode i Bestilling er fremmednøkkel til Produkt
• Kundenr i Bestilling er fremmednøkkel til Kundereg
INF3100 - 26-27.1.2004 - Ragnar Normann
9
Eksempelekstensjoner
Kundereg, Bestilling
Kundereg
Kundenr
1
2
Bestilling
Navn
A
B
Adresse
a
b
Kode
Kundenr
1
2
1
1
1
2
INF3100 - 26-27.1.2004 - Ragnar Normann
#Bestilt
3
8
2
10
Naturlig join
• Vi ønsker å kunne rekonstruere den
opprinnelige ekstensjonen
• Naturlig join er en operasjon der to
relasjoner slås sammen til ett ved at to og
to tupler parres hvis og bare hvis de har
like verdier i attributter med likt navn
INF3100 - 26-27.1.2004 - Ragnar Normann
11
Kundereg
Bestilling
Kundereg
Kundenr
1
2
Bestilling
Navn
A
B
Kundereg
Kundenr
1
1
2
Adresse
a
b
Kode
Kundenr
1
2
1
1
1
2
#Bestilt
3
8
2
Bestilling
Navn
A
A
B
Adresse Kode
a
a
b
1
2
1
#Bestilt
3
8
2
INF3100 - 26-27.1.2004 - Ragnar Normann
12
Eksempel:
Grossistdatabase, versjon 3
Produkt(Kode, Produktnavn, Produsent)
Kundereg(Kundenr, Navn, Adresse)
Kodereg(Kode, Kundenr)
Antall(Kundenr, #Bestilt)
Integritetsregler:
• Kode i Kodereg er fremmednøkkel til Produkt
• Kundenr i Kodereg er fremmednøkkel til Kundereg
• Kundenr i Antall er fremmednøkkel til Kundereg
INF3100 - 26-27.1.2004 - Ragnar Normann
13
Eksempelekstensjoner
Kundereg, Bestilling
Kodereg
Antall
Kode
Kundenr
Kundenr
1
2
1
1
1
2
1
1
2
Kodereg
#Bestilt
3
8
2
Antall
Kode
Kundenr
1
1
2
2
1
1
1
1
1
2
#Bestilt
3
8
8
3
2
Naturlig join på de to tabellene gir flere
tupler enn i den opprinnelige tabellen!
= Falske tupler
INF3100 - 26-27.1.2004 - Ragnar Normann
14
Retningslinjer for
dekomposisjon av relasjoner?
• Motivasjon: Fjerne oppdateringsanomalier
• Teknikk: Dekomponere problemrelasjoner
• Betingelse: Opprinnelig ekstensjon skal alltid
kunne rekonstrueres nøyaktig ved naturlig join
• Problem: Hvordan vurdere objektivt om en
samling relasjoner er god/dårlig?
Hvordan sikre at en dekomposisjon aldri gir
falske tupler?
INF3100 - 26-27.1.2004 - Ragnar Normann
15
Normalformer
• Normalformer er et uttrykk for hvor godt vi
har lykkes i en dekomposisjon
• Jo høyere normalform, jo færre
oppdateringsanomalier
• Det fins algoritmer for å omforme fra
lavere til høyere normalformer
• Det fins algoritmer for å sjekke om en
dekomposisjon er tapsfri, dvs. at naturlig
join aldri vil gi falske tupler
INF3100 - 26-27.1.2004 - Ragnar Normann
16
Utgangspunkt for normalformene
1NF-BCNF
• Alle integritetsregler er i form av FDer
(og fremmednøkler)
INF3100 - 26-27.1.2004 - Ragnar Normann
17
Normalformer, oversikt
1NF
2NF
3NF
EKNF
BCNF
INF3100 - 26-27.1.2004 - Ragnar Normann
18
Første normalform
• Definisjon 1NF (Codd 1972):
– Alle domener består av atomære verdier
– Funksjonsverdien til et tuppel for et gitt
attributt skal være en slik atomær verdi
(eller nil)
• Alle relasjoner er automatisk på 1NF
INF3100 - 26-27.1.2004 - Ragnar Normann
19
Andre normalform
•
Definisjon ikketriviell FD XÆY: Y inneholder
minst ett attributt utenfor X. Dvs.Y-X≠ ∅
•
Definisjon 2NF (Codd 1972):
En relasjon R er på andre normalform hvis
alle ikketrivielle FDer i R på formen XÆA der
X er en mengde attributter og A er ett attributt i
R, tilfredsstiller minst ett av følgende:
i. X er en supernøkkel i R
ii. A er et nøkkelattributt i R
iii. XÀK for noen kandidatnøkkel K i R
INF3100 - 26-27.1.2004 - Ragnar Normann
20
Egenskaper 2NF
• 2NFÕ1NF siden alle relasjoner er 1NF
• Når er en relasjon 1NF, men ikke 2NF?
Svar: Når det fins en ikketriviell FD XÆA
og en kandidatnøkkel K hvor XÃK, X ≠ K
og A ikke er et nøkkelattributt
Eks: R(A,B,C,D), F={BCÆD, CÆA}
Dekomposisjon: R1(A,C), R2(B,C,D)
• 2NF er mest av historisk interesse;
vi gjør sjelden feil som bryter 2NF
INF3100 - 26-27.1.2004 - Ragnar Normann
21
Tredje normalform
•
Definisjon 3NF (Codd 1972):
En relasjon R er på tredje normalform
hvis alle ikketrivielle FDer i R på formen
XÆA tilfredsstiller minst ett av følgende:
i. X er en supernøkkel i R
ii. A er et nøkkelattributt i R
INF3100 - 26-27.1.2004 - Ragnar Normann
22
Egenskaper 3NF
• 3NFÕ2NF fordi kravene til 3NF er en skjerping
av kravene til 2NF
• Når er en relasjon 2NF, men ikke 3NF?
Svar: Når det fins en ikketriviell FD XÆA hvor X
ikke er en supernøkkel og A ikke er et nøkkelattributt og XÀK for noen kandidatnøkkel K
Eks: R(A,B,C), F={AÆBC, BÆC}
Dekomposisjon: R1(A,B), R2(B,C)
• Også 3NF er lett å oppnå.
INF3100 - 26-27.1.2004 - Ragnar Normann
23
Elementære FDer og nøkler
•
•
En FD XÆA kalles elementær dersom
–
–
A er et atributt
XÆA ikke er triviell
–
X er minimal
(dvs. at hvis YÕX og YÆA, så er Y=X)
En (kandidat)nøkkel K kalles elementær
hvis det finnes en elementær FD
KÆB i R
INF3100 - 26-27.1.2004 - Ragnar Normann
24
Elementary Key Normal Form
•
EKNF (Zaniolo 1982) er ikke pensum,
men er tatt med for fullstendighets skyld:
En relasjon R er på EKNF hvis alle
ikketrivielle FDer i R på formen XÆA
tilfredsstiller minst ett av følgende:
i. X er en supernøkkel i R
ii. A er et attributt i en elementær nøkkel i R
INF3100 - 26-27.1.2004 - Ragnar Normann
25
Egenskaper EKNF
•
•
EKNFÕ3NF fordi kravene til EKNF er en
skjerping av kravene til 3NF
Når er en relasjon 3NF, men ikke EKNF? Svar:
Når det fins en ikketriviell FD XÆA hvor X ikke
er en supernøkkel og A er et nøkkelattributt i
en ikke-elementær nøkkel
Eks: R(A,B,C), F={ABÆC,BÆCA,CÆA,AÆC}
(Her kan A=epostadresse, B=emnekode og
C=fødselsnummer på studenter)
Mulig dekomposisjon: R1(A,B), R2(A,C)
INF3100 - 26-27.1.2004 - Ragnar Normann
26
Boyce-Codd Normal Form
•
Definisjon BCNF (Boyce & Codd 1974):
En relasjon R er på Boyce-Codd
normalform hvis alle ikketrivielle FDer i
R på formen XÆA tilfredsstiller følgende:
i.
X er en supernøkkel i R
INF3100 - 26-27.1.2004 - Ragnar Normann
27
Egenskaper BCNF
•
•
•
BCNFÕEKNF fordi kravene til BCNF er en
skjerping av kravene til EKNF
Når er en relasjon EKNF, men ikke BCNF?
Svar: Når det fins en ikketriviell FD XÆA hvor
X ikke er en supernøkkel og A er et attributt i
en elementær nøkkel
Eks: R(A,B,C), F={ABÆC, CÆA}
Dekomposisjon: R1(B,C), R2(A,C)
Merk at FDen ABÆC går på tvers av R1 og R2
INF3100 - 26-27.1.2004 - Ragnar Normann
28
Oppsummering normalisering
• Brudd på normalformer gir opphav til dobbeltlagring
• Jo høyere normalform, desto mindre dobbeltlagring
• BCNF: Alle FDer er i form av kandidatnøkler.
Dvs. ingen dobbeltlagring innen skjemaet.
Men: Noen FDer kan gå på tvers av skjemaer
• EKNF: Ingen FDer går på tvers av skjemaer, men det
kan være noen FDer innen skjemaer som gir opphav til
dobbeltlagring
• Krav til dekomposisjon: Den må være tapsfri, dvs. aldri
kunne gi opphav til falske tupler
• Det er en fordel om dekomposisjonen også er FDbevarende, dvs. at ingen FDer går på tvers av skjemaer
INF3100 - 26-27.1.2004 - Ragnar Normann
29
Hvorfor BCNF ikke alltid er gunstig
• Dersom vi har en dekomposisjon som ikke er
FD-bevarende, må vi foreta join mellom
skjemaene i forbindelse med oppdateringer for å
sjekke at integritetsreglene overholdes.
• Vi har valget mellom
Enten: Gå tilbake til 3NF (EKNF) og bryte BCNF,
da får vi dobbeltlagring og må ta hensyn til dette
under oppdatering
Eller: Beholde BCNF og foreta join mellom
relasjoner for å sjekke at FDer overholdes ved
oppdateringer
INF3100 - 26-27.1.2004 - Ragnar Normann
30
Det fins algoritmer som…
• Tester om en dekomposisjon er tapsfri
• Tester om en dekomposisjon er FDbevarende
• Dekomponerer skjemaer tapsfritt og FDbevarende
– Garantert EKNF, men gir ikke alltid BCNF
• Dekomponerer skjemaer tapsfritt til BCNF
– Ikke alltid FD-bevarende
INF3100 - 26-27.1.2004 - Ragnar Normann
31
Flerverdiavhengigheter
• Generalisering av FDer
• Flerverdiavhengigheter gir opphav til en
større klasse integritetsregler enn de som
kan uttrykkes ved FDer
INF3100 - 26-27.1.2004 - Ragnar Normann
32
Eksempel: Emnedatabase
Emne(Kode, Lærebok, Foreleser)
Skranker:
• Et emne har et sett av lærebøker som er
uavhengig av hvem som foreleser emnet
• Et emne kan ha flere forelesere, og det er
ingen sammenheng mellom forelesere og
lærebøker
INF3100 - 26-27.1.2004 - Ragnar Normann
33
Eksempelekstensjon
Emne
Kode
INF1010
INF1010
INF1050
INF1050
INF1050
Emne
Lærebok
Foreleser
Liang
OOhefte
Kjernen
PHP
Web
Margunn
Ingvild
Erik
Tone
Gerhard
Kode
Lærebok
Foreleser
Liang
Liang
OOhefte
OOhefte
Kjernen
Kjernen
Kjernen
PHP
PHP
PHP
Web
Web
Web
Margunn
Ingvild
Margunn
Ingvild
Erik
Tone
Gerhard
Erik
Tone
Gerhard
Erik
Tone
Gerhard
INF1010
INF1010
INF1010
INF1010
INF1050
INF1050
INF1050
INF1050
INF1050
INF1050
INF1050
INF1050
INF1050
INF3100 - 26-27.1.2004 - Ragnar Normann
34
Definisjon flerverdiavhengighet
•
Gitt et relasjonsskjema R(A1,A2,…,An).
La X, Y være delmengder av {A1,A2,…,An}.
La Z være de attributtene som hverken er med
i X eller Y.
Y er flerverdiavhengig av X hvis vi for enhver
lovlig instans av R har at hvis instansen
inneholder to tupler t1 og t2 hvor t1[X]=t2[X],
så fins det også to tupler u1 og u2 hvor
1. u1[X]=u2[X]=t1[X]=t2[X]
2. u1[Y]=t1[Y], u2[Y]=t2[Y]
3. u1[Z]=t2[Z], u2[Z]=t1[Z]
INF3100 - 26-27.1.2004 - Ragnar Normann
35
Definisjon på norsk
•
Y er flerverdiavhengig av X hvis vi for alle
lovlige instanser av R har at hvis instansen
inneholder to tupler t1 og t2 som er like på X,
så må den også inneholde to tupler u1 og u2
hvor
1. u1 er lik t1 på Y og lik t2 utenfor Y
2. u2 er lik t2 på Y og lik t1 utenfor Y
INF3100 - 26-27.1.2004 - Ragnar Normann
36
MVD
•
•
•
•
•
•
•
•
Æ Y hvis Y er flerverdiavhengig av X.
Vi skriver X Æ
Ofte snakker vi for korthets skyld om “MVDen X Æ
Æ Y” der MVD
står for Multi-Valued Dependency.
Hvis YÕX, så X Æ
Æ Y.
Hvis XY er samtlige attributter i R, så X Æ
Æ Y.
Hvis XÆY, så X Æ
Æ Y.
Definisjon triviell MVD:
XÆ
Æ Y hvor YÕX eller XY er samtlige attributter i R.
Definisjon ekte MVD: En ikketriviell X Æ
Æ Y hvor XÆY ikke
holder.
MVDer benyttes til å uttrykke integritetsregler:
Kode Æ
Kode Æ
Æ Lærebok,
Æ Foreleser
MVDer opptrer hvis man plasserer to m:n-forhold (m≥1) i samme
relasjon og de to forholdene ikke har avhengigheter seg imellom
INF3100 - 26-27.1.2004 - Ragnar Normann
37
Armstrongs slutningsregler
utvidet til MVDer
(for spesielt interesserte)
1.
2.
3.
4.
Refleksivitet FD: Hvis YÕX, så XÆY
Utvidelse FD: Hvis XÆY, så XZÆYZ
Transitivitet FD: Hvis XÆY og YÆZ, så XÆZ.
Komplement: Hvis Z er de attributtene som XY ikke
omfatter, og XÆ
Æ Y, så X Æ
Æ Z.
Æ Y og ZÕW, så XW Æ
Æ YZ
5. Utvidelse MVD: Hvis X Æ
6. Transitivitet MVD:
Æ Y og Y Æ
Æ Z, så X Æ
Æ Z-Y
Hvis X Æ
7. FDer er MVDer: Hvis XÆY så X Æ
ÆY
8. Sammensmeltning:
Æ Y, WÆZ, W«Y=∅ og ZÕY, så XÆZ
Hvis X Æ
Regelsettet er sunt og komplett for MVDer og FDer
INF3100 - 26-27.1.2004 - Ragnar Normann
38
Høyere normalformer, oversikt
1NF
BCNF
4NF
5NF
PJNF
og
DKNF
INF3100 - 26-27.1.2004 - Ragnar Normann
39
Utgangspunkt for normalformen
4NF
• Alle integritetsregler er i form av FDer og
MVDer (og fremmednøkler)
INF3100 - 26-27.1.2004 - Ragnar Normann
40
Fjerde normalform
•
Definisjon 4NF (Fagin 1977):
En relasjon R er på fjerde normalform
hvis alle ikketrivielle MVDer X ÆÆ Y
tilfredsstiller følgende:
i.
X er en supernøkkel i R
INF3100 - 26-27.1.2004 - Ragnar Normann
41
Egenskaper 4NF
• 4NFÕBCNF: Anta at R er 4NF. Vis at for
enhver ikketriviell FD XÆY i R er X en
supernøkkel
• Når er en relasjon BCNF, men ikke 4NF?
Svar: Når alle ikketrivielle FDer XÆY er
slik at X er en supernøkkel og det fins en
ekte MVD Z ÆÆ W der Z ikke er en
supernøkkel.
INF3100 - 26-27.1.2004 - Ragnar Normann
42
Normalformer utover 4NF
(Kursorisk pensum)
• 5NF (Maier 1983)
• PJNF: Project-Join Normal Form
(Fagin 1979)
• DKNF: Domain Key Normal Form
(Fagin 1981)
INF3100 - 26-27.1.2004 - Ragnar Normann
43
Joinavhengigheter
• La R være en relasjon og la D={R1,…,Rm} være
en dekomposisjon av R. Dersom D er tapsfri, sier
vi at D tilfredsstiller en JD (Join Dependency)
• En JD kalles triviell dersom RŒD
• Teorem (Fagin 1977): Hvis m=2, dvs D={R1,R2},
tilfredsstiller D en JD hvis, og bare hvis, vi har en
Æ Y der X=R1«R2 og Y=R2–R1
MVD X Æ
• Dette betyr at en MVD er det samme som en JD
for en dekomposisjon med 2 komponenter
INF3100 - 26-27.1.2004 - Ragnar Normann
44
Ekte dekomposisjoner og 5NF
• En dekomposisjon D={R1, … ,Rm} kalles ekte
hvis det ikke finnes i og j med i≠j og RiÕRj
(en slik Ri vil alltid være overflødig fordi den ikke
kan bidra til å gjøre D tapsfri)
• En relasjon R er på 5NF hvis alle ekte tapsfri
dekomposisjoner av R bare består av
supernøkler
• Hvis vi fortsetter å tapsfritt dekomponere en
relasjon på 5NF, så vil ikke dekomposisjonen
bety noen reduksjon i antall tupler eller verdier
som må lagres, tvert imot vil lagerbehovet øke
INF3100 - 26-27.1.2004 - Ragnar Normann
45
PJNF (Project/Join Normal Form)
• En relasjon R er på PJNF hvis alle JD-er i R er
en konsekvens av kandidatnøklene
• Mer presist: R er på PJNF hvis alle ekte tapsfri
dekomposisjoner D er nøkkelsammenhengende
i henhold til følgende algoritme:
– Så lenge det finnes to komponenter i D hvis snitt er
en supernøkkel, så bytt ut de to komponentene med
deres union
– Hvis prosessen terminerer med D={R}, er D
nøkkelsammenhengende, ellers ikke
INF3100 - 26-27.1.2004 - Ragnar Normann
46
DKNF (Domain-Key Normal Form)
• En relasjon R er på DKNF hvis de eneste
integritetsreglene i R er nøkkelrestriksjoner og
domenerestriksjoner
• DKNF er lett å håndheve, men det er for mange
integritetsregler som ikke kan uttrykkes på
denne måten til at vi kan begrense oss til å ha
komponenter på DKNF
INF3100 - 26-27.1.2004 - Ragnar Normann
47
Oppsummering av høye
normalformer
• En relasjon R er på 4NF hvis, og bare hvis, alle ekte
tapsfri dekomposisjoner med to komponenter består av
to supernøkler
(Dette bevises ved å vise at en join av to supernøkler er
tapsfri hvis, og bare hvis, deres snitt er en supernøkkel)
• 5NF er (ekte) inneholdt i 4NF
• Både PJNF og DKNF er (ekte) inneholdt i 5NF
• Det finnes relasjoner som er i PJNF, men ikke i DKNF,
og omvendt
• Personlig mening: 5NF og PJNF burde bytte navn
(det burde 3NF og BCNF også, men vi kan ikke forandre
historien)
INF3100 - 26-27.1.2004 - Ragnar Normann
48