Corso di Basi di Dati
L’Algebra Relazionale
Home page del corso:
http://www.cs.unibo.it/~difelice/dbsi/
Algebra Relazionale
L’algebra relazionale e’ un linguaggio (procedurale)
di interrogazione per basi di dati relazionali.
Altri linguaggi DML di interrogazione:
 SQL2/SQL3 (standard de facto, gia’ visto ..)
 Calcolo relazionale (linguaggio dichiarativo)
 Datalog (basato su Prolog)
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:
 Facilita’ d’esecuzione  e’ possibile scomporre query
complesse in una sequenza di procedure da eseguire.
 Ottimizzazione  e’ possibile riscrivere
(automaticamente) le query procedurali in modo da
consumare meno memoria o tempo di esecuzione.
Algebra Relazionale
Il linguaggio dell’algebra relazionale e’ 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 e’ possibile utilizzarli in
cascata per creare interrogazioni complesse.
Gli operatori possono essere unari o binari.
Algebra Relazionale
Interrogazione SQL
Generata dall’utente/
applicazione
Traduttore SQL  Linguaggio Procedurale
Interrogazione linguaggio procedurale
Ottimizzatore di query
Interrogazione ottimizzata
Esecuzione
DB
INTERPRETE SQL DEL DBMS
Algebra Relazionale
Il linguaggio dell’algebra relazionale e’ costituito
da una serie di operatori (algebrici):
 Operatori su insiemi: unione, intersezione,
differenza.
 Operatori su attributi: ridenominazione,
selezione, proiezioni.
 Operatori intra-relazionali: join naturale, thetajoin, equi-join, etc.
Algebra Relazionale
Le relazioni sono insiemi  e’ possibile definire
operatori insiemistici su di esse:
 Unione di r1(X) ed r2(X): r = r1 Èr2 = {t | t Î r1 OR t Î r2 }
 Intersezione di r1(X) ed r2(X): r = r1 Èr2 ={t |t Î r1 AND t Î r2 }
 Differenza di r1(X) ed r2(X): r = r1 -r2 ={t |t Î r1 AND t Ï r2 }
Le relazioni r1 ed r2 devono avere lo stesso schema!
Algebra Relazionale
CALCIATORI
ALLENATORI
Nome
Cognome
Nascita
Nome
Cognome
Nascita
Giuseppe
Rossi
10/03/19769
Giovanni
Bianchi
10/06/1980
Roberto
Bianchi
14/06/1982
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Michele
Verdi
17/08/1983
CALCIATORI ÈALLENATORI
CALCIATORI ÇALLENATORI
Nome
Cognome
Nascita
Giuseppe
Rossi
10/03/19769
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Giovanni
Bianchi
10/06/1980
Nome
Cognome
Nascita
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Algebra Relazionale
CALCIATORI
ALLENATORI
Nome
Cognome
Nascita
Nome
Cognome
Data
Giuseppe
Rossi
10/03/19769
Giovanni
Bianchi
10/06/1980
Roberto
Bianchi
14/06/1982
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Michele
Verdi
17/08/1983
CALCIATORI ÈALLENATORI
Nome
Cognome
CALCIATORI ÇALLENATORI
???
Nome
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 r consente di
modificare i nomi degli attributi di una relazione.
rB1,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.
B1
B2 …
BM
A1 A2 …
AM
Algebra Relazionale
CALCIATORI
ALLENATORI
Nome
Cognome
Nascita
Nome
Cognome
Data
Giuseppe
Rossi
10/03/19769
Giovanni
Bianchi
10/06/1980
Roberto
Bianchi
14/06/1982
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Michele
Verdi
17/08/1983
CALCIATORI È rNASCITA<-DATA (ALLENATORI)
Nome
Cognome
Nascita
Giuseppe
Rossi
10/03/19769
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Giovanni
Bianchi
10/06/1980
CALCIATORI Ç rNASCITA<-DATA (ALLENATORI)
Nome
Cognome
Nascita
Roberto
Bianchi
14/06/1982
Michele
Verdi
17/08/1983
Algebra Relazionale
L’operatore di selezione sF(r) consente di
selezionare un sottoinsieme delle tuple della
relazione r, in base alla condizione specificata da F.
Relazione r
A1
…
…
A2
…
Relazione r’
A5M
sF(r)
A1
A2
…
A5M
…
…
…
Insieme delle righe di r che
soddisfano la condizione F
Algebra Relazionale
L’operatore di selezione sF(r) consente di
selezionare un sottoinsieme delle tuple della
relazione r, in base alla condizione specificata da F.
s F (r) = {t | t Î r AND F(t) = TRUE}
La condizione F e’ 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 e’ del tipo AqB oppure Aqc, dove:
 q 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.
