SlideShare a Scribd company logo
1 of 75
Download to read offline
normalisatie – deel 2



Katrien Verbert
katrien.verbert@cs.kuleuven.be
inhoud

• decompositie: algoritmen en eigenschappen
• meerwaardige afhankelijkheden, 4e normaalvorm
• join-afhankelijkheden en 5e normaalvorm
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
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!
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
resultaat van natuurlijke join op de tuples boven de stippellijn:
er worden onechte tupels ingevoerd
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
Als INTER  INTRA+, dan zeggen we dat
   (SR) de afhankelijkheden van F bewaart



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

 • algoritme voor afhankelijkheden-bewarende
   decompositie naar 3NF:

   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


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

                                 A    B    C     D
voorbeeld

 U
Emp_ssn   Pno      Esal     Ephone   Dno      Pname      Plocation

Afhankelijkheden
{Emp_ssn}  {Esal, Ephone, Dno}
{Pno}  {Pname, Plocation}
{Emp_ssn, Pno}  {Esal, Ephone, Dno, Pname, Plocation}
minimale overdekking

 U
Emp_ssn   Pno      Esal     Ephone   Dno      Pname        Plocation

Afhankelijkheden
1.{Emp_ssn}  {Esal, Ephone, Dno}
2.{Pno}  {Pname, Plocation}
3.{Emp_ssn, Pno}  {Esal, Ephone, Dno, Pname, Plocation}

Kunnen we afhankelijkheden weglaten?
{Emp_ssn, Pno}+={Emp_ssn, Pno, Esal, Ephone, Dno, Pname,
Plocation}

Minimale overdekking
{Emp_ssn}  {Esal, Ephone, Dno}
{Pno}  {Pname, Plocation}
decompositie

 U
Emp_ssn   Pno        Esal      Ephone     Dno       Pname        Plocation


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
oefening

Stock
Model#     Serial#   Price     Color       Name       Year

afhankelijkheden               minimale verzameling
{M, S}  {P, C}                {M, S}  {C}
{S}  {Y}                      {S}  {Y}
{M}  {N}                      {M}  {N}
{N,Y}  {P}                    {N,Y}  {P}


Model#     Serial#   Color             Serial#    Year


Model#     Name              Name       Year      Price
verliesloze decomposities

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

•   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?
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
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 }
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.

                  (UR1  UR2)  (UR1  UR2)  F+
                                 of
                  (UR1  UR2)  (UR2  UR1)  F+

  – eenvoudiger test dan "chase" algoritme
  – maar enkel toepasselijk op splitsing in 2 schema's
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!
verliesloze decompositie van een
relatie R naar BCNF
 := {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!
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
FR1 = { O  BSH, B  D, D  B, SH  OP, P  S,
           SW}

                    postcode (P)




   id.nr (O)        straatnaam (S)   huisnr (H)


  bouwmij (B)
                      wijk (W)
 directeur (D)
voorbeeld van een extensie van R1



   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
• 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?
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}
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 }
voorbeeld

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




                          = { O  BSH, B  D, D 
                          B, SH  OP, P  S,
                                         SW}
R20 Straat (S) Wijk (W)
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
Alle relaties in 3NF?

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




                          = { O  BSH, B  D, D 
                          B, SH  OP, P  S,
                                         SW}
R20 Straat (S) Wijk (W)
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 }
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                              B          D
 Perenstraat       Fruitwijk                         Bouwlust   P. Akker
 Appelstraat       Fruitwijk                         Solide     Z. Glas
 Beukenstraat      Bomenwijk
Alle relaties in BCNF?
                                     kandidaatsleutels van R3: O, SH, PH

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




                          = { O  BSH, B  D, D 
                          B, SH  OP, P  S,
                                         SW}
R20 Straat (S) Wijk (W)



R30 BouwM. (B) Directeur (D)
• 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
uiteindelijke extensie van
 gegevensbank         F = { O  BSH, B  D, D  B, SH
                                               R1
                                               OP, P  S, S  W }

   O        H      P                  B                           P              S
