Gegevensbanken
(E)ER naar relationeel
       schema
       Prof. Erik Duval
         2009 - 2010




              1
http://www.slideshare.net/erik.duval




2
•   (E)ER schema afbeelden op relationele model?
    •   entiteitstypes
        (regulier, zwak)
    •   relatietypes
    ...
Fname         Minit     Lname                                                                         Number
             ...
EMPLOYEE
 Fname, Minit, Lname, Ssn, Bdate, Address,
Sex, Salary

DEPARTMENT
 Dname, Dnumber

PROJECT
 Pname, Pnumber, Ploc...
1. voor elk regulier entiteitstype E:
 •   maak relatie R
 •   met alle enkelvoudige attributen van E
 •   kies één van sl...
DEPENDENT
 Essn, Dependent_Name, Sex, Bdate, Relationship



                       6
stap 2. voor elk zwak entiteitstype W:
 •   maak een relatie R
 •   met alle enkelvoudige attributen van W
 •   en als ver...
DEPARTMENT
 Dname, Dnumber, Mgr_ssn, Mgr_start_date



                   7
stap 3. voor elk binair 1:1 relatietype R:
 •   S en T relaties voor deelnemende entiteitstypes van R
 •   neem primaire s...
EMPLOYEE
  Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary,
  Super_ssn, Dno

PROJECT
 Pname, Pnumber, Plocation, Dn...
stap 4. voor elk binair 1:N relatietype R:
     •   S relatie die entiteitstype van N-kant voorstelt
     •   voeg in S pr...
WORKS_ON
 Essn, Pno, Hours



        9
stap 5. voor elk binair N:M relatietype R:
 •   maak nieuwe relatie S
 •   met verwijssleutels primaire sleutels van deeln...
DEPT_LOCATIONS
 Dnumber, Dlocation



        10
stap 6. voor elk meerwaardig attribuut A:
 •   creëer een relatie R
 •   met attribuut dat overeenkomt met A
 •   + verwij...
11
12
Stap 7: voor elk n-air relatietype R (n>2) :
 •   maak nieuwe relatie S
 •   met verwijssleutels: primaire sleutels van de...
Stap 7: voor elk n-air relatietype R (n>2) :
 •   maak nieuwe relatie S
 •   met verwijssleutels: primaire sleutels van de...
Stap 7: voor elk n-air relatietype R (n>2) :
 •   maak nieuwe relatie S
 •   met verwijssleutels: primaire sleutels van de...
ER model                                relationeel model
•   entiteitstype                       •   “entiteits” relatie
...
14
Stap 8: behandeling van super/subklasse-relaties




                              14
Stap 8: behandeling van super/subklasse-relaties
•    Elke specialisatie met m subklassen { S1, S2,..., Sm }
     en super...
Stap 8: behandeling van super/subklasse-relaties
•    Elke specialisatie met m subklassen { S1, S2,..., Sm }
     en super...
15
16
•   Optie 8B
      •   maak voor elke subklasse Si een relatie Li
          met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an...
•   Optie 8B
      •   maak voor elke subklasse Si een relatie Li
          met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an...
•   Optie 8B
      •   maak voor elke subklasse Si een relatie Li
          met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an...
17
•   Optie 8C: één relatie L
    attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en
    PK(L) = k

...
•   Optie 8C: één relatie L
    attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en
    PK(L) = k
•...
•   Optie 8C: één relatie L
    attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en
    PK(L) = k
•...
•   Optie 8C: één relatie L
    attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en
    PK(L) = k
