Relationele algebra

58
relationele algebra Katrien Verbert [email protected] 2011-2012

description

 

Transcript of Relationele algebra

Page 1: Relationele algebra

relationele algebra Katrien Verbert [email protected] 2011-2012

Page 2: Relationele algebra

inhoud deze les

•  Relationele algebra •  (E)ER naar relationeel schema

2

Page 3: Relationele algebra

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

Page 4: Relationele algebra

4

Page 5: Relationele algebra

relationele vraagtalen

•  vraagtaal (query language) = gegevensmanipulatietaal •  biedt functionaliteit voor

–  opvragen –  toevoegen –  verwijderen –  wijzigen van gegevens

5

Page 6: Relationele algebra

indeling van relationele vraagtalen

•  Algebraïsche talen –  steunen op relationele algebra –  gebruiken operatoren –  proceduraal

•  Calculustalen –  steunen op relationele calculus –  gebruiken formele beschrijving

van gewenste info •  predikatenlogica

–  niet-proceduraal –  2 soorten:

•  tupel-calculus, •  domein-calculus

6

Page 7: Relationele algebra

relationele algebra

•  verzamelingsoperatoren –  unie, doorsnede, verschil, cartesisch product

•  relationele operatoren –  selectie, projectie, join, deling, hernoeming

•  unaire of binaire operatoren

7

Page 8: Relationele algebra

selectie

8

Page 9: Relationele algebra

De  selec'e  van  tupels  uit  extensie  r  van  rela'e  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}  

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 ∧, ∨, ¬

9

Page 10: Relationele algebra

voorbeelden

•  σDNO=4 (EMPLOYEE) •  σSALARY > 30000 (EMPLOYEE) •  σ (DNO = 4 ∧ SALARY > 25000) v (DNO = 5 ∧ SALARY > 30000)(EMPLOYEE)

10

Page 11: Relationele algebra

oefening: geef alle rode of groene boten

Reserves

Sailors

Boats

sid bid day 22 101 10/10/96 58 103 11/12/96

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red

Page 12: Relationele algebra

oplossing

!

" color='red'#color='green'(Boats)

Page 13: Relationele algebra

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

Page 14: Relationele algebra

projectie

14

Page 15: Relationele algebra

projectie

–  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  projec'e  van  een  extensie  r  van  rela'e  R  op  een    aAributenverzameling  X  is  πX(r)  =  {  t  |  tupelschema  van  t  is  X  en  ∃  t’  ∈  r  :  t  ⊆  t’  }  

π <attributenlijst>(R)

15

Page 16: Relationele algebra

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

Page 17: Relationele algebra

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

Page 18: Relationele algebra

18

Page 19: Relationele algebra

Find names of sailors who are younger than 50

Reserves

Sailors

Boats

sid bid day 22 101 10/10/96 58 103 11/12/96

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red

Syntax    selec'e:    σ<criterium>(R)  projec'e:    π<aAributen>(R)      

Page 20: Relationele algebra

Find names of sailors who are younger than 50

Reserves

Sailors

Boats

sid bid day 22 101 10/10/96 58 103 11/12/96

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red

Oplossing    πsname(σage<50(Sailors))      

Page 21: Relationele algebra

hernoeming –  doel: wijziging van attribuutnamen –  notatie: nieuwe namen tussen haakjes vermeld –  voorbeeld:

RESULT(Firstname, Lastname, Salary) ← πFNAME, LNAME, SALARY (DEP5_EMPS)

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

–  hernoeming kan ook met een (unaire) operator ρ voorgesteld worden

Page 22: Relationele algebra

(a) π FNAME, LNAME, SALARY (σ DNO = 5 (EMPLOYEE ) ) (b) zelfde met tussenresultaat en hernoeming van attributen

Page 23: Relationele algebra

Unie ∪, doorsnede ∩, verschil \

–  enkel toegelaten op vergelijkbare ("union compatible") relaties –  definitie

–  schema-behoudend, op attribuutnamen na

•  afspraak: behoud attribuutnamen van 1-ste relatie

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

23

Page 24: Relationele algebra

RESULT ← RESULT1 ∪ RESULT2

24

Page 25: Relationele algebra

25

Page 26: Relationele algebra

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

Page 27: Relationele algebra

Cartesisch product: voorbeeld

R1 S1

R1 X S1 =

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

sid bid day 22 101 10/10/96 58 103 11/12/96

(sid) sname rating age (sid) bid day 22 dustin 7 45.0 22 101 10/10/96 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

Page 28: Relationele algebra

FEMALE_EMP ← σSEX = ‘F’ (EMPLOYEE) EMPNAMES

← π FNAME, LNAME, SSN (FEMALE_EMP) EMP_DEPENDENTS