15351       23   2745 DD           Bouwlust                  2745 DD       Perenstraat
15352       25   2745 DD           Bouwlust                  2745 EG       Appelstraat
15788        8   2745 EG           Solide                    2751 BE       Beukenstraat
20371       94   2751 BE           Solide                    2751 BB       Beukenstraat
20372       96   2751 BE           Solide
20167        1   2751 BB           Bouwlust


        S                 W
 Perenstraat                                             B             D
                       Fruitwijk
                                                       Bouwlust   P. Akker
 Appelstraat           Fruitwijk
                                                       Solide     Z. Glas
 Beukenstraat       Bomenwijk

Welke afhankelijkheden zijn "verloren gegaan"?
m.a.w. welke restricties zijn nu moeilijker te controleren?
• 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)
verliesloze en afhankelijkheden-
bewarende decompositie naar 3NF
• zelfde algoritme als voorheen voor afh.bewarende
  decompositie, met één extra stap


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
voorbeeld
 U
 Emp_ssn   Pno      Esal       Ephone   Dno       Pname   Plocation

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

Minimale overdekking
{Emp_ssn}  {Esal, Ephone, Dno}               1
{Pno}  {Pname, Plocation}


Emp_ssn    Esal     Ephone     Dno
                                              2
Pno         Pname      Plocation

Emp_ssn     Pno                               4
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}
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}
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
natuurlijke join




left outer join
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
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
MEERWAARDIGE AFHANKELIJKHEDEN
EN VIERDE NORMAALVORM
meervoudige afhankelijkheden

• meervoudige afhankelijkheden zijn een gevolg van 1NF
  Course        Teacher         Text

  Physics        Green        Mechanics
                 Brown     Thermodynamics
                 Black
  Math                         Algebra
                 white        Geometry




• betekenis: elke docent gebruikt elke tekst
  (onafhankelijkheid van Teacher en Text)
meervoudige afhankelijkheden

         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



    In het voorbeeld: Course ->> Teacher en Course ->>Text
meerwaardige afhankelijkheden
• X bepaalt eenduidig een verzameling Y's ( "X
  multidetermineert Y")
• welke Y's bij X horen hangt niet af van andere attributen

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[URXY] = t2[URXY] en t4[URXY] = t1[URXY]
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                X     Y    Z
    – t3[Y] = t1[Y] en t4[Y] = t2[Y] en          t1   a     b1   c1
    – t3[Z] = t2[Z] en t4[Z] = t1[Z]             t2   a     b2   c2
                                                 t3   a     b1   c2
                                                 t4   a     b2   c1
voorbeeld
ENAME ->> PNAME
en ENAME ->> DNAME
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
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
definitie van triviale mwa

• Merk op :
   – X ->> UR  X geldt steeds


  Def: Een meerwaardige afhankelijkheid X->>Y in relatie R
  is een triviale meerwaardige afhankelijkheid
  a.s.a.
  Y  X of X  Y = UR
voorbeeld
ENAME ->> PNAME
en ENAME ->> DNAME
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
(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
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 SRiY en X Y:
             :=   {S Ri}  {S Ri  Y, X  Y}
(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
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
JOIN-AFHANKELIJKHEDEN EN
VIJFDE NORMAALVORM
voorbeeld

Agent       Company   Product
Smith       Ford      truck
Smith       GM        car
Smith       GM        truck
Jones       Ford      car
voorbeeld
Er is geen verliesloze decompositie mogelijk in 2 relaties, want
Agent      Company                  Agent           Product
Smith      Ford                     Smith           car
Smith      GM                  *    Smith           Truck
Jones      Ford                     Jones           car

  =
Agent                Company                Product
Smith                Ford                   car
Smith                Ford                   truck
Smith                GM                     truck
Smith                GM                     Car
Jones                Ford                   car

                                    levert onechte tupels op
voorbeeld
En:
Agent   Company                 Company        Product
Smith   Ford                    Ford           car
Smith   GM                  *   Ford           Truck
Jones   Ford                    GM             car
                                GM             truck
  =
Agent             Company              Product
Smith             Ford                 car
Smith             Ford                 truck
Smith             GM                   truck
Smith             GM                   Car
Jones             Ford                 Car
Jones             Ford                 truck

                                levert onechte tupels op
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
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

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


 voorwaarde voor het voorkomen van een combinatie is
   strenger
voorbeeld

• aanbod van T-shirts met bepaald model, maat en kleur
  voldoet aan volgende restrictie:

Model         Maat          Kleur

x             y                           als dergelijke tupels
x                           z             voorkomen in
              y             z             een extensie van R...

x              y             z      dan ook dit tupel
Dit is de join-afhankelijkheid
JD ( {Model,Maat} , {Maat,Kleur} , {Model,Kleur} )
Wat is het verschil met Model->>Maat ?
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.

Voorbeeld van triviale JD:
Model       Maat            Kleur

x              y                          als dergelijke tupels
x                              z          voorkomen in
                                          een extensie van R...
x              y               z
                                         dan ook dit tupel
x              y               z
vijfde normaalvorm
 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.

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 }
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} )
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.
VRAGEN?