Algebra Relazionale
CALCIATORI
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
s (ANNI>30)Ù(SOCIETA=DINAMO) (CALCIATORI)
Nome
Cognome
Nascita
Anni
Societa’
Giuseppe
Rossi
10/03/19769
32
Dinamo
Algebra Relazionale
CALCIATORI
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
s (NOME="GIUSEPPE")Ú(COGNOME="BIANCHI") (CALCIATORI)
Nome
Cognome
Nascita
Anni
Societa’
Giuseppe
Rossi
10/03/19769
32
Dinamo
Giovanni
Bianchi
10/06/1980
29
Dinamo
Algebra Relazionale
CALCIATORI
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
s (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).
NOT
AND T
F
U
OR
T
F
U
T
F
T
T
F
U
T
T
T
T
F
T
F
F
F
F
F
T
F
U
U
U
U
U
F
U
U
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.
Algebra Relazionale
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
s (ANNI>30)Ù(SOCIETA=DINAMO) (CALCIATORI)
Nome
Cognome
Nascita
Anni
Societa’
Algebra Relazionale
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
s (ANNI>30)Ù((SOCIETA=DINAMO)Ú(SOCIETA IS
(CALCIATORI)
NULL ))
Nome
Cognome
Nascita
Anni
Societa’
Giovanni
Bianchi
10/06/1980
35
NULL
Algebra Relazionale
L’operatore di proiezione pY(r) consente di
selezionare un sottoinsieme degli attributi di r.
p Y (r) = {t[Y]| t Î r}
Y=(A1,A5)
A1
…
…
…
A2
A3
…
p Y (r)
A5
A1
…
…
A5
Algebra Relazionale
L’operatore di proiezione pY(r) consente di
selezionare un sottoinsieme degli attributi di r.
Qual e’ la cardinalita’ di pY(r)?
 Nel caso generale, |pY(r)| <= |r|
 Se Y e’ superchiave di R, allora |pY(r)|= |r|
