Normalisatie - deel 2

75
normalisatie deel 2 Katrien Verbert [email protected]

description

 

Transcript of Normalisatie - deel 2

Page 1: Normalisatie - deel 2

normalisatie – deel 2

Katrien Verbert

[email protected]

Page 2: Normalisatie - deel 2

inhoud

• decompositie: algoritmen en eigenschappen

• meerwaardige afhankelijkheden, 4e normaalvorm

• join-afhankelijkheden en 5e normaalvorm

Page 3: Normalisatie - deel 2

verschillende benaderingen

1. via hoogniveau modellering (top-down)

– ER-schema bouwen

– ER-schema omzetten naar relationeel gegevensbankschema

– o.a. partiële en transitieve afhankelijkheden wegwerken

2. meteen een relationeel gegevensschema bouwen

(bottom-up)

– universeel schema met alle attributen

– technieken, algoritmes voor decompositie

Page 4: Normalisatie - deel 2

decompositie:

algoritmen en eigenschappen

• Vertrek van 1 universele relatie R

– met schema SR = < UR, FR>

• Gewenst:

– decompositie (SR) = { SR1 , SR2 , ..., SRk } (met k > 1) zodat

• elke Ri in BCNF of 3NF is

• alle informatie behouden blijft

• alle functionele afhankelijkheden bewaard blijven

– Laatste 2 voorwaarden zijn niet zo evident!

Page 5: Normalisatie - deel 2

behoud van informatie

• informatie blijft behouden

a.s.a.

oorspronkelijke relatie volledig gereconstrueerd kan

worden uit decompositie

• voorbeeld: EMP_LOCS en EMP_PROJ1

– oorspronkelijke relatie niet reconstrueerbaar:

join levert onechte tupels op

– dus geen volledig behoud van informatie

Page 6: Normalisatie - deel 2
Page 7: Normalisatie - deel 2

resultaat van natuurlijke join op de tuples boven de stippellijn: er worden onechte tupels ingevoerd

Page 8: Normalisatie - deel 2

bewaren van afhankelijkheden

• functionele afhankelijkheden zijn intrarelationele restricties

– X Y: X en Y zijn attributenverz. van dezelfde relatie

• bij decompositie geven deze afhankelijkheden aanleiding tot:

– intrarelationele afhankelijkheden in Ri: URi(FR0)

• projectie van FR0 op URi :

enkel die X Y blijven over waarvoor X Y URi

– interrelationele afhankelijkheden

• deze zijn moeilijker te controleren door DBMS :

join nodig om na te gaan of nieuw toegevoegde tupels voldoen

Page 9: Normalisatie - deel 2

Def: Een decompositie (SR) = {SR1 , SR2 , ..., SRk} van R bewaart de afhankelijkheden van R indien ( UR1(FR) ... URk(FR) ) + = FR

+

Als INTER INTRA+, dan zeggen we dat

(SR) de afhankelijkheden van F bewaart

Page 10: Normalisatie - deel 2

decompositie-algoritme 1

• algoritme voor afhankelijkheden-bewarende

decompositie naar 3NF:

Helaas: kan tot informatieverlies aanleiding geven vb (probeer uit):

1. zoek een minimale overdekking G voor F 2. voor elke X die ergens in G voorkomt in de linkerzijde van een functionele afhankelijkheid: maak een schema {X A1 A2 ... Am} waarbij X A1, ..., X Am alle afhankelijkheden in G zijn met X als linkerlid 3. plaats alle overblijvende attributen in een enkel relatieschema

A B C D

Page 11: Normalisatie - deel 2

voorbeeld

Emp_ssn Pno Esal Ephone Dno Pname Plocation

U

Afhankelijkheden

{Emp_ssn} {Esal, Ephone, Dno}

{Pno} {Pname, Plocation}

{Emp_ssn, Pno} {Esal, Ephone, Dno, Pname, Plocation}

Page 12: Normalisatie - deel 2

minimale overdekking

Emp_ssn Pno Esal Ephone Dno Pname Plocation

U

Afhankelijkheden

1.{Emp_ssn} {Esal, Ephone, Dno}

2.{Pno} {Pname, Plocation}

3.{Emp_ssn, Pno} {Esal, Ephone, Dno, Pname, Plocation}

Kunnen we afhankelijkheden weglaten?

Minimale overdekking

{Emp_ssn} {Esal, Ephone, Dno}

