Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi...

52
Corso di Basi di Dati L’Algebra Relazionale Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

Transcript of Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi...

Page 1: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Corso di Basi di Dati

!

L’Algebra Relazionale !

Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

Page 2: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Altri linguaggi DML di interrogazione: !➢ SQL2/SQL3 (standard de facto, già visto ..) !➢ Calcolo relazionale (linguaggio dichiarativo)

!➢ Datalog (basato su Prolog)

L’algebra relazionale è un linguaggio (procedurale) di interrogazione per basi di dati relazionali.

Page 3: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

➢ All’interno di un DBMS, le query SQL sono controllate ed eseguite da un interprete SQL.

!➢ L’interprete spesso traduce l’SQL in un altro

linguaggio procedurale (~algebra relazionale) per motivi di:

!◇ Facilità d’esecuzione à è possibile scomporre query

complesse in una sequenza di procedure da eseguire. !◇ Ottimizzazione àè possibile riscrivere

(automaticamente) le query procedurali in modo da consumare meno memoria o tempo di esecuzione.

Page 4: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Il linguaggio dell’algebra relazionale è costituito da una serie di operatori (algebrici) che: !➢ si applicano ad una relazione (definizione di

relazione nel modello relazionale). !➢ producono in output una relazione. !➢ sono componibili, ossia è possibile utilizzarli in

cascata per creare interrogazioni complesse. !

Gli operatori possono essere unari o binari.

Page 5: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Interrogazione SQL

Interrogazione linguaggio procedurale

Interrogazione ottimizzata

DB

Traduttore SQL à Linguaggio Procedurale

Ottimizzatore di query

Esecuzione

INTERPRETE SQL DEL DBMS

Generata dall’utente/ applicazione

Page 6: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Il linguaggio dell’algebra relazionale è costituito da una serie di operatori (algebrici): !➢ Operatori su insiemi: unione, intersezione,

differenza. !➢ Operatori su attributi: ridenominazione,

selezione, proiezioni. !➢ Operatori intra-relazionali: join naturale, theta-

join, equi-join, etc.

Page 7: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Le relazioni sono insiemi à è possibile definire operatori insiemistici su di esse: !➢ Unione di r1(X) ed r2(X):

!➢ Intersezione di r1(X) ed r2(X):

! !➢ Differenza di r1(X) ed r2(X):

!Le relazioni r1 ed r2 devono avere lo stesso schema!

r = r1∪ r2 = {t | t ∈ r1 OR t ∈ r2}

r = r1∪ r2 = {t | t ∈ r1 AND t ∈ r2}

r = r1 − r2 = {t | t ∈ r1 AND t ∉ r2}

Page 8: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Nome Cognome Nascita

Giovanni Bianchi 10/06/1980

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ALLENATORI

Algebra Relazionale

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Giovanni Bianchi 10/06/1980

CALCIATORI ∪ALLENATORI CALCIATORI ∩ALLENATORINome Cognome Nascita

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Page 9: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Nome Cognome Data

Giovanni Bianchi 10/06/1980

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ALLENATORI

Algebra Relazionale

Nome Cognome ???

CALCIATORI ∪ALLENATORI CALCIATORI ∩ALLENATORINome Cognome ???

Q. Cosa accade se le relazioni non hanno esattamente lo stesso schema, ma dispongono di attributi con nomi diversi?

Page 10: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di ridenominazione ρ consente di modificare i nomi degli attributi di una relazione. !ρB1,B2, … BM ß A1, A2, .. AM (r) !SEMANTICA: Modifica lo schema della relazione, ridenominando gli attributi A1, A2, …AM in B1, B2, BM senza alterare i dati della relazione.

A A … AB B … B

Page 11: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Nome Cognome Data

Giovanni Bianchi 10/06/1980

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ALLENATORI

Algebra Relazionale

Nome Cognome Nascita

Giuseppe Rossi 10/03/19769

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

Giovanni Bianchi 10/06/1980

CALCIATORI ∪ρNASCITA<−DATA(ALLENATORI )Nome Cognome Nascita