Q. Vale anche il viceversa? (Se |pY(r)|= |r| allora Y e’ una
superchiave di R?)
Algebra Relazionale
CALCIATORI
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
p (NOME,COGOME) (CALCIATORI)
Nome
Cognome
Giuseppe
Rossi
Roberto
Bianchi
Michele
Verdi
Giovanni
Bianchi
p (ANNO) (CALCIATORI)
Anni
32
33
27
Algebra Relazionale
E’ possibile scrivere espressioni
componendo gli operatori algebrici …
complesse
PRESIDENTI
CALCIATORI
Nome
Cognome
Squadra
Nome
Cognome
Squadra
Giuseppe
Rossi
Dinamo
Luciano
Rossi
Dinamo
Roberto
Bianchi
Dinamo
Michele
Rosati
Polisportiva
Michele
Verdi
Polisportiva
s SQUADRA=DINAMO (CALCIATORI ÈPRESIDENTI)
Nome
Cognome
Squadra
Luciano
Rossi
Dinamo
Giuseppe
Rossi
Dinamo
Roberto
Bianchi
Dinamo
Algebra Relazionale
E’ possibile scrivere espressioni
componendo gli operatori algebrici …
complesse
PRESIDENTI
CALCIATORI
Nome
Cognome
Squadra
Nome
Cognome
Squadra
Giuseppe
Rossi
Dinamo
Luciano
Rossi
Dinamo
Roberto
Bianchi
Dinamo
Michele
Rosati
Polisportiva
Michele
Verdi
Polisportiva
Cognome
PCOGNOME (s SQUADRA=DINAMO (CALCIATORI ÈPRESIDENTI))
Rossi
Bianchi
Algebra Relazionale
L’operatore di join naturale consente di correlare
dati tra relazioni diverse, sulla base di valori
comuni in attributi comuni.
CALCIATORI
Nome
Cognome
Squadra
SQUADRE
Giuseppe
Rossi
Dinamo
Squadra
Punti
Roberto
Bianchi
Dinamo
Dinamo
12
Michele
Verdi
Polisportiva
Polisportiva
14
CALCIATORI
SQUADRE
Nome
Cognome
Squadra
Punti
Giuseppe
Rossi
Dinamo
12
Roberto
Bianchi
Dinamo
12
Michele
Verdi
Polisportiva
14
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 cardinalita’ del join e’ pari a quella
dell’interserzione tra r1 ed r2 .
IMPIEGATI
Codice
Nome
Ufficio
123
Rossi
A
345
Bianchi
A
167
Verdi
B
IMPIEGATI
RESPONABILI _UFFICIO
Codice
Nome
Ufficio
123
Rossi
A
RESPONSABILI_UFFICIO
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 cardinalita’
massima pari alla cardinalita’ di r1 (|r1|).
SEDI
IMPIEGATI
Codice
Nome
Sede
123
Rossi
Bologna
345
Bianchi
Milano
167
Verdi
Milano
IMPIEGATI
CASO SPECIALE 2
SEDI
Sede
Mansione
Bologna
Sviluppo
Milano
Testing
Id
Nome
Sede
Mansione
123
Rossi
Bologna
Sviluppo
345
Bianchi
Milano
Testing
167
Verdi
Milano
Testing
Algebra Relazionale
Sia X l’attributo in comune tra X1 ed X2. Se esiste
un vincolo di integrita’ referenziale tra l’attributo
X in r1 e la relazione r2  il join ha cardinalita’ pari
alla cardinalita’ di r1 (|r1|).
CASO SPECIALE 3
REPARTI
PAZIENTI
CodiceRep
NrLetti
Primario
Id
Nome
CodiceRep
A3
20
Alberti
123
Rossi
A3
B1
10
Gigli
345
Bianchi
A3
167
Verdi
B1
Id
Nome
Codice
Rep
NrLetti
Primario
123
Rossi
A3
20
Alberti
345
Bianchi
A3
20
Alberti
167
Verdi
B1
10
Gigli
PAZIENTI
REPARTI
Algebra Relazionale
Se le due relazioni r1 ed r2 non hanno attributi in
comune  la cardinalita’ del join e’ pari a quella
del prodotto cartesiano tra r1 ed r2 (|r1| *|r2|).
IMPIEGATI
Id
Nome
Ufficio
123
Rossi
A
345
Bianchi
A
167
Verdi
B
UFFICI
Codice
Telefono
A
20-21-216
C
20-21-218
CASO SPECIALE 4
IMPIEGATI
UFFICI
Id
Nome
Ufficio
Codice
Telefono
123
Rossi
A
A
20-21216
123
Rossi
A
C
20-21218
345
Bianchi
A
A
20-21216
345
Bianchi
A
C
20-21218
167
Verdi
B
A
20-21216
Algebra Relazionale
Il join naturale dispone di alcune proprieta’
algebriche interessanti:
 Il join e’ commutativo: r1
 Il join e’ associativo:
 Nel caso di join n-ari:
Q. Dimostrazione?
(r1
r1
r2 = r2
r1
r2 )
r3 = r1
..
rn =
(r2
n
1 i
r
r3 )
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
PA1A2 ..An (s 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))
PRETRIBUZIONE (s 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 puo’ esprimere …
Algebra Relazionale
Il theta-join e’ un operatore derivato, espresso
come un join naturale seguito da un operatore di
selezione.
Theta-join:
r1
r = s F (r1
F 2
r2 )
 F e’ una condizione utilizzabile in una
selezione.
 r1 ed r2 devono avere schemi diversi, ossia non
devono avere attributi in comune.
Algebra Relazionale
Un esempio di theta-join con condizione di
selezione (NrPosti>150).
VOLI
AEREI
Codice
Partenza
Arrivo
Modello
NrPosti
Smoking
AZ123
Roma
Parigi
B747
250
NO
AF345
Milano
Boston
MD80
120
NO
AF167
Parigi
Londra
VOLI
NRPOSTI>150 Ù CODICE=MODELLO
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
Algebra Relazionale
Un esempio di theta-join con condizione di
selezione (NrPosti>150).
VOLI
AEREI
Codice
Partenza
Arrivo
Modello
AZ123
Roma
Parigi
B747
AF345
Milano
Boston
MD80
AF167
Parigi
Londra
B737
VOLI
NRPOSTI>150 Ù CODICE=MODELLO
AEREI
Modello
NrPosti
Smoking
B747
250
NO
MD80
120
NO
 ???, Errore, il theta-join
assume che le tue relazioni
coinvolte abbiano schemi
distinti
Algebra Relazionale
L’ equi-join e’ un theta-join, in cui la condizione di
selezione e’ una congiunzione di atomi di
uguaglianza.
Equi-join:
r1
r = s F (r1
F 2
 F e’ una congiunzione di atomi.
r2 )
F = C1 ÙC2 Ù...Cn
 Ogni atomo e’ un’uguaglianza, tra due attributi (A,B)
oppure tra un attributo ed una costante (d) nel suo
dominio.
C = (A = d)Ú(A = B)
Algebra Relazionale
Esempio di equi-join …
VOLI
AEREI
Codice
Partenza
Arrivo
Modello
AZ123
Roma
Parigi
B747
AF345
Milano
Boston
MD80
AF167
Parigi
Londra
B737
VOLI
MODELLO=CODICE
Codice
NrPosti
Smoking
B747
250
NO
MD80
120
NO
AEREI
Codice
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 puo’ essere
espresso mediante gli operatori di selezione, equijoin e ridenominazione.
Es. date 2 relazioni: r1(ABC), r2(BCD)
 Step1: Ridenominazione
 Step2: Equi-join
 Step3: Proiezione
r1
PABCD (r1
rB'C'<-B,C (r2 )
B=B'ÙC=C'
rB'C'<-B,C (r2 )
B=B'ÙC=C'
rB'C'<-B,C (r2 ))
Algebra Relazionale
Nel join naturale, non tutte le tuple di una
relazione contribuiscono al risultato finale …
IMPIEGATI
SEDI
Codice
Nome
Sede
Sede
Mansione
123
Rossi
Bologna
Bologna
Sviluppo
345
Bianchi
Milano
Milano
Testing
167
Verdi
Parma
189
Rosati
Palermo
IMPIEGATI
SEDI
}
Queste tuple non appaiono nel
risultato finale (dangling values)!!
Id
Nome
Sede
Mansione
123
Rossi
Bologna
Sviluppo
345
Bianchi
Milano
Testing
Algebra Relazionale
Possono esistere casi in cui si vorrebbero includere
anche le dangling tuple nel risultato finale…
PAZIENTI
MEDICI_BOLOGNA
Codice
Nome
Cognome
Codice
Medico
Codice
Medico
Nome
Medico
Cognome
Medico
123
Rossi
Bologna
MB124
MB124
Marco
Bianchi
345
Bianchi
Milano
VB34
VB34
Valerio
Bianchi
167
Verdi
Parma
VB34
189
Rosati
Palermo
MR56
Vorrei includere nel risultato finale tutte le
informazioni sui pazienti (e relativi medici) …
Algebra Relazionale
PAZIENTI
MEDICI_BOLOGNA
Codice
Nome
Cognome
Codice
Medico
Codice
Medico
Nome
Medico
Cognome
Medico
123
Rossi
Bologna
MB124
MB124
Marco
Bianchi
345
Bianchi
Milano
VB34
VB34
Valerio
Bianchi
167
Verdi
Parma
VB34
189
Rosati
Palermo
MR56
PAZIENTI
MEDICI _ BOLOGNA
Questo valore non compare
in MEDICI_BOLOGNA
Codice
Nome
Cognome
Codice
Medico
Nome
Medico
Cognome
Medico
123
Rossi
Bologna
MB124
Marco
Bianchi
345
Bianchi
Milano
VB34
Valerio
Bianchi
167
Verdi
Parma
VB34
Valerio
Bianchi
Algebra Relazionale
L’outer-join consente di far apparire le tuple
dangling nel risultato finale, completando le
informazioni mancanti con valori NULL.
Tre varianti dell’outer-join:
 Left join  completamento dell’operando sx.
 Right join  completamento dell’operando dx.
 Full Join  completamento di entrambi gli