{Pno} {Pname, Plocation}

{Emp_ssn, Pno}+={Emp_ssn, Pno, Esal, Ephone, Dno, Pname,

Plocation}

Page 13: Normalisatie - deel 2

decompositie

Emp_ssn Pno Esal Ephone Dno Pname Plocation

U

Minimale verzameling G

{Emp_ssn} {Esal, Ephone, Dno}

{Pno} {Pname, Plocation}

voor elke X die ergens in G voorkomt in de linkerzijde van een functionele afhankelijkheid: maak een schema {X A1 A2 ... Am} waarbij X A1, ..., X Am alle afhankelijkheden in G zijn met X als linkerlid

Emp_ssn Esal Ephone Dno Pno Pname Plocation

Page 14: Normalisatie - deel 2

oefening

Model# Serial# Price Color Name Year

Stock

afhankelijkheden

{M, S} {P, C}

{S} {Y}

{M} {N}

{N,Y} {P}

minimale verzameling

{M, S} {C}

{S} {Y}

{M} {N}

{N,Y} {P}

Model# Serial# Color

Name Year Price Model# Name

Serial# Year

Page 15: Normalisatie - deel 2

Def: Een decompositie SR) = {SR1 , SR2 , ..., SRk} is verliesloos a.s.a. voor elke toegestane extensie r van R (d.i. een extensie die aan FR voldoet) geldt: UR1(r) * ... * URk (r) = r

verliesloze decomposities

• m.a.w. join van relaties in decompositie levert geen onechte tupels op (lossless of nonadditive join property)

• testen of een decompositie verliesloos is: d.m.v. het "chase" algoritme

• Dé vraag is: kan elk tupel van de originele relatie R gereconstrueerd worden op basis van de tupels in de decompositie?

Page 16: Normalisatie - deel 2

het Chase-algoritme

• maakt gebruik van een matrix

– kolommen = alle attributen Aj van originele relatie R

– een rij per relatie Ri in de decompositie

• voor elke rij i:

– vul aj in op positie j als Aj in schema SRi voorkomt; anders bij

– de a's stellen de aanwezige waarden voor

• redenering:

– als X Y, en de waarden voor X zijn gelijk in 2 rijen, dan ook

die voor Y

– dit aanduiden in matrix

• doorgaan tot geen verandering meer optreedt

• 1 rij vol a's verliesloos

Page 17: Normalisatie - deel 2

Algoritme: Test of decompositie D = {R1, ..., Rn} van een relatie R met afhankelijkheden F verliesloos is: maak een matrix S met 1 rij i voor elke relatie Ri in de decompositie D, en 1 kolom j voor elk attribuut Aj in R voor elke rij i : voor elke kolom j : als Aj als attribuut voorkomt in Ri dan Sij := aj anders Sij := bij herhaal tot S niet meer verandert: voor elke functionele afhankelijkheid X Y in F: voor elke verzameling rijen V in S waarvoor geldt dat de symbolen in de kolommen overeenkomend met X dezelfde zijn:

{m.a.w. i1,i2 V: j | Aj X : Si1j=Si2j} maak de symbolen in de kolommen van Y ook gelijk, als volgt: als een van de rijen in V een aj bevat dan voor elke k in V: Skj := aj anders