Roberto Bianchi 14/06/1982

Michele Verdi 17/08/1983

CALCIATORI ∩ρNASCITA<−DATA(ALLENATORI )

Page 12: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di selezione σF(r) consente di

selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F.

A A … A

A A … A

Relazione r

σF(r)

Relazione r’

Insieme delle righe di r che soddisfano la condizione F

Page 13: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di selezione σF(r) consente di

selezionare un sottoinsieme delle tuple della relazione r, in base alla condizione specificata da F.

σ F (r ) = {t | t ∈ r AND F(t) =TRUE}

La condizione F è definita come insieme di predicati connessi da operatori logici. !➢ F= P1 Op P2 Op … PN

!➢ Op e’ un operatore booleano (AND, OR, NOT)

Page 14: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

La condizione F e’ definita come insieme di predicati connessi da operatori logici. !F= P1 Op P2 Op … PN !Ogni predicato è del tipo AθB oppure Aθc, dove: !➢ θ e’ un operatore di confronto (<,>,=,<>,<=,>=). !➢ A e B sono attributi di r, su cui ha senso l’operatore !➢ contiene una valore compatibile con il dominio di A.

Page 15: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

CALCIATORI

Algebra Relazionale

Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 32 Dinamo

Roberto Bianchini 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 29 Dinamo

σ (ANNI>30)∧(SOCIETA=DINAMO)(CALCIATORI )Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 32 Dinamo

Page 16: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

CALCIATORI

Algebra Relazionale

Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 32 Dinamo

Roberto Bianchini 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 29 Dinamo

σ (NOME="GIUSEPPE")∨(COGNOME="BIANCHI ") (CALCIATORI )Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 32 Dinamo

Giovanni Bianchi 10/06/1980 29 Dinamo

Page 17: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

CALCIATORI

Algebra Relazionale

Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 32 Dinamo

Roberto Bianchini 14/06/1982 NULL Polisportiva

Michele Verdi 17/08/1983 27 NULL

Giovanni Bianchi 10/06/1980 29 Dinamo

σ (ANNI>30)∧(SOCIETA=DINAMO)(CALCIATORI )

Q. Cosa accade in presenza di valori nulli?

Page 18: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

A. Come in SQL, si utilizza una logica a 3 valori: True (T), False (F), Unknown (U).

OR T F U

T T T T

F T F U

U T U U

AND T F U

T T F U

F F F F

U U F U

NOT

T F

F T

U U

➢ Si utilizzano gli operatori IS NULL e IS NOT NULL per verificare se un certo attributo ha valore uguale a NULL o meno.

Page 19: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

CALCIATORI

Algebra Relazionale

σ (ANNI>30)∧(SOCIETA=DINAMO)(CALCIATORI )

Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 NULL Dinamo

Roberto Bianchi 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 35 NULL

Nome Cognome Nascita Anni Societa’

Page 20: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

CALCIATORI

Algebra Relazionale

σ(ANNI>30)∧((SOCIETA=DINAMO)∨(SOCIETA IS NULL ))

(CALCIATORI )

Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 NULL Dinamo

Roberto Bianchi 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 35 NULL

Nome Cognome Nascita Anni Societa’

Giovanni Bianchi 10/06/1980 35 NULL

Page 21: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di proiezione πY(r) consente di

selezionare un sottoinsieme degli attributi di r.

πY (r ) = {t[Y] | t ∈ r}

A A A … A

A A

Y=(A1,A5)

πY (r )

Page 22: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di proiezione πY(r) consente di

selezionare un sottoinsieme degli attributi di r. !Qual è la cardinalità di πY(r)?

!➢ Nel caso generale, |πY(r)| <= |r|

!➢ Se Y è superchiave di R, allora |πY(r)|= |r| !Q. Vale anche il viceversa? (Se |πY(r)|= |r| allora Y è una

superchiave di R?)

Page 23: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

CALCIATORI

Algebra Relazionale

Nome Cognome Nascita Anni Societa’

Giuseppe Rossi 10/03/19769 32 Dinamo