operandi.
Algebra Relazionale
Esempio1: Left outer-join …
IMPIEGATI
SEDI
Codice
Nome
Sede
Sede
Mansione
123
Rossi
Bologna
Bologna
Sviluppo
345
Bianchi
Milano
Milano
Testing
167
Verdi
Parma
Venezia
Direzione
189
Rosati
Palermo
IMPIEGATI
LEFT
SEDI
Codice
Nome
Sede
Mansione
123
Rossi
Bologna
Sviluppo
345
Bianchi
Milano
Testing
167
Verdi
Parma
NULL
189
Rosati
Palermo
NULL
Algebra Relazionale
Esempio2: Right outer-join …
IMPIEGATI
SEDI
Codice
Nome
Sede
Sede
Mansione
123
Rossi
Bologna
Bologna
Sviluppo
345
Bianchi
Milano
Milano
Testing
167
Verdi
Parma
Venezia
Direzione
189
Rosati
Palermo
IMPIEGATI
RIGHT
SEDI
Codice
Nome
Sede
Mansione
123
Rossi
Bologna
Sviluppo
345
Bianchi
Milano
Testing
NULL
NULL
Venezia
Direzione
Algebra Relazionale
Esempio3: Full outer-join …
SEDI
IMPIEGATI
Codice
Nome
Sede
123
Rossi
Bologna
345
Bianchi
Milano
167
Verdi
Parma
189
Rosati
Palermo
IMPIEGATI
FULL
SEDI
Sede
Mansione
Bologna
Sviluppo
Milano
Testing
Venezia
Direzione
Codice
Nome
Sede
Mansione
123
Rossi
Bologna
Sviluppo
345
Bianchi
Milano
Testing
167
Verdi
Parma
NULL
189
Rosati
Palermo
NULL
NULL
NULL
Venezia
Direzione
Algebra Relazionale
Come in SQL, e’ possibile definire delle viste, sotto
forma di interrogazioni dell’algebra relazionale cui
si assegna un nome.
Le viste possono essere usate in altre
interrogazioni, per semplificarne la scrittura.
Esempio di vista con nome IMPIEGATI
IMPIEGATI = s SEDE=BOLOGNA (IMPIEGATI
SEDI)
Algebra Relazionale
L’algebra
relazionale
consente
interrogazioni equivalenti tra loro.
di
creare
L’equivalenza puo’ essere:
 Dipendente dallo schema
E1 ºR E2  Se E1=E2 per ogni istanza r dello schema R
 Assoluta (per ogni schema)