kies een i V voor elke k in V: Skj := bij { D is verliesloos a.s.a. er een rij bestaat die enkel a's bevat }

Page 18: Normalisatie - deel 2
Page 19: Normalisatie - deel 2
Page 20: Normalisatie - deel 2

eigenschappen van verliesloze decomposities

• Eigenschap LJ1: Niet-additieve Join Test voor Binaire Decomposities

– (SR) = { SR1 , SR2 } is verliesloos t.o.v. F a.s.a.

– eenvoudiger test dan "chase" algoritme

– maar enkel toepasselijk op splitsing in 2 schema's

(UR1 UR2) (UR1 \ UR2) F+ of (UR1 UR2) (UR2 \ UR1) F+

Page 21: Normalisatie - deel 2

voorbeeld

• UR = EMP_DEPT = {Ename, Ssn, Bdate, Address, Dnumber,

Dname, Dmgr_ssn}

• F= {Ssn {Ename, Bdate, Address, Dnumber},

Dnumber {Dname, Dmgr_ssn}}

• UR1 = ED1 = {Ename, Ssn, Bdate, Address, Dnumber}

• UR2 = ED2 = {Dnumber, Dname, Dmgr_ssn}

• (UR1 UR2) (UR1 \ UR2) F+ of (UR1 UR2) (UR2 \ UR1) F+ ?

• UR1 UR2 = {Dnumber}

• UR1 - UR2 = {Ename, Ssn, Bdate, Address}

• UR2 – UR1 = {Dname, Dmgr_ssn}

• (UR1 UR2) (UR1 \ UR2) = Dnumber Dname, Dmgr_ssn

• Verliesloos!

Page 22: Normalisatie - deel 2

:= {SR} zolang er een relatieschema SRi in niet in BCNF is : zoek een functionele afhankelijkheid X Y binnen SRi die volgens BCNF niet toegelaten is vervang SRi in door twee schema’s SRi \ Y en X Y : := \ {SRi} {SRi \ Y, X Y}

Afhankelijkheden kunnen nu verloren gaan!

verliesloze decompositie van een

relatie R naar BCNF

Page 23: Normalisatie - deel 2

voorbeeld van ontwerp via

decompositie

• Gegevensbank met info over huizen in een gemeente

• Universele relatie R1(O,S,H,P,W,B,D)

• UR1 = {O,S,H,P,W,B,D}

– O = identificatienr van huis

– S = straat

– H = huisnummer

– P = postcode

– W = wijk

– B = naam bouwmaatschappij

– D = directeur bouwmaatschappij

Page 24: Normalisatie - deel 2

id.nr (O)

wijk (W)

directeur (D)

bouwmij (B)

huisnr (H) straatnaam (S)

postcode (P)

FR1 = { O BSH, B D, D B, SH OP, P S,

S W }

Page 25: Normalisatie - deel 2

O S H P W B D

15351 Perenstraat 23 2745 DD Fruitwijk Bouwlust P. Akker

15352 Perenstraat 25 2745 DD Fruitwijk Bouwlust P. Akker

15788 Appelstraat 8 2745 EG Fruitwijk Solide Z. Glas

20371 Beukenstraat 94 2751 BE Bomenwijk Solide Z. Glas

20372 Beukenstraat 96 2751 BE Bomenwijk Solide Z. Glas

20167 Beukenstraat 1 2751 BB Bomenwijk Bouwlust P. Akker

Redundante gegevens

voorbeeld van een extensie van R1

Page 26: Normalisatie - deel 2

• Relatie is reeds in 1NF

• 3 kandidaatsleutels voor R1:

– O, SH, PH

– dus O,S,H,P zijn sleutelattributen van R1; W,B,D niet

• Is R1 in 2NF?

Page 27: Normalisatie - deel 2

Is R1 in 2NF?

Idnr (O) Straat (S) Huisnummer(H) Postcode(P) Wijk (W) BouwM.(B) Directeur

= { O BSH, B D, D

B, SH OP, P S,

S W }

Page 28: Normalisatie - deel 2

Is R1 in 2NF?

• Nee:

– W partieel afhankelijk van kand.sleutel SH

– S W

• Normalisatie:

• W uit R1 verwijderen, resulterend in

– R2 met UR2 = { O, S, H, P, B, D }

• en

– R20 maken met UR20 = { S, W }

Page 29: Normalisatie - deel 2

voorbeeld

Idnr (O) Straat (S) Huisnummer(H) Postcode(P) BouwM.(B) Directeur (D)

= { O BSH, B D, D

B, SH OP, P S,

S W } Straat (S) Wijk (W)

R2

R20

Page 30: Normalisatie - deel 2

vorige voorbeeldextensie wordt nu

O S H P B D

15351 Perenstraat 23 2745 DD Bouwlust P. Akker

15352 Perenstraat 25 2745 DD Bouwlust P. Akker

15788 Appelstraat 8 2745 EG Solide Z. Glas

20371 Beukenstraat 94 2751 BE Solide Z. Glas

20372 Beukenstraat 96 2751 BE Solide Z. Glas

20167 Beukenstraat 1 2751 BB Bouwlust P. Akker

S W

Perenstraat Fruitwijk

Appelstraat Fruitwijk

Beukenstraat Bomenwijk

Page 31: Normalisatie - deel 2

Alle relaties in 3NF?

Idnr (O) Straat (S) Huisnummer(H) Postcode(P) BouwM.(B) Directeur (D)

= { O BSH, B D, D

B, SH OP, P S,

S W } Straat (S) Wijk (W)

R2

R20

Page 32: Normalisatie - deel 2

Alle relaties in 3NF?

• R20: ja

• R2: nee

– transitieve afh. : D is trans. afh. van O via B

– afhankelijkheid B D (en D B) afsplitsen

• (SR2) = { SR3, SR30 } met

– UR3 = UR2 \ { D } = { O, S, H, P, B }

– UR30 = { B, D }

Page 33: Normalisatie - deel 2

extensie volgens huidig

gegevensbankschema – :

O S H P B

15351 Perenstraat 23 2745 DD Bouwlust

15352 Perenstraat 25 2745 DD Bouwlust

15788 Appelstraat 8 2745 EG Solide

20371 Beukenstraat 94 2751 BE Solide

20372 Beukenstraat 96 2751 BE Solide

20167 Beukenstraat 1 2751 BB Bouwlust

S W

Perenstraat Fruitwijk

Appelstraat Fruitwijk

Beukenstraat Bomenwijk

B D

Bouwlust P. Akker

Solide Z. Glas

Page 34: Normalisatie - deel 2

Alle relaties in BCNF?

Idnr (O) Straat (S) Huisnummer(H) Postcode(P) BouwM.(B)

= { O BSH, B D, D

B, SH OP, P S,

S W } Straat (S) Wijk (W)

R3

R20

BouwM. (B) Directeur (D)

kandidaatsleutels van R3: O, SH, PH

R30

Page 35: Normalisatie - deel 2

• Alle relaties nu in 3NF

• Ook in BCNF?

– R20 en R30 wel

– R3 niet

• kandidaatsleutels van R3: O, SH, PH

• sleutelattribuut S is transitief afh. van SH via P

• daarom P S weer afsplitsen naar extra relatie

Page 36: Normalisatie - deel 2

Welke afhankelijkheden zijn "verloren gegaan"?

m.a.w. welke restricties zijn nu moeilijker te controleren?

uiteindelijke extensie van

gegevensbank

O H P B

15351 23 2745 DD Bouwlust

15352 25 2745 DD Bouwlust

15788 8 2745 EG Solide

20371 94 2751 BE Solide

20372 96 2751 BE Solide

20167 1 2751 BB Bouwlust

S W

Perenstraat Fruitwijk

Appelstraat Fruitwijk

Beukenstraat Bomenwijk

B D

Bouwlust P. Akker

Solide Z. Glas

S P

Perenstraat 2745 DD

Appelstraat 2745 EG

Beukenstraat 2751 BE

Beukenstraat 2751 BB

FR1 = { O BSH, B D, D B, SH

OP, P S, S W }

Page 37: Normalisatie - deel 2

• We hebben nu

– verliesloze decompositie naar BCNF

– afhankelijkheden-behoudende decompositie naar 3NF

• Combinatie van beide mogelijk?

– m.a.w.: verliesloos en afhankelijkheden-behoudend

• Ja, maar enkel tot 3NF (BCNF niet steeds bereikbaar)

Page 38: Normalisatie - deel 2

1. zoek een minimale overdekking G voor F 2. voor elke X die ergens in G voorkomt in de linkerzijde van een functionele afhankelijkheid: maak een schema {X A1 A2 ... Am} waarbij X A , ..., X Am alle afhankelijkheden in G zijn met X als linkerlid 3. plaats alle overblijvende attributen in een enkel relatieschema 4. als geen van de relatieschema's een sleutel van R bevat dan maak een extra relatieschema dat attributen bevat die een sleutel voor R vormen

verliesloze en afhankelijkheden-

bewarende decompositie naar 3NF

• zelfde algoritme als voorheen voor afh.bewarende

decompositie, met één extra stap

Page 39: Normalisatie - deel 2

voorbeeld

Emp_ssn Pno Esal Ephone Dno Pname Plocation

U

Afhankelijkheden

{Emp_ssn} {Esal, Ephone, Dno}

{Pno} {Pname, Plocation}

{Emp_ssn, Pno} {Esal, Ephone, Dno, Pname, Plocation}

Emp_ssn Esal Ephone Dno

Pno Pname Plocation

Emp_ssn Pno

Minimale overdekking

{Emp_ssn} {Esal, Ephone, Dno}

{Pno} {Pname, Plocation} 1

2

4

Page 40: Normalisatie - deel 2

algoritme voor vinden van een sleutel

Input: universele relatie R en verzameling functionele afhankelijkheden F

(1) K := R

(2) Voor elk attribuut A in K

bereken (K – A)+ t.o.v. F

als (K – A)+ alle attributen van R bevat, dan K := K – {A}

Page 41: Normalisatie - deel 2

oefening

• R(A, B, C, D, E)

• F = {AB C, CD E, DE B}

• Kandidaatsleutel?

(1) K := R

(2) Voor elk attribuut A in K

bereken (K – A)+ t.o.v. F

als (K – A)+ alle attributen van R bevat, dan K := K – {A}

Page 42: Normalisatie - deel 2

nulwaarden kunnen problemen geven

• effect van nulwaarden op aggregaatfuncties?

• ook problematisch voor reconstructie van originele relatie

uit decompositie

– nulwaarden in verwijssleutels

– bv. 2 nieuwe werknemers, nog geen dept. DNUM = nul

– * op EMPLOYEE en DEPARTMENT vermeldt die werknemers niet

– worden “dangling tuples” genoemd

– deze gaan verloren bij (inwendige) join

– uitwendige join biedt oplossing

Page 43: Normalisatie - deel 2
Page 44: Normalisatie - deel 2

natuurlijke join

left outer join

Page 45: Normalisatie - deel 2

nadelen van decompositiemethode

• functionele afhankelijkheden moeten vooraf bekend zijn

– kan moeilijk zijn bij grote gegevensbanken met veel attributen

• de algoritmen zijn niet deterministisch

– minimale overdekking van F: meerdere oplossingen

– decompositie is afhankelijk van volgorde waarin f.a. bekeken

worden

• na decompositie (dure) joins nodig om originele info

terug te vinden

– kan performantie nadelig beïnvloeden

Page 46: Normalisatie - deel 2

besluit

• methode niet blindelings toepassen

• combinatie van normalisatie en ER-ontwerp is

aangewezen

• voorbeeld:

– begin met (E)ER-model

– beeld af op relationeel model

– zoek functionele afhankelijkheden

– controleer of verdere decompositie wenselijk is

Page 47: Normalisatie - deel 2
Page 48: Normalisatie - deel 2

MEERWAARDIGE AFHANKELIJKHEDEN

EN VIERDE NORMAALVORM

Page 49: Normalisatie - deel 2

meervoudige afhankelijkheden

• meervoudige afhankelijkheden zijn een gevolg van 1NF

• betekenis: elke docent gebruikt elke tekst

(onafhankelijkheid van Teacher en Text)

Course Teacher Text

Physics Green Brown Black

Mechanics Thermodynamics

Math white

Algebra Geometry

Page 50: Normalisatie - deel 2

meervoudige afhankelijkheden

In het voorbeeld: Course ->> Teacher en Course ->>Text

Course Teacher Text

Physics Green Mechanics

Physics Green Thermodynamics

Physics Brown Mechanics

Physics Brown Thermodynamics

Physics Black Mechanics

Physics Black Thermodynamics

Math White Algebra

Math White Geometry

Page 51: Normalisatie - deel 2

Def: Een attributenverzameling Y van een relatie R is meerwaardig

afhankelijk van een attributenverzameling X van R, genoteerd

X ->> Y,

a.s.a.

voor elke toegestane extensie r van R geldt :

als er 2 tupels t1 en t2 in r zijn zodat t1[X]=t2[X],

dan bestaan er twee tupels t3 en t4 in r zodat

t3[X] = t4[X] = t1[X] = t2[X] en

t3[Y] = t1[Y] en t4[Y] = t2[Y] en

t3[UR\X\Y] = t2[UR\X\Y] en t4[UR\X\Y] = t1[UR\X\Y]

meerwaardige afhankelijkheden

• X bepaalt eenduidig een verzameling Y's ( "X

multidetermineert Y")

• welke Y's bij X horen hangt niet af van andere attributen

Page 52: Normalisatie - deel 2

meervoudige afhankelijkheden

• gegeven een relatie R, X en Y zijn deelverzamelingen van

attributen in R en Z= R – (X U Y)

• X ->> Y geldt als er 2 tupels t1 en t2 in r zijn zodat t1[X]=t2[X], dan

bestaan er twee tupels t3 en t4 in r zodat

– t3[X] = t4[X] = t1[X] = t2[X] en

– t3[Y] = t1[Y] en t4[Y] = t2[Y] en

– t3[Z] = t2[Z] en t4[Z] = t1[Z]

X Y Z

t1 a b1 c1

t2 a b2 c2

t3 a b1 c2

t4 a b2 c1

Page 53: Normalisatie - deel 2

ENAME ->> PNAME

en ENAME ->> DNAME

voorbeeld

Page 54: Normalisatie - deel 2

voorbeeld

• T-shirts van bepaald model, met maat (S,M,L,XL) en

kleur

• Model ->> Maat betekent:

– elk model wordt in welbepaalde maten geleverd, onafhankelijk

van de kleur

– Dus als 1 model in kleuren blauw en grijs bestaat, en in maten M,

L, XL, betekent dit dat elke combinatie van maat en kleur

beschikbaar is

– Anders gezegd: elke combinatie van kleur en maat is mogelijk

• dus automatisch ook Model ->> Kleur

Page 55: Normalisatie - deel 2

belang

• Als X meerdere attribuutverzamelingen

multidetermineert: combinatorische explosie!

• Voorbeeld

– om < x1, { a1,a2 } , { b1,b2,b3 } , { c1,c2,c3 } > voor te stellen

– 2 x 3 x 3 = 18 tupels nodig

• Daarom mwa's weren uit relaties 4NF

Page 56: Normalisatie - deel 2

Def: Een meerwaardige afhankelijkheid X->>Y in relatie R is een triviale meerwaardige afhankelijkheid a.s.a. Y X of X Y = UR

definitie van triviale mwa

• Merk op :

– X ->> UR \ X geldt steeds

Page 57: Normalisatie - deel 2

ENAME ->> PNAME

en ENAME ->> DNAME

voorbeeld

Page 58: Normalisatie - deel 2

vierde normaalvorm

Def: Een relatieschema SR = < U,F > is in de vierde

normaalvorm

a.s.a.

voor elke niet-triviale meerwaardige afhankelijkheid van

de vorm X->>Y van F+ geldt:

X is een supersleutel van R.

Belang van 4NF: vermijden van redundantie en anomalieën

Page 59: Normalisatie - deel 2

(a) EMP relatie met MVDs: ENAME ->> PNAME en ENAME ->> DNAME

ENAME is geen supersleutel

(b) EMP geprojecteerd op EMP_PROJECTS en EMP_DEPENDENTS)