Roberto Bianchi 14/06/1982 33 Polisportiva

Michele Verdi 17/08/1983 27 Polisportiva

Giovanni Bianchi 10/06/1980 27 Dinamo

π (NOME,COGOME) (CALCIATORI )Nome Cognome

Giuseppe Rossi

Roberto Bianchi

Michele Verdi

Giovanni Bianchi

π (ANNO) (CALCIATORI )Anni

32

33

27

Page 24: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

E’ possibile scrivere espressioni complesse componendo gli operatori algebrici …

Nome Cognome Squadra

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Michele Verdi Polisportiva

CALCIATORI

σ SQUADRA=DINAMO(CALCIATORI ∪PRESIDENTI )

Nome Cognome Squadra

Luciano Rossi Dinamo

Michele Rosati Polisportiva

PRESIDENTI

Nome Cognome Squadra

Luciano Rossi Dinamo

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Page 25: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

E’ possibile scrivere espressioni complesse componendo gli operatori algebrici …

Nome Cognome Squadra

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Michele Verdi Polisportiva

CALCIATORI

ΠCOGNOME(σ SQUADRA=DINAMO(CALCIATORI ∪PRESIDENTI ))

Nome Cognome Squadra

Luciano Rossi Dinamo

Michele Rosati Polisportiva

PRESIDENTI

Cognome

Rossi

Bianchi

Page 26: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni.

Nome Cognome Squadra

Giuseppe Rossi Dinamo

Roberto Bianchi Dinamo

Michele Verdi Polisportiva

CALCIATORI

SQUADRE

Squadra PuntiDinamo 12

Polisportiva 14

Nome Cognome Squadra Punti

Giuseppe Rossi Dinamo 12

Roberto Bianchi Dinamo 12

Michele Verdi Polisportiva 14

CALCIATORI ▹◃SQUADRE

Page 27: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’operatore di join naturale consente di correlare dati tra relazioni diverse, sulla base di valori comuni in attributi comuni. !Data una relazione r1 su attributi X1, ed una relazione r2 su attributi X2:

r1 ▹◃ r2 = {t su X1X2 | t[X1]∈ r1∧ t[X2 ]∈ r2 }

La cardinalita’ del join e’ compresa tra 0 e |r1|*|r2|.

Page 28: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Se le due relazioni r1 ed r2 hanno lo stesso schema à la cardinalità del join è pari a quella dell’interserzione tra r1 ed r2 .

Codice Nome Ufficio

123 Rossi A

345 Bianchi A

167 Verdi B

IMPIEGATI

RESPONSABILI_UFFICIO

IMPIEGATI ▹◃ RESPONABILI _UFFICIOCodice Nome Ufficio

123 Rossi A

Codice Nome Ufficio

123 Rossi A

345 Michele C CASO SPECIALE 1

Page 29: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Sia X l’attributo in comune tra X1 ed X2. Se X

contiene una chiave di r2 à il join ha

cardinalità massima pari alla cardinalità di r1 (|r1|).

Codice Nome Sede

123 Rossi Bologna

345 Bianchi Milano

167 Verdi Milano

IMPIEGATI

Sede Mansione

Bologna Sviluppo

Milano Testing

SEDI

IMPIEGATI ▹◃SEDI

Id Nome Sede Mansione

123 Rossi Bologna Sviluppo

345 Bianchi Milano Testing

167 Verdi Milano TestingCASO SPECIALE 2

Page 30: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Sia X l’attributo in comune tra X1 ed X2. Se esiste un vincolo di integrità referenziale tra l’attributo X in r1 e la relazione r2 à il join ha cardinalità pari alla cardinalità di r1 (|r1|).

Id Nome CodiceRep

123 Rossi A3

345 Bianchi A3

167 Verdi B1

PAZIENTICodiceRep NrLetti Primario

A3 20 Alberti

B1 10 Gigli

REPARTI

PAZIENTI ▹◃ REPARTI

Id Nome Codice Rep

NrLetti Primario

123 Rossi A3 20 Alberti