More Related Content

More from Katrien Verbert

Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Katrien Verbert
 
Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Katrien Verbert
 
Human-centered AI: how can we support lay users to understand AI?
Human-centered AI: how can we support lay users to understand AI?Human-centered AI: how can we support lay users to understand AI?
Human-centered AI: how can we support lay users to understand AI?Katrien Verbert
 
Explaining job recommendations: a human-centred perspective
Explaining job recommendations: a human-centred perspectiveExplaining job recommendations: a human-centred perspective
Explaining job recommendations: a human-centred perspectiveKatrien Verbert
 
Explaining recommendations: design implications and lessons learned
Explaining recommendations: design implications and lessons learnedExplaining recommendations: design implications and lessons learned
Explaining recommendations: design implications and lessons learnedKatrien Verbert
 
Designing Learning Analytics Dashboards: Lessons Learned
Designing Learning Analytics Dashboards: Lessons LearnedDesigning Learning Analytics Dashboards: Lessons Learned
Designing Learning Analytics Dashboards: Lessons LearnedKatrien Verbert
 
Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...Katrien Verbert
 
Explainable AI for non-expert users
Explainable AI for non-expert usersExplainable AI for non-expert users
Explainable AI for non-expert usersKatrien Verbert
 
Towards the next generation of interactive and adaptive explanation methods
Towards the next generation of interactive and adaptive explanation methodsTowards the next generation of interactive and adaptive explanation methods
Towards the next generation of interactive and adaptive explanation methodsKatrien Verbert
 
Personalized food recommendations: combining recommendation, visualization an...
Personalized food recommendations: combining recommendation, visualization an...Personalized food recommendations: combining recommendation, visualization an...
Personalized food recommendations: combining recommendation, visualization an...Katrien Verbert
 
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...Katrien Verbert
 
Learning analytics for feedback at scale
Learning analytics for feedback at scaleLearning analytics for feedback at scale
Learning analytics for feedback at scaleKatrien Verbert
 
Interactive recommender systems and dashboards for learning
Interactive recommender systems and dashboards for learningInteractive recommender systems and dashboards for learning
Interactive recommender systems and dashboards for learningKatrien Verbert
 
Interactive recommender systems: opening up the “black box”
Interactive recommender systems: opening up the “black box”Interactive recommender systems: opening up the “black box”
Interactive recommender systems: opening up the “black box”Katrien Verbert
 
Interactive Recommender Systems
Interactive Recommender SystemsInteractive Recommender Systems
Interactive Recommender SystemsKatrien Verbert
 
Web Information Systems Lecture 2: HTML
Web Information Systems Lecture 2: HTMLWeb Information Systems Lecture 2: HTML
Web Information Systems Lecture 2: HTMLKatrien Verbert
 
Information Visualisation: perception and principles
Information Visualisation: perception and principlesInformation Visualisation: perception and principles
Information Visualisation: perception and principlesKatrien Verbert
 
Web Information Systems Lecture 1: Introduction
Web Information Systems Lecture 1: IntroductionWeb Information Systems Lecture 1: Introduction
Web Information Systems Lecture 1: IntroductionKatrien Verbert
 
Information Visualisation: Introduction
Information Visualisation: IntroductionInformation Visualisation: Introduction
Information Visualisation: IntroductionKatrien Verbert
 

More from Katrien Verbert (20)

Explainability methods
Explainability methodsExplainability methods
Explainability methods
 
Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?
 
Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?Human-centered AI: how can we support end-users to interact with AI?
Human-centered AI: how can we support end-users to interact with AI?
 