ENAME ->> PNAME en ENAME ->> DNAME zijn nu triviale MVDs

Page 60: Normalisatie - deel 2

algoritme voor verliesloze

decompositie naar 4NF

• Merk op : garandeert geen behoud van

afhankelijkheden!

:= {R} zolang er een relatieschema SRi in is dat niet in 4NF is : zoek een niet-triviale mwa X->>Y binnen SRi die volgens 4NF niet toegelaten is; vervang SRi in door twee relatieschema’s SRi\Y en X Y: := \ {S Ri} {S Ri \ Y, X Y}

Page 61: Normalisatie - deel 2

(a) EMP relatie met MVDs: ENAME ->> PNAME en ENAME ->> DNAME

ENAME is geen supersleutel

(b) EMP geprojecteerd op EMP_PROJECTS en EMP_DEPENDENTS)

ENAME ->> PNAME en ENAME ->> DNAME zijn nu triviale MVDs

Page 62: Normalisatie - deel 2

oefening

• breng relatie in 4NF

• Course ->> Teacher en Course ->>Text

Course Teacher Text

Physics Green Mechanics

Physics Green Thermodynamics

Physics Brown Mechanics

Physics Brown Thermodynamics

Physics Black Mechanics

Physics Black Thermodynamics

Math White Algebra

