relationele algebrarelationele calculusMatthijs van Leeuwenmatthijs.vanleeuwen@cs.kuleuven.be2012-2013            Slides g...
inhoud deze les• Relationele algebra• Relationele calculus   – Tupel relationele calculus   – Domein relationele calculus ...
relationeel model?                     3
relationeel model: herhaling•   relatie: een tabel met kolommen en rijen•   attribuut: een kolom van een relatie•   tupel:...
5
relationele vraagtalen• vraagtaal (query language) = gegevensmanipulatietaal• biedt functionaliteit voor   –   opvragen   ...
indeling van relationele vraagtalen• Algebraïsche talen              • Calculustalen   – steunen op relationele algebra   ...
relationele algebra                      8
relationele algebra• verzamelingsoperatoren   – unie, doorsnede, verschil, cartesisch product• relationele operatoren   – ...
selectie           10
selectie                 <selectiecriterium>(R)•   selecteert een aantal tupels uit een extensie (= rijen uit een tabel)•...
voorbeelden• DNO=4 (EMPLOYEE)• SALARY > 30000 (EMPLOYEE)•  (DNO = 4  SALARY > 25000) v (DNO = 5  SALARY > 30000)(EMPL...
oefening: geef alle rode of groene boten         sid bid  dayReserves 22 101 10/10/96         58 103 11/12/96          sid...
oplossing                                      (Boats)    color  red  color  green
eigenschappen van selectie• behoudt het schema• (r)  r; dus kardinaliteit stijgt niet: #((r)) ≤ #r• samenstelling van s...
projectie            16
projectie              <attributenlijst>(R)  – doel: een aantal kolommen uit een tabel halen  – resultaat:      • verzame...
eigenschappen van projectie• #X(r)≤#r   – reden:            dubbelen worden verwijderd   – # X(r) = # r     indien X een...
samenstelling van uitdrukkingen• samenstelling in 1 nieuwe uitdrukking   – vb. FNAME, LNAME, SALARY ( DNO = 5 ( EMPLOYEE...
20
Find names of sailors who are youngerthan 50         sid bid  dayReserves 22 101 10/10/96            Syntax         58 103...
Find names of sailors who are youngerthan 50         sid bid  dayReserves 22 101 10/10/96            Oplossing         58 ...
hernoeming– doel: wijziging van attribuutnamen– notatie: nieuwe namen tussen haakjes vermeld– voorbeeld:     RESULT(Firstn...
(a)  FNAME, LNAME, SALARY ( DNO = 5 (EMPLOYEE ) )(b) zelfde met tussenresultaat en hernoeming van attributen
Unie , doorsnede , verschil – enkel toegelaten op vergelijkbare ("union compatible") relaties– definitie        2 relati...
RESULT  RESULT1  RESULT2                             26
27
Cartesisch product• Zij gegeven de relaties   – R ( A1,...,An )   – S ( B1,...,Bm )   – die niet noodzakelijk vergelijkbaa...
Cartesisch product: voorbeeld                             sid   sname rating agesid bid  day                             2...
FEMALE_EMP   SEX = ‘F’ (EMPLOYEE)EMPNAMES    FNAME, LNAME, SSN (FEMALE_EMP)EMP_DEPENDENTS   EMPNAMES  DEPENDENTACTUA...
join operator• binaire operator   – combineert gerelateerde tupels van 2 relaties• = cartesisch product + selectie• notati...
join operator– voorbeeld: combineer voor alle departementen informatie over  het departement + de manager ervan:          ...
soorten joins• Opdeling naargelang van de vorm van de join-voorwaarde F   – F = C1  C2  …  Cn• theta-join: elke Ck is v...
vereenvoudigde notaties voor natuurlijke joins• R  X,Y S  – met X en Y attribuutlijsten (van gelijke lengte)  – X1 = Y1 ...
natural join voorbeeld                         sid    sname rating agesid bid  day             22     dustin  7    45.022 ...
(a) PROJ_DEPT  PROJECT  DEPARTMENT(b) DEPT_LOCS  DEPARTMENT  DEPT_LOCATIONS
Find names of sailors who have reserved boat#103         sid bid  dayReserves 22 101 10/10/96            Syntax         58...
Find names of sailors who havereserved boat #103• Oplossing 1:                  sname((              Reserves) *Sailors)...
fundamentele operatoren                          39
fundamentele operatoren• de verzameling operatoren {  , , } is volledig:   – andere operatoren kunnen op basis van d...
deling• Q=RS –  inverse van cartesisch product    •  Q is de maximale relatie waarvoor geldt dat Q  S  R    • Q bevat...
SSNS(SSN)  SSN_PNOS  SMITH_PNOSTRS
43
oefening: find the names of sailors whohave reserved all boats         sid bid  dayReserves 22 101 10/10/96            Syn...
Find the names of sailors who have reserved all boatsTempsids                   (Reserves)           (Boats)       ...
aggregaatfuncties• functies die op verzamelingen waarden uitgevoerd worden   – SUM, AVERAGE, MAX, MIN, COUNT• notatie     ...
aggregaatfuncties• resultaat: tabel met als attributen   – attributen uit de groepering   – attributen met naam “Functie_a...
(a)  R ( Dno, No_of_employees, Average_sal )                        Dno  COUNT Ssn, AVERAGE Salary (EMPLOYEE )(b)  Dno ...
recursieve sluiting• vb. 1   – vind alle ondergeschikten van persoon Y   – = transitieve sluiting van “X heeft Y als chef”...
50
uitwendige join• gewone joins, bv. R * S,   – leveren over de tupels die niet aan de join voorwaarde voldoen     geen enke...
TEMP  ( EMPLOYEE               Ssn = Mgr_ssn DEPARTMENT )RESULT   Fname, Minit, Lname, Dname  ( TEMP )                 ...
varianten op unie• Vereniging van tupels van niet vergelijkbare relaties                          +• Uitwendige unie: +  ...
voorbeelden van queries     – Q 1:         • Retrieve the name and address of all employees who work for the           ‘Re...
voorbeelden van queries  – Q 3:     • Find the names of employees who work on all the projects controlled by       departm...
voorbeelden van queries – Q 4:     • Make a list of projects that involve an employee whose last name is ‘Smith’,       ei...
voorbeelden van queries• Q 5:    – List the names of all employees with two or more dependentsT1 (Ssn, No_of_dependents) ...
voorbeelden van queries• Q 6:  – Retrieve the names of employees who have no dependents ALL_EMPS   Ssn ( EMPLOYEE ) EMPS...
voorbeelden van queries– Q 7:   • List the names of managers who have at least one     dependent MGS ( Ssn )   Mgr_ssn (...
VRAGEN?          60
relationele calculus                       61
relationele calculus• vragen stellen d.m.v. omschrijving van de  resultaatverzameling   – relationele algebra beschrijft o...
ter herinnering: propositielogica• propositie   – bewering die waar of onwaar is   – aangegeven door middel van 1 symbool:...
predikatenlogica• (eerste orde) predikatenlogica   – maakt gebruik van variabelen   – predikaat = bewering over objecten  ...
tupel relationele calculus• Basisvormen van query:                 { t | formule(t) }                 { t.A1, t.A2, ..., t...
algemene uitdrukking in tupelcalculus{ t1.A1, t2.A2, ..., tn.An | COND(t1, t2,... tn, tn+1,..., tn+m) }–   ti :          t...
conditie• COND bestaat uit   – atomen + logische connectoren + quantificatoren• een atoom is van de vorm:   – R(ti)       ...
voorbeeld                 connector          constante• { t | EMPLOYEE(t) and t.SALARY > 50000 }                          ...
voorbeeld• Q_0  – Geef de geboortedatum en het adres van de werknemer (of de    werknemers) met naam ‘John Smith’        {...
oefening: geef alle rode of groene boten         sid bid  dayReserves 22 101 10/10/96            Syntax         58 103 11/...
oefening: geef alle rode of groeneboten{t | Boats(t) and  (t.color=‘red’ or t.color=‘green’)}                             ...
gebonden en vrije variabelen• een tupelvariabele t is gebonden als ze gequantificeerd  is (met een quantor  of  voorkomt...
• Q_1   – Geef naam en adres van alle werknemers die voor het     Research departement werken    { t.Fname, t.Lname, t.Add...
quantoren• Existentiële quantor:        (er bestaat)• Universele quantor:          (voor alle)• (t)(formule(t))   – er ...
• Q_1   – Geef naam en adres van alle werknemers die voor het     Research departement werken    { t.Fname, t.Lname, t.Add...
oefening: Find sailors who have reservedboat #103         sid bid  dayReserves 22 101 10/10/96            Syntax         5...
oefening: Find sailors who havereserved boat #103{s | Sailors(s) and     ( r)(Reserves(r) and r.sid = s.sid             a...
gebruik van universele quantoren• (x) (P(x))   – waar als P(x) waar is voor elke x van het universum   – bv. (x) (x.colo...
gebruik van universele quantoren•  is een logische implicatie   – a  b betekent dat als a waar is, ook b waar moet zijn ...
gebruik van universele quantoren•   (x) (Boot(x)  (x.color = ‘Rood’))•  is een logische implicatie    – als x een boot ...
– Q_3: Geef de namen van de werknemers die aan alle projecten  werken              { e.Lname, e.Fname |                EMP...
{ e.Lname, e.Fname |              EMPLOYEE(e)              AND              ( (x) ( NOT (PROJECT(x))                    O...
• Q_6  – Geef de namen van alle werknemers zonder personen ten    laste:     {e.Fname, e.Lname  |        EMPLOYEE(e) AND  ...
oefening: find sailors who reserved allboats         sid bid  dayReserves 22 101 10/10/96            Syntax         58 103...
oefening: find sailors who reserved allboats{s | Sailors(s) and      ( b)(not Boats(b) or            ( r)(Reserves(r) an...
Quantoren in SQL•                         EXISTS•   – bestaat niet:  – gebruik not (  x ):   NOT EXISTS                ...
domein relationele calculus  – Analoog aan tupelcalculus, maar variabelen verwijzen naar een    attribuutwaarde i.p.v. een...
• Q_0  – Geef geboortedatum en adres van werknemer John B. Smith    { u v | ( q) ( r) ( s) ( t) ( w) ( x) ( y) ( z...
• Q_1  – Geef naam en adres van alle werknemers die voor    departement Research werken:        {q s v | ( z) ( l) ( m)...
– Q_2   • Geef voor elk project in Stafford nummer, nummer van     controlerend dept. en de managers familienaam,     gebo...
• Q_6        • Geef de namen van alle werknemers zonder personen ten laste:          {q s | (  t ) (EMPLOYEE ( q r s t u ...
VRAGEN?          92
Surf naar je KUSurf naar je KU Loket Loket en laat jeen laat je stem horen stem horen in dein de online online bevragingbe...
Upcoming SlideShare
Loading in …5
×

20130221 GB les 3

4,479 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,479
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
64
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

20130221 GB les 3

  1. 1. relationele algebrarelationele calculusMatthijs van Leeuwenmatthijs.vanleeuwen@cs.kuleuven.be2012-2013 Slides grotendeels door: Katrien Verbert
  2. 2. inhoud deze les• Relationele algebra• Relationele calculus – Tupel relationele calculus – Domein relationele calculus 2
  3. 3. relationeel model? 3
  4. 4. relationeel model: herhaling• 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”, … 4
  5. 5. 5
  6. 6. relationele vraagtalen• vraagtaal (query language) = gegevensmanipulatietaal• biedt functionaliteit voor – opvragen – toevoegen – verwijderen – wijzigen van gegevens 6
  7. 7. 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; HOE • predikatenlogica – declaratief; WAT – 2 soorten: • tupel-calculus, • domein-calculus 7
  8. 8. relationele algebra 8
  9. 9. relationele algebra• verzamelingsoperatoren – unie, doorsnede, verschil, cartesisch product• relationele operatoren – selectie, projectie, join, deling, hernoeming• unaire of binaire operatoren 9
  10. 10. selectie 10
  11. 11. 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 selectie van tupels uit extensie r van relatie 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} 11
  12. 12. voorbeelden• DNO=4 (EMPLOYEE)• SALARY > 30000 (EMPLOYEE)•  (DNO = 4  SALARY > 25000) v (DNO = 5  SALARY > 30000)(EMPLOYEE) 12
  13. 13. 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
  14. 14. oplossing (Boats) color  red  color  green
  15. 15. 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 ) 15
  16. 16. projectie 16
  17. 17. projectie  <attributenlijst>(R) – doel: een aantal kolommen uit een tabel halen – resultaat: • verzameling tupels • met attributen deelverzameling van attributen van oorspronkelijke tupels • verbonden met deelverzameling X van het tupelschema De projectie van een extensie r van relatie R op een  attributenverzameling X is X(r) = { t | tupelschema van t is X en  t’  r : t  t’ } 17
  18. 18. eigenschappen van projectie• #X(r)≤#r – reden: dubbelen 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 ) 18
  19. 19. 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
  20. 20. 20
  21. 21. Find names of sailors who are youngerthan 50 sid bid dayReserves 22 101 10/10/96 Syntax 58 103 11/12/96 selectie:  <criterium>(R) sid sname rating age projectie:  <attributen>(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
  22. 22. 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 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
  23. 23. 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 23
  24. 24. (a)  FNAME, LNAME, SALARY ( DNO = 5 (EMPLOYEE ) )(b) zelfde met tussenresultaat en hernoeming van attributen
  25. 25. 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 n=m (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 25
  26. 26. RESULT  RESULT1  RESULT2 26
  27. 27. 27
  28. 28. 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 28
  29. 29. 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/9R1 X S1 = 22 dustin 7 45.0 58 103 11/12/9 31 lubber 8 55.5 22 101 10/10/9 31 lubber 8 55.5 58 103 11/12/9 58 rusty 10 35.0 22 101 10/10/9 58 rusty 10 35.0 58 103 11/12/9
  30. 30. 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 ) 30
  31. 31. join operator• binaire operator – combineert gerelateerde tupels van 2 relaties• = cartesisch product + selectie• notatie R F S – met F een selectiecriterium• voorbeeld – ACTUAL_DEPENDENTS  EMPNAMES SSN=ESSN DEPENDENT 31
  32. 32. join operator– voorbeeld: combineer voor alle departementen informatie over het departement + de manager ervan: DEPARTMENT  MGRSSN = SSN EMPLOYEE De join van R en S volgens criterium F is  R  F S = F ( R  S ) 32
  33. 33. 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)• 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 33
  34. 34. vereenvoudigde notaties voor natuurlijke joins• R  X,Y S – met X en Y attribuutlijsten (van gelijke lengte) – X1 = Y1  ...  Xk = Yk – alleen attributen in X blijven behouden na join• RS – lijsten X en Y zijn impliciet: bevatten alle attributen die dezelfde naam hebben in R en S 34
  35. 35. 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
  36. 36. (a) PROJ_DEPT  PROJECT  DEPARTMENT(b) DEPT_LOCS  DEPARTMENT  DEPT_LOCATIONS
  37. 37. 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 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
  38. 38. Find names of sailors who havereserved boat #103• Oplossing 1:  sname(( Reserves) *Sailors) bid 103• Oplossing 2:  sname ( (Reserves*Sailors)) bid 103
  39. 39. fundamentele operatoren 39
  40. 40. 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  40
  41. 41. 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(s) ‘John Smith’ SMITH_PNOS   PNO ( WORKS_ON  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 41 deling geeft SSNs van gevraagde werknemers
  42. 42. SSNS(SSN)  SSN_PNOS  SMITH_PNOSTRS
  43. 43. 43
  44. 44. 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 F SSailors 22 dustin 7 45.0 natural join: R*S deling=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
  45. 45. Find the names of sailors who have reserved all boatsTempsids   (Reserves)   (Boats) sid,bid bid  sname (Tempsids*Sailors)
  46. 46. 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 ) 46
  47. 47. 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 47
  48. 48. (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 )
  49. 49. 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 49
  50. 50. 50
  51. 51. 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 51
  52. 52. TEMP  ( EMPLOYEE  Ssn = Mgr_ssn DEPARTMENT )RESULT   Fname, Minit, Lname, Dname  ( TEMP ) 52
  53. 53. 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) 53
  54. 54. 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  Dnumber = Dno EMPLOYEE )RESULT   Fname, Lname, Address ( RESEARCH_EMPS ) 54
  55. 55. 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 ) 55
  56. 56. 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  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 ) 56
  57. 57. 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 ) 57
  58. 58. 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 ) 58
  59. 59. 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_DEPS RESULT   Lname, Fname ( MGRS_WITH_DEPS  EMPLOYEE ) 59
  60. 60. VRAGEN? 60
  61. 61. relationele calculus 61
  62. 62. relationele calculus• vragen stellen d.m.v. omschrijving van de resultaatverzameling – relationele algebra beschrijft operaties om tot het resultaat te komen ( b.v. projecteer, ...)  proceduraal – relationele calculus beschrijft condities waaraan het resultaat moet voldoen  declaratief• omschrijving wordt gegeven in predikatenlogica• relationele calculus omvat – tupelcalculus: maakt gebruik van tupelvariabelen – domeincalculus: domeinvariabelen stellen een attribuutwaarde voor 62
  63. 63. ter herinnering: propositielogica• propositie – bewering die waar of onwaar is – aangegeven door middel van 1 symbool: p, q, ...• operatoren – ontkenning  – conjunctie  – disjunctie  – implicatie  – equivalentie ↔• samengestelde beweringen – een of meer symbolen – operatoren 63
  64. 64. predikatenlogica• (eerste orde) predikatenlogica – maakt gebruik van variabelen – predikaat = bewering over objecten – formules verwijzen expliciet naar die objecten (d.m.v. variabelen, constanten, functies) – quantificatie van variabelen:  ,  – predikatenlogica van de eerste orde: • achter  en  staan alleen variabelen, geen complete verzamelingen• relationele calculus gebruikt eerste orde predikatenlogica 64
  65. 65. tupel relationele calculus• Basisvormen van query: { t | formule(t) } { t.A1, t.A2, ..., t.An | formule(t) } – t : tupel variabele – formule : voorwaarde (of predikaat) beschrijft de condities waaraan t moet voldoen om in het resultaat voor te komen – attribuut van tupelvariabele selecteren: t.ATTR• voorbeelden: – { t | EMPLOYEE(t) and t.SALARY > 50000 } – { t.FNAME, t.LNAME | EMPLOYEE(t) and t.SALARY > 50000 } 65
  66. 66. algemene uitdrukking in tupelcalculus{ t1.A1, t2.A2, ..., tn.An | COND(t1, t2,... tn, tn+1,..., tn+m) }– ti : tupelvariabele (niet noodzakelijk verschillend)– Ai: attribuutnaam, horende bij de relatie ti– COND: een voorwaarde (of “well formed formula” - WFF)– ti links van "|" = alle variabelen die vrij voorkomen (niet gebonden door  of ) in de COND 66
  67. 67. conditie• COND bestaat uit – atomen + logische connectoren + quantificatoren• een atoom is van de vorm: – R(ti) R: relatienaam, ti: tupelvariable – ti.A  tj.B   { <,>,=, , ,  } en A attribuut van ti, B attribuut van tj – ti.A  c of c  tj.B   { <,>,=, , ,  } en c een constante• waarde van een atoom: true of false 67
  68. 68. voorbeeld connector constante• { t | EMPLOYEE(t) and t.SALARY > 50000 } vergelijkingsoperator variabele 68
  69. 69. voorbeeld• Q_0 – Geef de geboortedatum en het adres van de werknemer (of de werknemers) met naam ‘John Smith’ { t.Bdate, t.Address | EMPLOYEE(t) and t.Fname = ‘John’ and t.Lname = ‘Smith’ } 69
  70. 70. oefening: geef alle rode of groene boten sid bid dayReserves 22 101 10/10/96 Syntax 58 103 11/12/96 { t1.A1, …,tn.An | sid sname rating age COND(t1, t2,... tn) }Sailors 22 dustin 7 45.0 •ti : tupelvariabele 31 lubber 8 55.5 •Ai: attribuutnaam, •COND: een voorwaarde 58 rusty 10 35.0Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  71. 71. oefening: geef alle rode of groeneboten{t | Boats(t) and (t.color=‘red’ or t.color=‘green’)} 71
  72. 72. gebonden en vrije variabelen• een tupelvariabele t is gebonden als ze gequantificeerd is (met een quantor  of  voorkomt)• voorbeelden: F1: d.DNAME = ‘Research’ F2: (  t ) ( d.DNUMBER = t.DNO ) F3: (  d ) ( d.MGSSN = ‘333445555’ ) d is vrij in F1 en in F2 d is gebonden met  in F3 t is gebonden met  in F2 72
  73. 73. • Q_1 – Geef naam en adres van alle werknemers die voor het Research departement werken { t.Fname, t.Lname, t.Address | EMPLOYEE(t)  AND (d) (DEPARTMENT(d)  AND d.Dname = Research’ AND d.Number = t.Dno) }vrije tupelvariabelen alleen links van |  EMPLOYEE(t) en DEPARTEMENT(d) specificeren het bereik van t en dd.Dname = Research’ selectievoorwaarded.Number = t.Dno joinvoorwaarde 73
  74. 74. quantoren• Existentiële quantor:  (er bestaat)• Universele quantor:  (voor alle)• (t)(formule(t)) – er bestaat een tupel t die aan de conditie voldoet – bv. (t)(EMPLOYEE(t) and t.fname=‘John’)• (t)(formule(t)) – alle tuples in het universum voldoen aan de conditie 74
  75. 75. • Q_1 – Geef naam en adres van alle werknemers die voor het Research departement werken { t.Fname, t.Lname, t.Address | EMPLOYEE(t)  AND (d) (DEPARTMENT(d)  AND d.Dname = Research’ AND d.Number = t.Dno) }existentiële quantor: moet waar zijn voor tenminste één tuplewe vragen werknemers op waarvoor er een gerelateerd tupelin de departement tabel bestaat met als naam ‘Research’
  76. 76. oefening: Find sailors who have reservedboat #103 sid bid dayReserves 22 101 10/10/96 Syntax 58 103 11/12/96 { t1.A1, …,tn.An | sid sname rating age COND(t1, t2,... tn) }Sailors 22 dustin 7 45.0 •ti : tupelvariabele 31 lubber 8 55.5 •Ai: attribuutnaam, •COND: een voorwaarde 58 rusty 10 35.0 • ti links van "|" = alle variabelen die vrijBoats bid bname color voorkomen (niet 101 Interlake Blue gebonden door  of ) in de COND 102 Interlake Red 103 Clipper Green 104 Marine Red
  77. 77. oefening: Find sailors who havereserved boat #103{s | Sailors(s) and ( r)(Reserves(r) and r.sid = s.sid and r.bid = 103)} 77
  78. 78. gebruik van universele quantoren• (x) (P(x)) – waar als P(x) waar is voor elke x van het universum – bv. (x) (x.color = “Rood”) – betekent dat alles wat bestaat rood is• logische implicatie – (x) (Boot(x)  (x.color = “Rood”)) – (x) IF Boot(x) THEN (x.color = “Rood”) – Als x een boot is, dan moet de kleur rood zijn 78
  79. 79. gebruik van universele quantoren•  is een logische implicatie – a  b betekent dat als a waar is, ook b waar moet zijn – a  b is hetzelfde als a  b• (x) (x.dnum=5  F2)• (x) IF x.dnum=5 THEN F2• (x) (not (x.dnum=5) or F2) – x.dnum=5: F2 moet waar zijn 79
  80. 80. gebruik van universele quantoren• (x) (Boot(x)  (x.color = ‘Rood’))•  is een logische implicatie – als x een boot is, dan moet de kleur rood zijn• (x) (Boot(x)  x.color = ‘Rood’) – X is geen boot: conditie is waar – X is een boot: x.color=‘Rood’ moet waar zijn 80
  81. 81. – Q_3: Geef de namen van de werknemers die aan alle projecten werken { e.Lname, e.Fname |  EMPLOYEE(e)  AND  ( (x) ( NOT (PROJECT(x))  OR  ( (w) ( WORKS_ON(w) AND w.Essn = e.Ssn AND x.Pnumber = w.Pno ) ) ) ) } In woorden: als x een project is, dan moet er een  overeenkomstig tupel in de works_on tabel bestaan. 81
  82. 82. { e.Lname, e.Fname |  EMPLOYEE(e)  AND  ( (x) ( NOT (PROJECT(x))  OR  ( (w) ( WORKS_ON(w) AND w.Essn = e.Ssn AND x.Pnumber = w.Pno ) ) ) ) }– (x)(F): • moet voldaan zijn voor alle tuples in het universum die aan x kunnen worden toegekend– daarom: • (  x ) ( not PROJECT ( x ) ) • alle tupels die niet tot PROJECT behoren uitsluiten van verdere selectievoorwaarde– verder moet dus gelden voor een employee e dat hij werkt op elk project dat niet uitgesloten werd 82
  83. 83. • Q_6 – Geef de namen van alle werknemers zonder personen ten laste: {e.Fname, e.Lname  |  EMPLOYEE(e) AND ( ( d) ( NOT (DEPENDENT(d)) OR NOT (e.Ssn = d.Essn) ) ) } 83
  84. 84. oefening: find sailors who reserved allboats sid bid dayReserves 22 101 10/10/96 Syntax 58 103 11/12/96 { t1.A1, …,tn.An | sid sname rating age COND(t1, t2,... tn) }Sailors 22 dustin 7 45.0 •ti : tupelvariabele 31 lubber 8 55.5 •Ai: attribuutnaam, •COND: een voorwaarde 58 rusty 10 35.0Boats bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red
  85. 85. oefening: find sailors who reserved allboats{s | Sailors(s) and ( b)(not Boats(b) or ( r)(Reserves(r) and r.sid=s.sid and r.bid=b.bid))}
  86. 86. Quantoren in SQL•  EXISTS•  – bestaat niet: – gebruik not (  x ): NOT EXISTS 86
  87. 87. domein relationele calculus – Analoog aan tupelcalculus, maar variabelen verwijzen naar een attribuutwaarde i.p.v. een heel tupel – Vorm van query: { x1, ..., xn | COND (x1, x2, ..., xn+m ) } – Voorbeeld: • { v f | EMPLOYEE ( v, m, f, s, b, a, g, w, c, d ) } – COND = atomen + connectoren + quantoren • is een WWF (well formed formule) • net als bij tupelcalculus • atoom = R(x1,...,xn) of "xi  xj" of "xi  c"} met R een relatienaam,   { <, >, =,    } en c een constante 87
  88. 88. • Q_0 – Geef geboortedatum en adres van werknemer John B. Smith { u v | ( q) ( r) ( s) ( t) ( w) ( x) ( y) ( z)  ( EMPLOYEE ( qrstuvwxyz )  AND q = John AND r = B AND s = Smith’ ) } – praktisch worden alleen de variabelen gequantificeerd die in een voorwaarde voorkomen: { u v | ( q) ( r) ( s)  ( EMPLOYEE ( qrstuvwxyz )  AND q = John AND r = B AND s = Smith’ ) } – Andere vorm (constanten direct ingevuld) : { u v | (EMPLOYEE(John, B, Smith, t, u, v, w, x, y, z ) } 88
  89. 89. • Q_1 – Geef naam en adres van alle werknemers die voor departement Research werken: {q s v | ( z) ( l) ( m) ( EMPLOYEE( qrstuvwxyz ) AND  ( DEPARTMENT( lmno )  AND  l = Research AND m = z) ) } 89
  90. 90. – Q_2 • Geef voor elk project in Stafford nummer, nummer van controlerend dept. en de managers familienaam, geboortedatum en adres: {i k s u v | ( j) ( m) ( n) ( t) ( PROJECT ( h i j k ) AND  EMPLOYEE ( q r s t u v w x y z )  AND DEPARTMENT ( l m n o )  AND k = m AND n = t AND j = Stafford ) } 90
  91. 91. • Q_6 • Geef de namen van alle werknemers zonder personen ten laste: {q s | (  t ) (EMPLOYEE ( q r s t u v w x y z )  AND ( NOT ( l ) (DEPENDENT ( l m n o p )  AND t = l ) ) ) } {q s | (  t ) ( EMPLOYEE ( q r s t u v w x y z )  AND ( (  l ) ( NOT ( DEPENDENT ( l m n o p ) )  OR NOT t = l ) ) ) ) } 91
  92. 92. VRAGEN? 92
  93. 93. Surf naar je KUSurf naar je KU Loket Loket en laat jeen laat je stem horen stem horen in dein de online online bevragingbevraging over het over het onderwijs!onderwijs!DeDe evaluatieperiode evaluatieperiodeloopt tot en met loopt tot en metwoensdag 13 maart woensdag 132013.maart 2013.

×