← EMPNAMES × DEPENDENT ACTUAL_DEPENDENTS

← σ SSN = ESSN (EMP_DEPENDENTS) RESULT

← π FNAME, LNAME, DEPENDENT_NAME (ACTUAL_DEPENDENTS )

28

Page 29: Relationele algebra

join operator

•  binaire operator –  combineert gerelateerde tupels van 2 relaties

•  = cartesisch product + selectie

•  notatie

R wvF S

–  met F een selectiecriterium

•  voorbeeld –  ACTUAL_DEPENDENTS ← EMPNAMES wvSSN=ESSN DEPENDENT

29

Page 30: Relationele algebra

De  join  van  R  en  S  volgens  criterium  F  is    R  wv  F  S  =  σF  (  R  ×  S  )  

join operator

–  voorbeeld: combineer voor alle departementen informatie over het departement + de manager ervan:

DEPARTMENT wv MGRSSN = SSN EMPLOYEE

30

Page 31: Relationele algebra

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

Page 32: Relationele algebra

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

Page 33: Relationele algebra

natural join voorbeeld

R1 S1

R1 * S1 =

sid sname rating age bid day22 dustin 7 45.0 101 10/10/9658 rusty 10 35.0 103 11/12/96

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

sid bid day 22 101 10/10/96 58 103 11/12/96

Page 34: Relationele algebra

(a) PROJ_DEPT ← PROJECT Ú DEPARTMENT (b) DEPT_LOCS ← DEPARTMENT Ú DEPT_LOCATIONS

Page 35: Relationele algebra

Find names of sailors who have reserved boat #103

Reserves

Sailors

Boats

sid bid day 22 101 10/10/96 58 103 11/12/96

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red

Syntax    selectie: σ<criterium>(R) projectie: π<attributen>(R) join: R wvF S natural join: R*S    

Page 36: Relationele algebra

Find names of sailors who have reserved boat #103 •  Oplossing 1:

•  Oplossing 2:

!

" sname((# bid=103Reserves)*Sailors)

!

" sname(# bid=103(Reserves*Sailors))

Page 37: Relationele algebra

fundamentele operatoren

37

Page 38: Relationele algebra

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 \ ( R \ S ) \ ( S \ R ) –  ... –  zijn niet strikt nodig –  wel gemakkelijk

•  nog een niet-fundamentele operator: –  de deling ÷

38

Page 39: Relationele algebra

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 wv 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 deling geeft SSN's van gevraagde werknemers 39

Page 40: Relationele algebra
Page 41: Relationele algebra

41

Page 42: Relationele algebra

oefening: find the names of sailors who have reserved all boats

Reserves

Sailors

Boats

sid bid day 22 101 10/10/96 58 103 11/12/96

sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 58 rusty 10 35.0

bid bname color 101 Interlake Blue 102 Interlake Red 103 Clipper Green 104 Marine Red

Syntax    selectie: σ<criterium>(R) projectie: π<attributen>(R) join: R wvF S natural join: R*S deling=R÷S    

Page 43: Relationele algebra

Find the names of sailors who have reserved all boats

!

Tempsids" # # $ sid,bid(Reserves) / $bid(Boats)

! sname (Tempsids*Sailors)

Page 44: Relationele algebra

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

Page 45: Relationele algebra

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

Page 46: Relationele algebra

(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  )  

Page 47: Relationele algebra

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

Page 48: Relationele algebra

48

Page 49: Relationele algebra

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

Page 50: Relationele algebra

TEMP  ←  (  EMPLOYEE                        Ssn  =  Mgr_ssn  DEPARTMENT  )    RESULT  ← π Fname,  Minit,  Lname,  Dname    (  TEMP  )  

50

Page 51: Relationele algebra

+

-

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

Page 52: Relationele algebra

voorbeelden van queries

–  Q 1: •  Retrieve the name and address of all employees who work for the

‘Research’ department

RESEARCH_DEPT ← σ DNAME = ‘Research’ ( DEPARTMENT ) RESEARCH_EMPS ← ( RESEARCH_DEPT wv Dnumber = Dno EMPLOYEE ) RESULT ← π Fname, Lname, Address ( RESEARCH_EMPS )

52

Page 53: Relationele algebra

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

Page 54: Relationele algebra

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 wv 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

Page 55: Relationele algebra

voorbeelden van queries

•  Q 5: –  List the names of all employees with two or more dependents

T1 (Ssn, No_of_dependents) ← EssnFCOUNT Dependent_name (DEPENDENT)

T2 ← σ No_of_dependents ≥ 2 ( T1 ) RESULT ← π Lname, Fname ( T2 Ú EMPLOYEE )

55

Page 56: Relationele algebra

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

Page 57: Relationele algebra

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 )

57

Page 58: Relationele algebra

VRAGEN?

58