Math White Geometry

Page 63: Normalisatie - deel 2

JOIN-AFHANKELIJKHEDEN EN

VIJFDE NORMAALVORM

Page 64: Normalisatie - deel 2

voorbeeld

Agent Company Product

Smith Ford truck

Smith GM car

Smith GM truck

Jones Ford car

Page 65: Normalisatie - deel 2

voorbeeld

Agent Company Product

Smith Ford car

Smith Ford truck

Smith GM truck

Smith GM Car

Jones Ford car

Er is geen verliesloze decompositie mogelijk in 2 relaties, want

Agent Product

Smith car

Smith Truck

Jones car

Agent Company

Smith Ford

Smith GM

Jones Ford

*

=

levert onechte tupels op

Page 66: Normalisatie - deel 2

voorbeeld

Agent Company Product

Smith Ford car

Smith Ford truck

Smith GM truck

Smith GM Car

Jones Ford Car

Jones Ford truck

En:

Company Product

Ford car

Ford Truck

GM car

GM truck

Agent Company

Smith Ford

Smith GM

Jones Ford

*

=

levert onechte tupels op

Page 67: Normalisatie - deel 2

Join-afhankelijkheid

• Als dit het geval is, spreken we van een join

afhankelijkheid

• Voorbeeld

– als ( A = a en B = b ) samen voorkomen,