•...
18
•   Optie 8D: één relatie L
    met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) }
    ∪ { t1, t2, ..., ...
•   Optie 8D: één relatie L
    met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) }
    ∪ { t1, t2, ..., ...
•   Optie 8D: één relatie L
    met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) }
    ∪ { t1, t2, ..., ...
•   Optie 8D: één relatie L
    met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) }
    ∪ { t1, t2, ..., ...
•   Optie 8D: één relatie L
    met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) }
    ∪ { t1, t2, ..., ...
Vragen...?

    19
Upcoming SlideShare
Loading in …5
×

Mapping EER to Relational Model

4,272 views

Published on

Mapping EER to Relational Model

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,272
On SlideShare
0
From Embeds
0
Number of Embeds
188
Actions
Shares
0
Downloads
84
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • Mapping EER to Relational Model

    1. 1. Gegevensbanken (E)ER naar relationeel schema Prof. Erik Duval 2009 - 2010 1
    2. 2. http://www.slideshare.net/erik.duval 2
    3. 3. • (E)ER schema afbeelden op relationele model? • entiteitstypes (regulier, zwak) • relatietypes (binaire of hogere graad) • attributen (enkelvoudig, samengesteld, meerwaardig) • restricties • ER → relationeel • EER → relationeel 3
    4. 4. Fname Minit Lname Number Salary Name Name N WORKS_FOR 1 Locations Sex Address Ssn StartDate EMPLOYEE DEPARTMENT 1 Bdate 1 1 MANAGES Hours CONTROLS supervisor supervisee 1 N 1 N N SUPERVISES WORKS_ON M HAS_DEP. PROJECT N Name Location DEPENDENT Number Name Relationship Sex BirthDate 4
    5. 5. EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary DEPARTMENT Dname, Dnumber PROJECT Pname, Pnumber, Plocation 5
    6. 6. 1. voor elk regulier entiteitstype E: • maak relatie R • met alle enkelvoudige attributen van E • kies één van sleutelattributen als primaire sleutel voor R EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary DEPARTMENT Dname, Dnumber PROJECT Pname, Pnumber, Plocation 5
    7. 7. DEPENDENT Essn, Dependent_Name, Sex, Bdate, Relationship 6
    8. 8. stap 2. voor elk zwak entiteitstype W: • maak een relatie R • met alle enkelvoudige attributen van W • en als verwijssleutel de primaire sleutel van eigenaar DEPENDENT Essn, Dependent_Name, Sex, Bdate, Relationship 6
    9. 9. DEPARTMENT Dname, Dnumber, Mgr_ssn, Mgr_start_date 7
    10. 10. stap 3. voor elk binair 1:1 relatietype R: • S en T relaties voor deelnemende entiteitstypes van R • neem primaire sleutel van T op als verwijssleutel in S (of omgekeerd) - vermijd nul-waarden • neem ook enkelvoudige attributen op DEPARTMENT Dname, Dnumber, Mgr_ssn, Mgr_start_date 7
    11. 11. EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno PROJECT Pname, Pnumber, Plocation, Dnum 8
    12. 12. stap 4. voor elk binair 1:N relatietype R: • S relatie die entiteitstype van N-kant voorstelt • voeg in S primaire sleutel relatie aan 1-kant toe • neem ook enkelvoudige attributen op EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno PROJECT Pname, Pnumber, Plocation, Dnum 8
    13. 13. WORKS_ON Essn, Pno, Hours 9
    14. 14. stap 5. voor elk binair N:M relatietype R: • maak nieuwe relatie S • met verwijssleutels primaire sleutels van deelnemende relaties • met verwijssleutels samen als primaire sleutel • neem ook enkelvoudige attributen van R op WORKS_ON Essn, Pno, Hours 9
    15. 15. DEPT_LOCATIONS Dnumber, Dlocation 10
    16. 16. stap 6. voor elk meerwaardig attribuut A: • creëer een relatie R • met attribuut dat overeenkomt met A • + verwijssleutel: primaire sleutel K van bijhorende relatie • als primaire sleutel: A en K samen DEPT_LOCATIONS Dnumber, Dlocation 10
    17. 17. 11
    18. 18. 12
    19. 19. Stap 7: voor elk n-air relatietype R (n>2) : • maak nieuwe relatie S • met verwijssleutels: primaire sleutels van deelnemende entiteitstypes • met alle enkelvoudige attributen van R • met primaire sleutel: alle verwijssleutels samen 12
    20. 20. Stap 7: voor elk n-air relatietype R (n>2) : • maak nieuwe relatie S • met verwijssleutels: primaire sleutels van deelnemende entiteitstypes • met alle enkelvoudige attributen van R • met primaire sleutel: alle verwijssleutels samen 12
    21. 21. Stap 7: voor elk n-air relatietype R (n>2) : • maak nieuwe relatie S • met verwijssleutels: primaire sleutels van deelnemende entiteitstypes • met alle enkelvoudige attributen van R • met primaire sleutel: alle verwijssleutels samen 12
    22. 22. ER model relationeel model • entiteitstype • “entiteits” relatie • 1:1 of 1:N relationship type • verwijssleutel of relatie • M:N relationship type • relatie met 2 verwijssleutels • n-aire relationship type • relatie met n verwijssleutels • enkelvoudig attribuut • attribuut • samengesteld attribuut • verzameling attributen • meerwaardig attribuut • relatie of verwijssleutel • value set • domein • sleutel attribuut • primaire sleutel 13
    23. 23. 14
    24. 24. Stap 8: behandeling van super/subklasse-relaties 14
    25. 25. Stap 8: behandeling van super/subklasse-relaties • Elke specialisatie met m subklassen { S1, S2,..., Sm } en superklasse C met attributen { k, a1, ..., an } 14
    26. 26. Stap 8: behandeling van super/subklasse-relaties • Elke specialisatie met m subklassen { S1, S2,..., Sm } en superklasse C met attributen { k, a1, ..., an } • Optie 8A • maak relatie L voor C met attr(L) = { k, a1, ..., an } • en primaire sleutel PK(L) = k • en relaties Li voor elke subklasse Si met • attr(Li) = { k } ∪ { attr(Si) } • en PK(Li) = k 14
    27. 27. 15
    28. 28. 16
    29. 29. • Optie 8B • maak voor elke subklasse Si een relatie Li met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an } en PK(Li) = k • werkt enkel correct voor disjuncte, totale specialisatie • niet totale specialisatie → verlies van gegevens (∉ Si) • niet disjuncte specialisatie → redundantie 16
    30. 30. • Optie 8B • maak voor elke subklasse Si een relatie Li met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an } en PK(Li) = k • werkt enkel correct voor disjuncte, totale specialisatie • niet totale specialisatie → verlies van gegevens (∉ Si) • niet disjuncte specialisatie → redundantie 16
    31. 31. • Optie 8B • maak voor elke subklasse Si een relatie Li met attr(Li) = { attr(Si) } ∪ { k, a1, ..., an } en PK(Li) = k • werkt enkel correct voor disjuncte, totale specialisatie • niet totale specialisatie → verlies van gegevens (∉ Si) • niet disjuncte specialisatie → redundantie 16
    32. 32. 17
    33. 33. • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k 17
    34. 34. • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k • waarbij t duidt aan tot welke subklasse elk tupel behoort • weggelaten als specialisatie predikaatgedefinieerd • enkel voor disjuncte subklassen • veel verschillende attributen in subklassen: veel nul 17
    35. 35. • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k • waarbij t duidt aan tot welke subklasse elk tupel behoort • weggelaten als specialisatie predikaatgedefinieerd • enkel voor disjuncte subklassen • veel verschillende attributen in subklassen: veel nul 17
    36. 36. • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k • waarbij t duidt aan tot welke subklasse elk tupel behoort • weggelaten als specialisatie predikaatgedefinieerd • enkel voor disjuncte subklassen • veel verschillende attributen in subklassen: veel nul 17
    37. 37. 18
    38. 38. • Optie 8D: één relatie L met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t1, t2, ..., tm } en PK(L) = k • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit 18
    39. 39. • Optie 8D: één relatie L met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t1, t2, ..., tm } en PK(L) = k • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit • gebruikt voor overlappende subklassen 18
    40. 40. • Optie 8D: één relatie L met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t1, t2, ..., tm } en PK(L) = k • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit • gebruikt voor overlappende subklassen • ook hier gevaar voor veel nulwaarden 18
    41. 41. • Optie 8D: één relatie L met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t1, t2, ..., tm } en PK(L) = k • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit • gebruikt voor overlappende subklassen • ook hier gevaar voor veel nulwaarden 18
    42. 42. • Optie 8D: één relatie L met attr(L) = { k, a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t1, t2, ..., tm } en PK(L) = k • ti, 1≤ i ≤ m is boolean die aangeeft of entiteit in Si zit • gebruikt voor overlappende subklassen • ook hier gevaar voor veel nulwaarden 18
    43. 43. Vragen...? 19

    ×