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

Post on 22-Aug-2020

9 views 0 download

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

Corso di Basi di Dati

!

L’Algebra Relazionale !

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

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.

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.

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.

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

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.

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}

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

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?

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

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 )

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

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)

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.

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

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

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?

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.

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’

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

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 )

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

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

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

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

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

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

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

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

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

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

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

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

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

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 …

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 )

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

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.

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

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

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 )

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

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:

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≠

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

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)

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)

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)

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

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

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

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?