– en ( B = b en C = c ) komt voor,

– en ( A = a en C = c ) komt voor,

– dan komt ( A = a, B = b, C = c ) voor

• Voorbeeld 2

– als ( Agent = Jones en Company = Ford ) samen voorkomen,

– en ( Company = Ford en Product = Car ) komt voor,

– en ( Agent = Jones en Product = Car ) komt voor,

– dan komt ( Agent = Jones, Company = Ford, Product = Car ) voor

Page 68: Normalisatie - deel 2

Voorbeeld

JD ({Agent, Company}, {Company, Product}, {Agent, Product})

voorwaarde voor het voorkomen van een combinatie is strenger

Def: Een join-afhankelijkheid JD(U1, ..., Un) in relatie R is een restrictie die aangeeft dat voor elke extensie r van R geldt: er is een verliesloze decompositie in relaties R1,...,Rn met attributen U1, U2, ..., Un; m.a.w. U1(r) U2(r) ... Un(r) = r

Page 69: Normalisatie - deel 2

voorbeeld

• aanbod van T-shirts met bepaald model, maat en kleur

voldoet aan volgende restrictie:

als dergelijke tupels voorkomen in een extensie van R...

dan ook dit tupel

Dit is de join-afhankelijkheid

JD ( {Model,Maat} , {Maat,Kleur} , {Model,Kleur} )