345 Bianchi A3 20 Alberti

167 Verdi B1 10 Gigli

CASO SPECIALE 3

Page 31: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Se le due relazioni r1 ed r2 non hanno attributi in

comune à la cardinalita’ del join è pari a quella del prodotto cartesiano tra r1 ed r2 (|r1| *|r2|).

Id Nome Ufficio

123 Rossi A

345 Bianchi A

167 Verdi B

IMPIEGATI

Codice Telefono

A 20-21-216

C 20-21-218

UFFICI

IMPIEGATI ▹◃UFFICIId Nome Ufficio Codice Telefono

123 Rossi A A 20-21-216

123 Rossi A C 20-21-218

345 Bianchi A A 20-21-216

345 Bianchi A C 20-21-218

167 Verdi B A 20-21-216

167 Verdi B C 20-21-218

CASO SPECIALE 4

Page 32: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Il join naturale dispone di alcune proprietà algebriche interessanti: !➢ Il join è commutativo: !➢ Il join è associativo: !➢ Nel caso di join n-ari: !Q. Dimostrazione?

r1 ▹◃ r2 = r2 ▹◃ r1

(r1 ▹◃ r2 )▹◃ r3 = r1 ▹◃ (r2 ▹◃ r3)

r1 ▹◃ ..▹◃ rn =▹◃1n ri

Page 33: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

E’ possibile stabilire una corrispondenza tra query SQL ed espressioni in algebra relazionale… !Schema generale (tralasciando le ridenominazioni) !SELECT  A1,  A2,  …  An  FROM  T1,  T2,  …  Tm  WHERE  Condizione  !

ΠA1A2 ..An (σCondizione(T1 ▹◃T2 ▹◃ ...▹◃Tm))

Page 34: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Dato il seguente schema: !IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) !➢ determinare la retribuzione degli impiegati che si

chiamano “Mario”. !SELECT  RETRIBUZIONE  FROM  IMPIEGATI,  STIPENDI  WHERE  ((NOME=“MARIO”)  AND  (LIVELLO=LIVELLOQUALIFICA))

ΠRETRIBUZIONE(σ NOME="MARIO"∧LIVELLO=LIVELLOQUALIFICA(IMPIEGATI ▹◃STIPENDI ))

Page 35: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Dato il seguente schema: !IMPIEGATI(Codice, Nome, Cognome, Livello) STIPENDI (LivelloQualifica, Retribuzione) !➢ determinare la retribuzione MEDIA degli

impiegati che si chiamano “Mario”. !SELECT  AVG(RETRIBUZIONE)  FROM  IMPIEGATI,  STIPENDI  WHERE  ((NOME=“MARIO”)  AND  (LIVELLO=LIVELLOQUALIFICA))  

!In algebra relazionale? Non si può esprimere …

Page 36: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Il theta-join è un operatore derivato, espresso come un join naturale seguito da un operatore di selezione. !Theta-join: !➢ F è una condizione utilizzabile in una selezione.

!➢ r1 ed r2 devono avere schemi diversi, ossia non

devono avere attributi in comune.

r1 ▹◃F r2 =σ F (r1 ▹◃ r2 )

Page 37: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Codice Partenza Arrivo

AZ123 Roma Parigi

AF345 Milano Boston

AF167 Parigi Londra

VOLI

Modello NrPosti Smoking

B747 250 NO

MD80 120 NO

AEREI

Codice Partenza Arrivo Modello NrPosti Smoking

AZ123 Roma Parigi B747 250 NO

AF345 Milano Boston B747 250 NO

AF167 Parigi Londra B747 250 NO

Un esempio di theta-join con condizione di selezione (NrPosti>150).

VOLI ▹◃NRPOSTI>150 ∧ CODICE=MODELLO AEREI

Page 38: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’ equi-join è un theta-join, in cui la condizione di selezione è una congiunzione di atomi di uguaglianza. !Equi-join: !

r1 ▹◃F r2 =σ F (r1 ▹◃ r2 )

F =C1∧C2 ∧...Cn