E1 º E2 se E1 ºR E2 per ogni schema R
Algebra Relazionale
Esempio di uguaglianza dipendente dallo schema!
PAB (R1 )
PAC (R2 ) ºR PABC (R1
R2 )
Es. L’uguaglianza funziona sullo schema seguente:
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?
Algebra Relazionale
STUDENTI
ANAGRAFICA
Matricola
Nome
Cognome
CdL
Nome
Cognome
CF
Data
01212
Marco
Rossi
Fisica
Michele
Rossi
MR233G
03/01/1990
02121
Michele
Bianchi
Informatica
Michele
Marchi
MM768H
06/11/1992
43242
Giovanna
Verdi
Chimica
Giovanna
Verdi
GV1111J
05/11/1993
56776
Daniele
Rosati
Fisica
Giovanna
Bianchini
GB3133J
23/06/1988
PNOME,CdL (STUDENTI)
¹
PNOME,DATA (ANAGRAFICA)
Nome
CdL
Data
Michele
Informatica
03/01/1990
Michele
Informatica
06/11/1992
Giovanna
Chimica
05/11/1993
Giovanna
Fisica
23/06/1988
PNOME,CdL,DATA (STUDENTI
ANAGRAFICA)
Nome
CdL
Data
Giovanna
Chimica
05/11/1993
Algebra Relazionale
Uguaglianze a livello di schema …
Atomizzazione delle selezioni:
s F1ÙF2 (E) = s F1 (s F2 (E))
Idempotenza delle proiezioni:
PX (E) = PX (PXY (E))
Selezione anticipata:
s F (E1
E2 ) = E1
(F fa riferimento solo ad attributi di E2)
Inglobamento di una selezione: s F (E1
s F (E2 )
E2 ) = E1
F
E2
Algebra Relazionale
Uguaglianze a livello di schema (continua)…
Commutativita della selezione: s F (PY (E)) = PY (s F (E))
(F deve riferirsi solo ad attributi in Y)
Commutatitvita del join:
E1
E2 = E2
E1
Associtativita’ del join:
(E1
E2 )
E3 = E1
(E2
E3 )
Algebra Relazionale
Uguaglianze a livello di schema (continua) …
Proiezione anticipata:
PX1Y 2 (E1
E2 ) = E1
(E1 ed E2 definite su X1 ed X2. Y2 deve
l’intersezione di X1 ed X2.)
PY 2 (E2 )
contenere
Proprieta’ distributive della selezione e proiezione:
s F (AÈB) = s F (A)Ès F (B)
s F (A- B) = s F (A)- s F (B)
PF (AÈB) = PF AÈPF (B)
Algebra Relazionale
Q. Come si dimostra se un’uguaglianza a livello di
schema e’ valida?
Verificare l’opposto e’ facile  Basta trovare un
esempio (schema/istanza) su cui l’uguaglianza non vale!
PA (E1
F
E2 ) = PA (E1 )
F
PA (E2 )
Se non ci sono assunzioni sulla struttura di E1, E2, ed A,
l’uguaglianza sopra e’ 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 e’ valida?
Es. Dimostrare che:
s F1ÙF2 (E) = s F1 (s F2 (E))
SCHEMA DI DIMOSTRAZIONE
1) Occorre dimostrare che:
se t Î s F1 (s F2 (E)) Þ
2) Occorre dimostrare che:
t Î s F1ÙF 2 (E)
se t Î s F1ÙF2 (E) Þ t Î s F1 (s F 2 (E))
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.
PMODELLO (s MODELLO=VETTOREÙCITTAPART=MILANOÙNRPOSTI<100 (VOLI
AEREI))
Algebra Relazionale
Esempio di ottimizzazione di query
1. Atomizzazione delle selezioni.
PMODELLO (s MODELLO=VETTORE (s CITTAPART=MILANO (s NRPOSTI<100 (VOLI
AEREI))))
2. Anticipazione della selezione rispetto al join
PMODELLO (s MODELLO=VETTORE ((s CITTAPART=MILANO (VOLI)
(s NRPOSTI<150 AEREI))))
3. Inglobamento della selezione nel join
PMODELLO ((s CITTAPART=MILANO (VOLI)
MODELLO=VETTORE
(s NRPOSTI<150 AEREI)))
Algebra Relazionale
Esempio di ottimizzazione di query
4. Anticipazione della proiezione.
PMODELLO (((PMODELLO (s CITTAPART=MILANO (VOLI)))
º
MODELLO=VETTORE
(PVETTORE (s NRPOSTI<150 AEREI)))))
PMODELLO (s MODELLO=VETTOREÙCITTAPART=MILANOÙNRPOSTI<100 (VOLI
AEREI))
Q. E’ possibile ottimizzare ulteriormente l’interrogazione?