(E)ER naar relationeel schema


  • 2,290 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,290
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
45
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Gegevensbanken(E)ER naar relationeel schema Prof. Erik Duval en Katrien Verbert 2011 - 2012 1
  • 2. http://www.slideshare.net/erik.duval2
  • 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. Fname Minit Lname Number Salary Name Name N WORKS_FOR 1 Locations Sex AddressSsn StartDate EMPLOYEE DEPARTMENT 1Bdate 1 1 MANAGES Hours CONTROLSsupervisor supervisee 1 N 1 N N SUPERVISES WORKS_ON M HAS_DEP. PROJECT N Name Location DEPENDENT Number Name Relationship Sex BirthDate 4
  • 5. EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address,Sex, SalaryDEPARTMENT Dname, DnumberPROJECT Pname, Pnumber, Plocation 5
  • 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. DEPENDENT Essn, Dependent_Name, Sex, Bdate, Relationship 6
  • 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. DEPARTMENT Dname, Dnumber, Mgr_ssn, Mgr_start_date 7
  • 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. EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, DnoPROJECT Pname, Pnumber, Plocation, Dnum 8
  • 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 opEMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, DnoPROJECT Pname, Pnumber, Plocation, Dnum 8
  • 13. WORKS_ON Essn, Pno, Hours 9
  • 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. DEPT_LOCATIONS Dnumber, Dlocation 10
  • 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. 11
  • 18. 12
  • 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. 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. 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. 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. 14
  • 24. Stap 8: behandeling van super/subklasse-relaties 14
  • 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. 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. 15
  • 28. 16
  • 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. • 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. • 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. 17
  • 33. • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k 17
  • 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. • 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. • 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. 18
  • 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. • 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. • 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. • 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. • 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. Vragen...? 19