C = (A= d)∨(A= B)

➢F è una congiunzione di atomi. !

➢Ogni atomo è un’uguaglianza, tra due attributi (A,B) oppure tra un attributo ed una costante (d) nel suo dominio.

Page 39: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Esempio di equi-join …

Codice Partenza Arrivo Modello

AZ123 Roma Parigi B747

AF345 Milano Boston MD80

AF167 Parigi Londra B737

VOLI

Codice NrPosti Smoking

B747 250 NO

MD80 120 NO

AEREI

VOLI ▹◃MODELLO=CODICE AEREICodice Partenza Arrivo Modello NrPosti Smoking

AZ123 Roma Parigi B747 250 NO

AF345 Milano Boston MD80 120 NO

Page 40: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Il join naturale di tue relazioni r1 ed r2 può essere

espresso mediante gli operatori di selezione, equi-join e ridenominazione. !Es. date 2 relazioni: r1(ABC), r2(BCD) !➢ Step1: Ridenominazione !

➢ Step2: Equi-join !

➢ Step3: Proiezione !

r1 ▹◃B=B'∧C=C ' ρB'C '<−B,C(r2 )ρB'C '<−B,C(r2 )

ΠABCD (r1 ▹◃B=B'∧C=C ' ρB'C '<−B,C(r2 ))

Page 41: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Come in SQL, è possibile definire delle viste, sotto forma di interrogazioni dell’algebra relazionale cui si assegna un nome. !L e v i s t e p o s s o n o e s s e r e u s a t e i n a l t r e interrogazioni, per semplificarne la scrittura. !Esempio di vista con nome IMPIEGATI

IMPIEGATI =σ SEDE=BOLOGNA(IMPIEGATI ▹◃SEDI )

Page 42: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

L’algebra re lazionale consente di creare interrogazioni equivalenti tra loro. !L’equivalenza puo’ essere: !➢ Dipendente dallo schema !!➢ Assoluta (per ogni schema)

E1 ≡RE2 à Se E1=E2 per ogni istanza r dello schema R

E1 ≡ E2 se E1 ≡RE2 per ogni schema R

Page 43: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

ΠAB(R1)▹◃ΠAC(R2 ) ≡RΠABC(R1 ▹◃ R2 )

R1=VOLI(Codice, AeroportoArrivo, OraArrivo, OraPartenza, Vettore)

!R2=AEREI(Vettore, NumPasseggeri)

! … Ma che accade se le due relazioni coinvolte hanno altri attributi in comune oltre a quelli che compaiono in A?

Esempio di uguaglianza dipendente dallo schema!

Es. L’uguaglianza funziona sullo schema seguente:

Page 44: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

ΠNOME,CdL (STUDENTI )▹◃ΠNOME,DATA(ANAGRAFICA)

STUDENTI

Matricola Nome Cognome CdL

01212 Marco Rossi Fisica

02121 Michele Bianchi Informatica

43242 Giovanna Verdi Chimica

56776 Daniele Rosati Fisica

ANAGRAFICA

Nome Cognome CF Data

Michele Rossi MR233G 03/01/1990

Michele Marchi MM768H 06/11/1992

Giovanna Verdi GV1111J 05/11/1993

Giovanna Bianchini GB3133J 23/06/1988

ΠNOME,CdL,DATA(STUDENTI ▹◃ ANAGRAFICA)Nome CdL Data

Michele Informatica 03/01/1990

Michele Informatica 06/11/1992

Giovanna Chimica 05/11/1993

Giovanna Fisica 23/06/1988

Nome CdL Data

Giovanna Chimica 05/11/1993≠

Page 45: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Uguaglianze a livello di schema … !Atomizzazione delle selezioni: !Idempotenza delle proiezioni: !Selezione anticipata: (F fa riferimento solo ad attributi di E2)

!Inglobamento di una selezione:

σ F1∧F2 (E) =σ F1(σ F2 (E))

ΠX (E) =ΠX (ΠXY (E))

σ F (E1 ▹◃ E2 ) = E1 ▹◃σ F (E2 )

