Your SlideShare is downloading. ×
0
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Relationele algebra
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Relationele algebra

2,344

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,344
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
41
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

Transcript

  • 1. relationele algebraKatrien VerbertKatrien.Verbert@cs.kuleuven.be2011-2012
  • 2. inhoud deze les•  Relationele algebra•  (E)ER naar relationeel schema 2
  • 3. relationele model: herhaling terminologie•  relatie: een tabel met kolommen en rijen•  attribuut: een kolom van een relatie•  tupel: een rij van een relatie.•  domein: verzameling van toegelaten waarden voor 1 of meerdere attributen. Voorbeelden zijn “integers”, “strings”, “datum”, … 3
  • 4. 4
  • 5. relationele vraagtalen•  vraagtaal (query language) = gegevensmanipulatietaal•  biedt functionaliteit voor –  opvragen –  toevoegen –  verwijderen –  wijzigen van gegevens 5
  • 6. indeling van relationele vraagtalen•  Algebraïsche talen •  Calculustalen –  steunen op relationele algebra –  steunen op relationele calculus –  gebruiken operatoren –  gebruiken formele beschrijving van gewenste info –  proceduraal •  predikatenlogica –  niet-proceduraal –  2 soorten: •  tupel-calculus, •  domein-calculus 6
  • 7. relationele algebra•  verzamelingsoperatoren –  unie, doorsnede, verschil, cartesisch product•  relationele operatoren –  selectie, projectie, join, deling, hernoeming•  unaire of binaire operatoren 7
  • 8. selectie 8
  • 9. selectie σ<selectiecriterium>(R)•  selecteert een aantal tupels uit een extensie (= rijen uit een tabel)•  resultaat: –  een relatie (tabel) met zelfde tupelschema –  deelverzameling van de oorspronkelijke extensie•  selectiecriterium F = (logische) formule –  enkelvoudige formules: =, ≠, <, >, <=, >= –  meervoudige formules: logische operatoren ∧, ∨, ¬ De  selece  van  tupels  uit  extensie  r  van  relae  R  onder  formule  F   is  de  verzameling  van  alle  tupels  uit  r  die  voldoen  aan  F:   σF(r)  =  {t  |  t  ∈  r  ∧  t  voldoet  aan  F}   9
  • 10. voorbeelden•  σDNO=4 (EMPLOYEE)•  σSALARY > 30000 (EMPLOYEE)•  σ (DNO = 4 ∧ SALARY > 25000) v (DNO = 5 ∧ SALARY > 30000)(EMPLOYEE) 10
  • 11. oefening: geef alle rode of groene boten sid bid dayReserves 22 101 10/10/96 58 103 11/12/96 sid sname rating ageSailors 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  • 12. oplossing " (Boats) color=red#color=green!
  • 13. eigenschappen van selectie•  behoudt het schema•  σ(r) ⊆ r; dus kardinaliteit stijgt niet: #(σ(r)) ≤ #r•  samenstelling van selecties is commutatief –  gevolg: –  σ C1 (σ C2 (… (σ Cn ( r ) ) )...) = σ C1 ∧ C2 ∧... ∧ Cn ( r ) 13
  • 14. projectie 14
  • 15. projectie π <attributenlijst>(R) –  doel: een aantal kolommen uit een tabel halen –  resultaat: •  verzameling tuples •  met attributen deelverzameling van attributen van oorspronkelijke tupels •  verbonden met deelverzameling X van het tupelschema De  projece  van  een  extensie  r  van  relae  R  op  een     aAributenverzameling  X  is   πX(r)  =  {  t  |  tupelschema  van  t  is  X  en  ∃  t’  ∈  r  :  t  ⊆  t’  }   15
  • 16. eigenschappen van projectie•  # π X ( r ) ≤ # r –  reden: dubbels worden verwijderd –  # πX(r) = # r indien X een sleutel bevat•  πX (πY ( r ) ) enkel gedefinieerd indien X ⊆ Y –  dus niet commutatief !!•  Idempotent –  enkel allerlaatste (buitenste) projectie moet uitgevoerd worden : –  πX1 ( πX2 (… ( r ) )...) = πX1 ( r ) 16
  • 17. samenstelling van uitdrukkingen•  samenstelling in 1 nieuwe uitdrukking –  vb. πFNAME, LNAME, SALARY ( σDNO = 5 ( EMPLOYEE ) )•  opeenvolgende berekeningen met expliciete benoeming van tussenresultaten –  DEP5_EMPS ← σDNO=5 ( EMPLOYEE ) –  RESULT ← πFNAME, LNAME, SALARY (DEP5_EMPS)•  selectie en projectie commuteren indien de attributen in het selectiecriterium behoren tot de attributen waarop wordt geprojecteerd –  πX (σ F ( r ) ) = σF ( πX ( r ) ) indien F enkel attributen in X gebruikt
  • 18. 18
  • 19. Find names of sailors who are youngerthan 50 sid bid dayReserves 22 101 10/10/96 Syntax   58 103 11/12/96   selece:    σ<criterium>(R)   sid sname rating age projece:    π<aAributen>(R)  Sailors 22 dustin 7 45.0     31 lubber 8 55.5 58 rusty 10 35.0Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  • 20. Find names of sailors who are youngerthan 50 sid bid dayReserves 22 101 10/10/96 Oplossing   58 103 11/12/96   πsname(σage<50(Sailors))   sid sname rating age  Sailors 22 dustin 7 45.0   31 lubber 8 55.5 58 rusty 10 35.0Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  • 21. hernoeming–  doel: wijziging van attribuutnamen–  notatie: nieuwe namen tussen haakjes vermeld–  voorbeeld: RESULT(Firstname, Lastname, Salary) ← πFNAME, LNAME, SALARY (DEP5_EMPS) –  hernoeming kan ook met een (unaire) operator ρ voorgesteld worden 1.  ρ S(B1, B2,…, Bn) (R) relatie en attributen worden hernoemd 2.  ρ S (R) alleen relatie wordt hernoemd 3.  ρ (B1, B2,…, Bn) (R) alleen attributen worden hernoemd 21
  • 22. (a) π FNAME, LNAME, SALARY (σ DNO = 5 (EMPLOYEE ) )(b) zelfde met tussenresultaat en hernoeming van attributen
  • 23. Unie ∪, doorsnede ∩, verschil –  enkel toegelaten op vergelijkbare ("union compatible") relaties–  definitie 2 relaties R( A1,...,An) en S (B1,...,Bm) zijn vergelijkbaar als en slechts als m=n (d.w.z. R en S hebben dezelfde graad) DOM (Ai) = DOM (Bi) voor 1 ≤ i ≤ n–  schema-behoudend, op attribuutnamen na •  afspraak: behoud attribuutnamen van 1-ste relatie 23
  • 24. RESULT ← RESULT1 ∪ RESULT2 24
  • 25. 25
  • 26. Cartesisch product•  Zij gegeven de relaties –  R ( A1,...,An ) –  S ( B1,...,Bm ) –  die niet noodzakelijk vergelijkbaar zijn•  Q = R × S –  heeft schema Q(A1,...,An,B1,...,Bm) –  en bevat elke combinatie van tupels uit R en S 26
  • 27. Cartesisch product: voorbeeld sid sname rating agesid bid day 22 dustin 7 45.022 101 10/10/96 31 lubber 8 55.558 103 11/12/96 58 rusty 10 35.0 R1 S1 (sid) sname rating age (sid) bid day 22 dustin 7 45.0 22 101 10/10/96R1 X S1 = 22 dustin 7 45.0 58 103 11/12/96 31 lubber 8 55.5 22 101 10/10/96 31 lubber 8 55.5 58 103 11/12/96 58 rusty 10 35.0 22 101 10/10/96 58 rusty 10 35.0 58 103 11/12/96
  • 28. FEMALE_EMP ← σSEX = F (EMPLOYEE)EMPNAMES ← π FNAME, LNAME, SSN (FEMALE_EMP)EMP_DEPENDENTS ← EMPNAMES × DEPENDENTACTUAL_DEPENDENTS ← σ SSN = ESSN (EMP_DEPENDENTS)RESULT ← π FNAME, LNAME, DEPENDENT_NAME (ACTUAL_DEPENDENTS ) 28
  • 29. join operator•  binaire operator –  combineert gerelateerde tupels van 2 relaties•  = cartesisch product + selectie•  notatie R wvF S –  met F een selectiecriterium•  voorbeeld –  ACTUAL_DEPENDENTS ← EMPNAMES wvSSN=ESSN DEPENDENT 29
  • 30. join operator–  voorbeeld: combineer voor alle departementen informatie over het departement + de manager ervan: DEPARTMENT wv MGRSSN = SSN EMPLOYEE De  join  van  R  en  S  volgens  criterium  F  is     R  wv  F  S  =  σF  (  R  ×  S  )   30
  • 31. soorten joins•  Opdeling naargelang van de vorm van de join-voorwaarde F –  F = C1 ∧ C2 ∧ … ∧ Cn•  theta-join: elke Ck is van de vorm Ai θ Bj met –  θ ∈ { =, <, >, ≤, ≥, ≠ } –  DOM (Ai) = DOM (Bj)•  speciale gevallen –  equi-join: enkel " = " –  natuurlijke join •  equi-join + weglaten van overtollige attributen (d.w.z. per voorwaarde Ai = Bj enkel Ai of Bj behouden) •  notatie: R ÚF S 31
  • 32. vereenvoudigde notaties voor natuurlijke joins•  R Ú X,Y S –  met X en Y lijsten van attributen –  alle attribuutwaarden moeten aan elkaar gelijk zijn•  R Ú S –  lijsten X en Y zijn impliciet: bevatten alle attributen die dezelfde naam hebben in R en S 32
  • 33. natural join voorbeeld sid sname rating agesid bid day 22 dustin 7 45.022 101 10/10/96 31 lubber 8 55.558 103 11/12/96 58 rusty 10 35.0 R1 S1R1 * S1 = sid sname rating age bid day 22 dustin 7 45.0 101 10/10/96 58 rusty 10 35.0 103 11/12/96
  • 34. (a) PROJ_DEPT ← PROJECT Ú DEPARTMENT(b) DEPT_LOCS ← DEPARTMENT Ú DEPT_LOCATIONS
  • 35. Find names of sailors who have reserved boat#103 sid bid dayReserves 22 101 10/10/96 Syntax   58 103 11/12/96   selectie: σ<criterium>(R) sid sname rating age projectie: π<attributen>(R) join: R wvF SSailors 22 dustin 7 45.0 natural join: R*S 31 lubber 8 55.5     58 rusty 10 35.0Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  • 36. Find names of sailors who havereserved boat #103•  Oplossing 1: " sname((# Reserves)*Sailors) bid=103•  Oplossing 2: ! " sname(# (Reserves*Sailors)) bid=103 !
  • 37. fundamentele operatoren 37
  • 38. fundamentele operatoren•  de verzameling operatoren {σ, π, ∪, , ×} is volledig: –  andere operatoren kunnen op basis van deze gedefinieerd worden. –  vandaar de naam: fundamentele operatoren.•  niet-fundamentele operatoren: –  join combinatie van σ, π, × –  ∩ R∩S=R∪S(RS)(SR) –  ... –  zijn niet strikt nodig –  wel gemakkelijk•  nog een niet-fundamentele operator: –  de deling ÷ 38
  • 39. deling•  Q = R ÷ S –  ≈ inverse van cartesisch product •  ⇔ Q is de maximale relatie waarvoor geldt dat Q × S ⊆ R •  Q bevat enkel de attributen van R die niet in S zitten –  voorbeeld: "geef alle werknemers die werken aan elk project waaraan John Smith werkt” SMITH ← σ FNAME = ‘John’ AND LNAME = ‘Smith’ ( EMPLOYEE ) geeft EMPLOYEE-tupel ‘John Smith’ SMITH_PNOS ← π PNO ( WORKS_ON wv ESSN = SSN SMITH ) geeft alle projecten waaraan John Smith werkt SSN_PNOS ← π ESSN, PNO ( WORKS_ON ) geeft voor alle werknemers alle projecten waaraan ze werken SSNS(SSN) ← SSN_PNOS ÷ SMITH_PNOS 39 deling geeft SSNs van gevraagde werknemers
  • 40. 41
  • 41. oefening: find the names of sailors whohave reserved all boats sid bid dayReserves 22 101 10/10/96 Syntax   58 103 11/12/96   selectie: σ<criterium>(R) sid sname rating age projectie: π<attributen>(R) join: R wvF SSailors 22 dustin 7 45.0 natural join: R*S deling=R÷S 31 lubber 8 55.5   58 rusty 10 35.0  Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  • 42. Find the names of sailors who have reserved all boats Tempsids $ "# # (Reserves) / $ (Boats) sid,bid bid! ! sname (Tempsids*Sailors)
  • 43. aggregaatfuncties•  functies die op verzamelingen waarden uitgevoerd worden –  SUM, AVERAGE, MAX, MIN, COUNT•  notatie groepering ℑ functies (R) •  groepering = verz. attributen op basis waarvan groepering gebeurt •  functies = lijst van koppels ( functie, attribuut )•  voorbeeld: Dno ℑ AVERAGE Salary ( EMPLOYEE ) 44
  • 44. aggregaatfuncties•  resultaat: tabel met als attributen –  attributen uit de groepering –  attributen met naam “Functie_attribuut” die het resultaat van de functie op dat attribuut geven•  voorbeeld: –  Dno ℑ COUNT Ssn, AVERAGE Salary ( EMPLOYEE ) –  geeft tabel met attributen: Dno, Count_ssn, Average_salary•  groeperingsattributen kunnen weggelaten worden –  → aggregaatfunctie toegepast op de hele relatie resultaat: 1 tupel 45
  • 45. (a)    R  (  Dno,  No_of_employees,  Average_sal  )                                                                                          ←  Dno  ℑ COUNT  Ssn,  AVERAGE  Salary  (EMPLOYEE  )    (b)    Dno  ℑ COUNT  Ssn,  AVERAGE  Salary  (EMPLOYEE  )    (c)  ℑ COUNT  Ssn,  AVERAGE  Salary  (EMPLOYEE  )  
  • 46. recursieve sluiting•  vb. 1 –  vind alle ondergeschikten van persoon Y –  = transitieve sluiting van ” X heeft Y als chef "•  vb. 2 –  in een stamboom-databank van honden: –  vind alle voorouders van “zwerver”•  niet algemeen uit te drukken in relationele algebra –  wel voor bepaald aantal niveaus, bv. vind alle ouders, vind alle grootouders, ... –  relationele uitdrukking groeit per niveau dat erbij komt –  onbeperkt aantal niveaus zou oneindige uitdrukking geven 47
  • 47. 48
  • 48. uitwendige join•  gewone joins, bv. R * S, –  leveren over de tupels die niet aan de join voorwaarde voldoen geen enkele informatie op –  vb. •  lijst van alle werknemers + als ze een departement leiden: naam van dat departement •  join geeft enkel werknemers die effectief een departement leiden•  linkse uitwendige join –  levert info over alle werknemers –  + info over het departement dat ze leiden, of nul als ze geen departement leiden•  analoog: –  rechtse uitwendige join –  volledige uitwendige join 49
  • 49. TEMP  ←  (  EMPLOYEE                        Ssn  =  Mgr_ssn  DEPARTMENT  )    RESULT  ← π Fname,  Minit,  Lname,  Dname    (  TEMP  )   50
  • 50. varianten op unie•  Vereniging van tupels van niet vergelijkbare relaties +•  Uitwendige unie: ∪+ + –  Notatie : Q = R ∪ S + –  Attr (Q) = Attr (R) ∪ Attr (S) –  nulwaarde voor attributen die niet van toepassing zijn - ∪- - •  Inwendige unie: –  Notatie : Q = R ∪ - S –  Attr(Q) = Attr(R) ∪ - Attr(S) •  ( alleen gemeenschappelijke attributen blijven behouden ) 51
  • 51. voorbeelden van queries –  Q 1: •  Retrieve the name and address of all employees who work for the ‘Research’ departmentRESEARCH_DEPT ← σ DNAME = Research ( DEPARTMENT )RESEARCH_EMPS ← ( RESEARCH_DEPT wv Dnumber = Dno EMPLOYEE )RESULT ← π Fname, Lname, Address ( RESEARCH_EMPS ) 52
  • 52. voorbeelden van queries –  Q 3: •  Find the names of employees who work on all the projects controlled by department number 5 DEPT5_PROJS ( Pno ) ← π Pnumber (σ Dnum = 5 ( PROJECT ) ) EMP_PROJ ( Ssn, Pno ) ← π Essn, Pno ( WORKS_ON ) RESULT_EMP_SSNS ← EMP_PROJ ÷ DEPT5_PROJS RESULT ← π Lname, Fname ( RESULT_EMP_SSNS Ú EMPLOYEE ) 53
  • 53. voorbeelden van queries –  Q 4: •  Make a list of projects that involve an employee whose last name is ‘Smith’, either as a worker or as a manager of the department that controls the project SMITHS (Essn) ← π SSN (σ Lname = Smith ( EMPLOYEE ) ) SMITH_WORKER_PROJ ← π Pno ( WORKS_ON Ú SMITHS ) MGRS ← π Lname, Dnumber (EMPLOYEE wv Ssn = Mgr_ssn DEPARTMENT) SMITH_MANAGED_DEPTS (Dnum) ← π Dnumber (σ Lname = Smith (MGRS) ) SMITH_MGR_PROJS (Pno) ← π Pnumber ( SMITH_MANAGED_DEPTS Ú PROJECT ) RESULT ← (SMITH_WORKER_PROJ ∪ SMITH_MGR_PROJS ) 54
  • 54. voorbeelden van queries•  Q 5: –  List the names of all employees with two or more dependentsT1 (Ssn, No_of_dependents) ← EssnFCOUNT Dependent_name (DEPENDENT)T2 ← σ No_of_dependents ≥ 2 ( T1 )RESULT ← π Lname, Fname ( T2 Ú EMPLOYEE ) 55
  • 55. voorbeelden van queries•  Q 6: –  Retrieve the names of employees who have no dependents ALL_EMPS ← π Ssn ( EMPLOYEE ) EMPS_WITH_DEPS ( Ssn ) ← π Essn ( DEPENDENT ) EMPS_WITHOUT_DEPS ← ALL_EMPS EMPS_WITH_DEPS RESULT ← π Lname, Fname ( EMPS_WITHOUT_DEPS Ú EMPLOYEE ) 56
  • 56. voorbeelden van queries–  Q 7: •  List the names of managers who have at least one dependent MGS ( Ssn ) ← π Mgr_ssn ( DEPARTMENT ) EMPS_WITH_DEPS ( Ssn ) ← π Essn ( DEPENDENT ) MGRS_WITH_DEPS ← MGRS ∩ EMPS_WITH_DEPSRESULT ← π Lname, Fname ( MGRS_WITH_DEPS Ú EMPLOYEE ) 57
  • 57. VRAGEN? 58

×