Wat is het verschil met Model->>Maat ?

Model Maat Kleur

x y

x z

y z

x y z

Page 70: Normalisatie - deel 2

triviale JD

Def: Een join-afhankelijkheid JD(U1, ..., Un) in relatie R is een triviale join-afhankelijkheid a.s.a. een van de Ui gelijk is aan UR.

als dergelijke tupels voorkomen in een extensie van R...

dan ook dit tupel

Voorbeeld van triviale JD:

Model Maat Kleur

x y

x z

x y z

x y z

Def: Een join-afhankelijkheid JD(U1, ..., Un) in relatie R is een triviale join-afhankelijkheid a.s.a. een van de Ui gelijk is aan UR.

Page 71: Normalisatie - deel 2

vijfde normaalvorm

Methode om relatieschema naar 5NF te normaliseren:

voor elke JD() in FR+: splits R op volgens

Voorbeeld : T-shirts

UR = { Model, Maat, Kleur }

splits op in { Model, Maat }, { Maat, Kleur }, { Model, Kleur }

Def: Een relatieschema SR = <U,F> is in de vijfde normaalvorm (of project-join-normaalvorm) a.s.a. voor elke niet-triviale join-afhankelijkheid JD(U1, ..., Un) van F+ geldt: U1 , ..., Un zijn allemaal supersleutels van R.

Page 72: Normalisatie - deel 2

ander voorbeeld: relatie SUPPLY

• Leverancier (supplier) s levert onderdeel (part) p aan

project j

• restrictie:

– als leverancier s deel p kan leveren,

– en project j gebruikt onderdeel p,

– en leverancier s levert aan project j,

– dan levert s onderdeel p aan project j

• genoteerd:

– JD ( {SNAME, PARTNAME} , {SNAME,PROJNAME},

{PARTNAME, PROJNAME} )

Page 73: Normalisatie - deel 2
Page 74: Normalisatie - deel 2

voorbeeld examenvraag

Gegeven de volgende relatie die gegevens bevat van koelkasten

REFRIG { ModelNr, Jaar, Prijs, Fabriek, Kleur }

met de functionele afhankelijkheden F:

– { ModelNr } { Fabriek }

– { ModelNr, Jaar } { Prijs }

– { Fabriek } { Kleur }

Gevraagd:

– Bepaal een kandidaatsleutel.

– In welke normaalvorm is de relatie REFRIG?

– Normaliseer REFRIG zover je kan en geef aan in welke normaalvorm

het resultaat is.

Page 75: Normalisatie - deel 2

VRAGEN?