Human-centered AI: how can we support lay users to understand AI?
Human-centered AI: how can we support lay users to understand AI?Human-centered AI: how can we support lay users to understand AI?
Human-centered AI: how can we support lay users to understand AI?
 
Explaining job recommendations: a human-centred perspective
Explaining job recommendations: a human-centred perspectiveExplaining job recommendations: a human-centred perspective
Explaining job recommendations: a human-centred perspective
 
Explaining recommendations: design implications and lessons learned
Explaining recommendations: design implications and lessons learnedExplaining recommendations: design implications and lessons learned
Explaining recommendations: design implications and lessons learned
 
Designing Learning Analytics Dashboards: Lessons Learned
Designing Learning Analytics Dashboards: Lessons LearnedDesigning Learning Analytics Dashboards: Lessons Learned
Designing Learning Analytics Dashboards: Lessons Learned
 
Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...Human-centered AI: towards the next generation of interactive and adaptive ex...
Human-centered AI: towards the next generation of interactive and adaptive ex...
 
Explainable AI for non-expert users
Explainable AI for non-expert usersExplainable AI for non-expert users
Explainable AI for non-expert users
 
Towards the next generation of interactive and adaptive explanation methods
Towards the next generation of interactive and adaptive explanation methodsTowards the next generation of interactive and adaptive explanation methods
Towards the next generation of interactive and adaptive explanation methods
 
Personalized food recommendations: combining recommendation, visualization an...
Personalized food recommendations: combining recommendation, visualization an...Personalized food recommendations: combining recommendation, visualization an...
Personalized food recommendations: combining recommendation, visualization an...
 
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
Explaining and Exploring Job Recommendations: a User-driven Approach for Inte...
 
Learning analytics for feedback at scale
Learning analytics for feedback at scaleLearning analytics for feedback at scale
Learning analytics for feedback at scale
 
Interactive recommender systems and dashboards for learning
Interactive recommender systems and dashboards for learningInteractive recommender systems and dashboards for learning
Interactive recommender systems and dashboards for learning
 
Interactive recommender systems: opening up the “black box”
Interactive recommender systems: opening up the “black box”Interactive recommender systems: opening up the “black box”
Interactive recommender systems: opening up the “black box”
 
Interactive Recommender Systems
Interactive Recommender SystemsInteractive Recommender Systems
Interactive Recommender Systems
 
Web Information Systems Lecture 2: HTML
Web Information Systems Lecture 2: HTMLWeb Information Systems Lecture 2: HTML
Web Information Systems Lecture 2: HTML
 
Information Visualisation: perception and principles
Information Visualisation: perception and principlesInformation Visualisation: perception and principles
Information Visualisation: perception and principles
 
Web Information Systems Lecture 1: Introduction
Web Information Systems Lecture 1: IntroductionWeb Information Systems Lecture 1: Introduction
Web Information Systems Lecture 1: Introduction
 
Information Visualisation: Introduction
Information Visualisation: IntroductionInformation Visualisation: Introduction
Information Visualisation: Introduction
 

