(E)ER naar relationeel schema

Upcoming SlideShare
Loading in...5
×
 

(E)ER naar relationeel schema


on

  • 2,679 views

 

Statistics

Views

Total Views
2,679
Views on SlideShare
1,137
Embed Views
1,542

Actions

Likes
1
Downloads
45
Comments
0

1 Embed 1,542

https://cygnus.cc.kuleuven.be 1542

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \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

(E)ER naar relationeel schema
 (E)ER naar relationeel schema
 Presentation Transcript

  • Gegevensbanken(E)ER naar relationeel schema Prof. Erik Duval en Katrien Verbert 2011 - 2012 1
  • http://www.slideshare.net/erik.duval2
  • • (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
  • 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
  • EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address,Sex, SalaryDEPARTMENT Dname, DnumberPROJECT Pname, Pnumber, Plocation 5
  • 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
  • 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 verwijssleutel de primaire sleutel van eigenaar DEPENDENT Essn, Dependent_Name, Sex, Bdate, Relationship 6
  • 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 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
  • EMPLOYEE Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, DnoPROJECT Pname, Pnumber, Plocation, Dnum 8
  • 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
  • WORKS_ON Essn, Pno, Hours 9
  • 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
  • DEPT_LOCATIONS Dnumber, Dlocation 10
  • 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
  • 11
  • 12
  • 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
  • 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
  • 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
  • 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
  • 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 superklasse C met attributen { k, a1, ..., an } 14
  • 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
  • 15
  • 16
  • • 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
  • • 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
  • • 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
  • 17
  • • Optie 8C: één relatie L attr(L) = { k,a1, ..., an } ∪ { attr(S1) } ∪ ... ∪ { attr(Sm) } ∪ { t } en PK(L) = k 17
  • • 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
  • • 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
  • • 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
  • 18
  • • 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
  • • 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
  • • 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
  • • 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
  • • 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
  • Vragen...? 19