Corso di Basi di Dati - Plone sitedifelice/dbsi/2015/slides/pdf/4.pdf · di interrogazione per basi...
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?