Normalisatie - deel 2

  • 1. normalisatie – deel 2 Katrien Verbert katrien.verbert@cs.kuleuven.be
  • 2. inhoud • decompositie: algoritmen en eigenschappen • meerwaardige afhankelijkheden, 4e normaalvorm • join-afhankelijkheden en 5e normaalvorm
  • 3. 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
  • 4. 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!
  • 5. 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
  • 6.
  • 7. resultaat van natuurlijke join op de tuples boven de stippellijn: er worden onechte tupels ingevoerd
  • 8. 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
  • 9. Als INTER  INTRA+, dan zeggen we dat  (SR) de afhankelijkheden van F bewaart Def: Een decompositie  (SR) = {SR1 , SR2 , ..., SRk} van R bewaart de afhankelijkheden van R indien ( UR1(FR)  ...  URk(FR) ) + = FR+
  • 10. decompositie-algoritme 1 • algoritme voor afhankelijkheden-bewarende decompositie naar 3NF: 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 Helaas: kan tot informatieverlies aanleiding geven vb (probeer uit): A B C D
  • 11. voorbeeld U Emp_ssn Pno Esal Ephone Dno Pname Plocation Afhankelijkheden {Emp_ssn}  {Esal, Ephone, Dno} {Pno}  {Pname, Plocation} {Emp_ssn, Pno}  {Esal, Ephone, Dno, Pname, Plocation}
  • 12. minimale overdekking U Emp_ssn Pno Esal Ephone Dno Pname Plocation Afhankelijkheden 1.{Emp_ssn}  {Esal, Ephone, Dno} 2.{Pno}  {Pname, Plocation} 3.{Emp_ssn, Pno}  {Esal, Ephone, Dno, Pname, Plocation} Kunnen we afhankelijkheden weglaten? {Emp_ssn, Pno}+={Emp_ssn, Pno, Esal, Ephone, Dno, Pname, Plocation} Minimale overdekking {Emp_ssn}  {Esal, Ephone, Dno} {Pno}  {Pname, Plocation}
  • 13. decompositie U Emp_ssn Pno Esal Ephone Dno Pname Plocation 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
  • 14. oefening Stock Model# Serial# Price Color Name Year afhankelijkheden minimale verzameling {M, S}  {P, C} {M, S}  {C} {S}  {Y} {S}  {Y} {M}  {N} {M}  {N} {N,Y}  {P} {N,Y}  {P} Model# Serial# Color Serial# Year Model# Name Name Year Price
  • 15. verliesloze decomposities 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 • 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?
  • 16. 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
  • 17. 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 }
  • 18.
  • 19.
  • 20. 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. (UR1  UR2)  (UR1 UR2)  F+ of (UR1  UR2)  (UR2 UR1)  F+ – eenvoudiger test dan "chase" algoritme – maar enkel toepasselijk op splitsing in 2 schema's
  • 21. 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!
  • 22. verliesloze decompositie van een relatie R naar BCNF  := {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!
  • 23. 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
  • 24. FR1 = { O  BSH, B  D, D  B, SH  OP, P  S, SW} postcode (P) id.nr (O) straatnaam (S) huisnr (H) bouwmij (B) wijk (W) directeur (D)
  • 25. voorbeeld van een extensie van R1 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
  • 26. • 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?
  • 27. 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}
  • 28. 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 }
  • 29. voorbeeld R2 Idnr (O) Straat (S) Huisnummer(H) Postcode(P) BouwM.(B) Directeur (D) = { O  BSH, B  D, D  B, SH  OP, P  S, SW} R20 Straat (S) Wijk (W)
  • 30. 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
  • 31. Alle relaties in 3NF? R2 Idnr (O) Straat (S) Huisnummer(H) Postcode(P) BouwM.(B) Directeur (D) = { O  BSH, B  D, D  B, SH  OP, P  S, SW} R20 Straat (S) Wijk (W)
  • 32. 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 }
  • 33. 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 B D Perenstraat Fruitwijk Bouwlust P. Akker Appelstraat Fruitwijk Solide Z. Glas Beukenstraat Bomenwijk
  • 34. Alle relaties in BCNF? kandidaatsleutels van R3: O, SH, PH R3 Idnr (O) Straat (S) Huisnummer(H) Postcode(P) BouwM.(B) = { O  BSH, B  D, D  B, SH  OP, P  S, SW} R20 Straat (S) Wijk (W) R30 BouwM. (B) Directeur (D)
  • 35. • 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
  • 36. uiteindelijke extensie van gegevensbank F = { O  BSH, B  D, D  B, SH R1  OP, P  S, S  W } O H P B P S 15351 23 2745 DD Bouwlust 2745 DD Perenstraat 15352 25 2745 DD Bouwlust 2745 EG Appelstraat 15788 8 2745 EG Solide 2751 BE Beukenstraat 20371 94 2751 BE Solide 2751 BB Beukenstraat 20372 96 2751 BE Solide 20167 1 2751 BB Bouwlust S W Perenstraat B D Fruitwijk Bouwlust P. Akker Appelstraat Fruitwijk Solide Z. Glas Beukenstraat Bomenwijk Welke afhankelijkheden zijn "verloren gegaan"? m.a.w. welke restricties zijn nu moeilijker te controleren?
  • 37. • 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)
  • 38. verliesloze en afhankelijkheden- bewarende decompositie naar 3NF • zelfde algoritme als voorheen voor afh.bewarende decompositie, met één extra stap 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
  • 39. voorbeeld U Emp_ssn Pno Esal Ephone Dno Pname Plocation Afhankelijkheden {Emp_ssn}  {Esal, Ephone, Dno} {Pno}  {Pname, Plocation} {Emp_ssn, Pno}  {Esal, Ephone, Dno, Pname, Plocation} Minimale overdekking {Emp_ssn}  {Esal, Ephone, Dno} 1 {Pno}  {Pname, Plocation} Emp_ssn Esal Ephone Dno 2 Pno Pname Plocation Emp_ssn Pno 4
  • 40. 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}
  • 41. 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}
  • 42. 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
  • 43.
  • 45. 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
  • 46. 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
  • 47.
  • 49. meervoudige afhankelijkheden • meervoudige afhankelijkheden zijn een gevolg van 1NF Course Teacher Text Physics Green Mechanics Brown Thermodynamics Black Math Algebra white Geometry • betekenis: elke docent gebruikt elke tekst (onafhankelijkheid van Teacher en Text)
  • 50. meervoudige afhankelijkheden 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 In het voorbeeld: Course ->> Teacher en Course ->>Text
  • 51. meerwaardige afhankelijkheden • X bepaalt eenduidig een verzameling Y's ( "X multidetermineert Y") • welke Y's bij X horen hangt niet af van andere attributen 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[URXY] = t2[URXY] en t4[URXY] = t1[URXY]
  • 52. 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 X Y Z – t3[Y] = t1[Y] en t4[Y] = t2[Y] en t1 a b1 c1 – t3[Z] = t2[Z] en t4[Z] = t1[Z] t2 a b2 c2 t3 a b1 c2 t4 a b2 c1
  • 53. voorbeeld ENAME ->> PNAME en ENAME ->> DNAME
  • 54. 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
  • 55. 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
  • 56. definitie van triviale mwa • Merk op : – X ->> UR X geldt steeds Def: Een meerwaardige afhankelijkheid X->>Y in relatie R is een triviale meerwaardige afhankelijkheid a.s.a. Y  X of X  Y = UR
  • 57. voorbeeld ENAME ->> PNAME en ENAME ->> DNAME
  • 58. 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
  • 59. (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
  • 60. 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 SRiY en X Y:  :=  {S Ri}  {S Ri Y, X  Y}
  • 61. (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
  • 62. 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
  • 64. voorbeeld Agent Company Product Smith Ford truck Smith GM car Smith GM truck Jones Ford car
  • 65. voorbeeld Er is geen verliesloze decompositie mogelijk in 2 relaties, want Agent Company Agent Product Smith Ford Smith car Smith GM * Smith Truck Jones Ford Jones car = Agent Company Product Smith Ford car Smith Ford truck Smith GM truck Smith GM Car Jones Ford car levert onechte tupels op
  • 66. voorbeeld En: Agent Company Company Product Smith Ford Ford car Smith GM * Ford Truck Jones Ford GM car GM truck = Agent Company Product Smith Ford car Smith Ford truck Smith GM truck Smith GM Car Jones Ford Car Jones Ford truck levert onechte tupels op
  • 67. 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
  • 68. 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 Voorbeeld JD ({Agent, Company}, {Company, Product}, {Agent, Product}) voorwaarde voor het voorkomen van een combinatie is strenger
  • 69. voorbeeld • aanbod van T-shirts met bepaald model, maat en kleur voldoet aan volgende restrictie: Model Maat Kleur x y als dergelijke tupels x z voorkomen in y z een extensie van R... x y z dan ook dit tupel Dit is de join-afhankelijkheid JD ( {Model,Maat} , {Maat,Kleur} , {Model,Kleur} ) Wat is het verschil met Model->>Maat ?
  • 70. 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. Voorbeeld van triviale JD: Model Maat Kleur x y als dergelijke tupels x z voorkomen in een extensie van R... x y z dan ook dit tupel x y z
  • 71. vijfde normaalvorm 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. 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 }
  • 72. 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} )
  • 73.
  • 74. 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.

Editor's Notes

  1. Problemen die voorkomen bij normalisatie algoritmes