σ F (E1 ▹◃ E2 ) = E1 ▹◃F E2

Page 46: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Uguaglianze a livello di schema (continua)… !Commutatività della selezione: (F deve riferirsi solo ad attributi in Y) !Commutatività del join: !Associtatività del join:

σ F (ΠY (E)) =ΠY (σ F (E))

E1 ▹◃ E2 = E2 ▹◃ E1

(E1 ▹◃ E2 )▹◃ E3 = E1 ▹◃ (E2 ▹◃ E3)

Page 47: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Uguaglianze a livello di schema (continua) … !Proiezione anticipata: (E1 ed E2 definite su X1 ed X2. Y2 deve contenere l’intersezione di X1 ed X2.)

!Proprieta’ distributive della selezione e proiezione:

ΠX1Y2 (E1 ▹◃ E2 ) = E1 ▹◃ΠY2 (E2 )

σ F (A∪B) =σ F (A)∪σ F (B)σ F (A−B) =σ F (A)−σ F (B)ΠF (A∪B) =ΠFA∪ΠF (B)

Page 48: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Q. Come si dimostra se un’uguaglianza a livello di schema è valida? !Verificare l’opposto è facile à Basta trovare un esempio (schema/istanza) su cui l’uguaglianza non vale!

ΠA(E1 ▹◃F E2 ) =ΠA(E1)▹◃F ΠA(E2 )

Se non ci sono assunzioni sulla struttura di E1, E2, ed A, l’uguaglianza sopra è FALSA à CONTROESEMPIO: !E1=IMPIEGATI(Codice, Stipendio, Sede) E2=SEDI(Citta, Mansione) A=Stipendio F: (Sede=Citta)

Page 49: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Q. Come si dimostra se un’uguaglianza a livello di schema è valida? !Es. Dimostrare che: !!!!1) Occorre dimostrare che:

!!!

2) Occorre dimostrare che:

σ F1∧F2 (E) =σ F1(σ F2 (E))

se t ∈ σ F1∧F2 (E)⇒ t ∈ σ F1(σ F2 (E))

se t ∈ σ F1(σ F2 (E)) ⇒ t ∈ σ F1∧F2 (E)

SCHEMA DI DIMOSTRAZIONE

Page 50: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Esempio di ottimizzazione di query !Dato il seguenti schema: !VOLI(Codice, CittaPartenza, CittaArrivo, Vettore) AEREI(Modello, NrPosti, Smoking) !Q. Determinare i modelli degli aerei in partenza da Milano con meno di 100 passeggeri.

ΠMODELLO(σMODELLO=VETTORE∧CITTAPART=MILANO∧NRPOSTI<100 (VOLI ▹◃ AEREI ))

Page 51: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Esempio di ottimizzazione di query !1. Atomizzazione delle selezioni.

ΠMODELLO(σMODELLO=VETTORE(σCITTAPART=MILANO(σ NRPOSTI<100 (VOLI ▹◃ AEREI ))))

2. Anticipazione della selezione rispetto al join

ΠMODELLO(σMODELLO=VETTORE((σ CITTAPART=MILANO(VOLI )▹◃ (σ NRPOSTI<150AEREI ))))3. Inglobamento della selezione nel join

ΠMODELLO((σCITTAPART=MILANO(VOLI )▹◃MODELLO=VETTORE (σ NRPOSTI<150AEREI )))

Page 52: Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi di dati relazionali. Algebra Relazionale All’interno di un DBMS, le query SQL

Algebra Relazionale

Esempio di ottimizzazione di query !4. Anticipazione della proiezione.

ΠMODELLO(((ΠMODELLO(σCITTAPART=MILANO(VOLI )))▹◃MODELLO=VETTORE (ΠVETTORE(σ NRPOSTI<150AEREI )))))

ΠMODELLO(σMODELLO=VETTORE∧CITTAPART=MILANO∧NRPOSTI<100 (VOLI ▹◃ AEREI ))≡

Q. E’ possibile ottimizzare ulteriormente l’interrogazione?