ALGEBRA RELAZIONALE
 Le basi di dati rappresentano le informazioni
di interesse per applicazioni che gestiscono i
dati
 E’ importante considerare linguaggi per la
specifica di operazioni sui dati stessi, che
siano legati al modello dei dati scelto
(modello relazionale)
Algebra Relazionale
2
Linguaggi per basi di dati
 operazioni sullo schema
 DDL: data definition language per definire lo
schema
 VDL: view definition language per definire le
viste d’utente
 operazioni sui dati
 DML: data manipulation language
interrogazione ("query")
 inserimento, cancellazione e aggiornamento dei dati

Algebra Relazionale
3
Linguaggi per l’interrogazione
 Una base di dati richiede un insieme di
operazioni che consentano all’utente di
specificare le richieste di recupero
fondamentali
 Le operazioni di questo tipo producono
nuove relazioni, sulle quali è ulteriormente
possibile applicare operazioni
Algebra Relazionale
4
Linguaggi di interrogazione
per basi di dati relazionali
 Dichiarativi (di alto livello)

le espressioni specificano le proprietà del
risultato ("che cosa")
 Procedurali (di basso livello)

specificano le modalità di generazione del
risultato ("come")
Algebra Relazionale
5
Linguaggi di interrogazione
 Algebra relazionale: procedurale (teorico)
 Calcolo relazionale: dichiarativo (teorico)
 SQL (Structured Query Language): combina
gli aspetti dichiarativi del calcolo e quelli
procedurali dell’algebra (linguaggio reale)
Algebra Relazionale
6
Algebra relazionale
 Insieme di operatori, definiti su relazioni, che
producono ancora relazioni come risultati
 insiemistici: unione, intersezione, differenza
 specifici: ridenominazione, selezione, proiezione
 join: join naturale, prodotto cartesiano, theta-join
 raggruppamento: divisione
Algebra Relazionale
7
Operatori insiemistici
 le relazioni sono insiemi
 i risultati debbono essere relazioni
- è sensato applicare le operazioni insiemistiche
classiche di unione,intersezione, differenza
- è possibile applicare solo a relazioni definite
sugli stessi attributi
Algebra Relazionale
8
Unione
Laureati
Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Età
42
54
45
Matricola Nome
9297
Neri
7432
Neri
9824
Verdi
Età
33
54
45
Laureati  Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
9297
Neri
Algebra Relazionale
Età
42
54
45
33
9
Intersezione
Laureati
Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Età
42
54
45
Matricola Nome
9297
Neri
7432
Neri
9824
Verdi
Età
33
54
45
Laureati  Quadri
Matricola Nome
7432
Neri
9824
Verdi
Algebra Relazionale
Età
54
45
10
Differenza
Laureati
Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Età
42
54
45
Matricola Nome
9297
Neri
7432
Neri
9824
Verdi
Età
33
54
45
Matricola Nome Età
Laureati
7274 – Quadri
Rossi 42
7432
Neri
54
9824
Verdi
45
Algebra Relazionale
11
Una unione sensata ma
impossibile
Paternità
Maternità
Padre
Adamo
Adamo
Abramo
Figlio
Abele
Caino
Isacco
Madre
Eva
Eva
Sara
Figlio
Abele
Set
Isacco
Paternità  Maternità
??
Algebra Relazionale
12
Ridenominazione
 operatore unario
 "modifica lo schema" lasciando inalterata
l'istanza dell'operando, cambia solo il nome
degli attributi
Algebra Relazionale
13
Ridenominazione: definizione formale

Siano R una relazione su X, e Y un altro insieme di
attributi con la stessa cardinalità
X = {A1,……. Ak}
Y = {B1,……. Bk}
La ridenominazione
 A1,……. Ak  B1,……. Bk (R)
contiene una ennupla t’ per ogni ennupla t in R tale che:
 t’ è una ennupla su Y
 t’[Bi]=t[Ai], per ogni i=1,…,k
Algebra Relazionale
14
Paternità
Padre
Adamo
Adamo
Abramo
Figlio
Abele
Caino
Isacco
 Genitore  Padre (Paternità)
Genitore
Padre
Figlio
Adamo Abele
Adamo Caino
Abramo Isacco
Algebra Relazionale
15
 Genitore  Padre (Paternità)
Paternità
Padre
Adamo
Adamo
Abramo
Figlio
Abele
Caino
Isacco
 Genitore  Madre (Maternità)
Maternità
Madre
Eva
Eva
Sara
Genitore Figlio
Adamo Abele
Adamo Caino
Abramo Isacco
Figlio
Abele
Set
Isacco
Genitore Figlio
Eva
Abele
Eva
Set
Sara
Isacco
Algebra Relazionale
16
 Genitore  Padre (Paternità)

(Paternità)
Genitore

Padre
Genitore Figlio
Adamo
Adamo
Abramo
Abele
Caino
Isacco

 Genitore  Madre (Maternità)
 Genitore  Madre (Maternità)
Genitore Figlio
Eva
Abele
Eva
Set
Sara
Isacco
Algebra Relazionale
Genitore Figlio
Adamo Abele
Adamo Caino
Abramo Isacco
Eva
Abele
Eva
Set
Sara
Isacco
17
Impiegati Cognome Ufficio Stipendio
Rossi
Neri
Operai
Roma
Milano
55
64
Cognome Fabbrica Salario
Bruni
Monza
45
Verdi
Latina
55
 Sede, Retribuzione  Ufficio, Stipendio (Impiegati)

 Sede, Retribuzione  Fabbrica, Salario (Operai)
Cognome
Rossi
Neri
Bruni
Verdi
Sede Retribuzione
Roma
55
Milano
64
Monza
45
Latina
55
Selezione
 operatore unario su una tabella
 produce un risultato che



ha lo stesso schema della relazione di partenza
(colonne della tabella)
contiene un sottoinsieme delle ennuple
dell'operando (righe della tabella),
quelle che soddisfano una condizione
Algebra Relazionale
19
Selezione
A
B
C
A
Algebra Relazionale
B
C
20
Impiegati
Matricola Cognome Filiale Stipendio
7309
Rossi
Roma
55
5998
Neri
Milano
64
9553
Milano
Milano
44
5698
Neri
Napoli
64
 impiegati che:



guadagnano più di 50
guadagnano più di 50 e lavorano a Milano
hanno lo stesso nome della filiale presso cui
lavorano
Algebra Relazionale
21
Selezione, sintassi e semantica
 sintassi
 Condizione (Operando)


Condizione: espressione booleana
Operando: una espressione dell’algebra relazionale
 semantica

il risultato è una relazione sugli stessi attributi che
contiene le ennuple dell'operando che soddisfano la
condizione
Algebra Relazionale
22
Condizione di selezione
F formula proposizionale formata da
• operatori booleani: (AND), (OR), ¬ (NOT)
• condizioni atomiche: termini che possono contenere
confronti fra attributi, o fra attributi e costanti. Hanno
forma: AJB oppure AJc dove
– Joperatore di confronto (=, , >, <, , )
– A, B attributi in X
– c costante compatibile con dominio di attributo
(A) con cui c viene confrontata
Algebra Relazionale
23
Condizioni di selezione, esempi
 Esempi:

(Stipendio > 50)

Filiale='Milano'

Cognome = Filiale

(Stipendio > 50) AND (Filiale='Milano')

NOT (Cognome='Neri')
Algebra Relazionale
24

impiegati che guadagnano più di 50
Impiegati
Matricola Cognome Filiale Stipendio
7309
Rossi
Roma
55
5998
Neri
Milano
64
9553
5698
Milano
Neri
Milano
Napoli
44
64
5698
Neri
Napoli
64
 Stipendio > 50 (Impiegati)
Algebra Relazionale
25

impiegati che guadagnano più di 50 e lavorano a Milano
Impiegati
Matricola Cognome Filiale Stipendio
7309
5998
Rossi
Neri
Milano
Roma
55
64
5998
Neri
Milano
64
9553
Milano
Milano
44
5698
Neri
Napoli
64

Stipendio > 50 AND Filiale = 'Milano'
Algebra Relazionale
(Impiegati)
26

impiegati che hanno lo stesso nome della filiale presso cui
lavorano
Impiegati
Matricola Cognome Filiale Stipendio
7309
9553
Milano
Rossi
Milano
Roma
55
44
5998
Neri
Milano
64
9553
Milano
Milano
44
5698
Neri
Napoli
64

Cognome = Filiale(Impiegati)
Algebra Relazionale
27
Osservazioni
 l’operazione di selezione è commutativa
 <Cond1> ( <Cond2> (R)) =
 <Cond2> ( <Cond1> (R)) =
 <Cond1> AND <Cond2> (R)
 il numero delle t-uple della relazione R dopo
l’applicazione di una selezione è minore o
uguale al numero delle t-uple di R
|  <Cond> (R) |  | R |
Algebra Relazionale
28
Selezione con valori nulli
Impiegati
Matricola Cognome Filiale
7309
Rossi
Roma
9553
Bruni
Milano
5998
Neri
Milano
Età
32
NULL
45
 Età > 40 (Impiegati)
• la condizione atomica è vera solo per
valori non nulli
Algebra Relazionale
29
Un risultato non desiderabile
 Età>30 (Persone)   Età30 (Persone)  Persone
 Perché? Perché le selezioni vengono valutate
separatamente!
 Ma anche
 Età>30  Età30 (Persone)  Persone
 Perché? Perché anche le condizioni atomiche
vengono valutate separatamente!
Algebra Relazionale
30
 Età > 40 (Impiegati)
 la condizione atomica è vera solo per valori
non nulli
 per riferirsi ai valori nulli esiste la apposita di
condizione:
IS NULL
Algebra Relazionale
31
 A questo punto:
 Età>30 (Persone)   Età30 (Persone)   Età IS
NULL (Persone)
=
 Età>30  Età30  (Età IS NULL) (Persone)
=
Persone
Algebra Relazionale
32
Logica con il valore NULL
 Oltre ai valori di verità Vero (V) e Falso (F), si
introduce NULL (?)
 NOT ( A IS NULL) si scrive anche A IS NOT
NULL
Algebra Relazionale
33
Impiegati
Matricola Cognome Filiale
7309
5998
Rossi
Neri
Milano
Roma
5998
9553
Bruni
Neri
Milano
9553
Bruni
Milano
Età
32
45
NULL
45
NULL
 (Età > 40) OR (Età IS NULL) (Impiegati)
Algebra Relazionale
35
Selezione e proiezione
 operatori "ortogonali"
 selezione:

decomposizione orizzontale
 proiezione:

decomposizione verticale
Algebra Relazionale
36
selezione
proiezione
Proiezione
 operatore unario su una tabella
 produce un risultato che


ha parte degli attributi della tabella
contiene ennuple (righe) cui contribuiscono tutte
le ennuple della tabella iniziale
Algebra Relazionale
38
Impiegati
Matricola Cognome Filiale Stipendio
7309
Neri
Napoli
55
5998
Neri
Milano
64
9553
Rossi
Roma
44
5698
Rossi
Roma
64

per tutti gli impiegati:
 matricola e cognome
 cognome e filiale
Algebra Relazionale
39
Proiezione, sintassi e semantica
 sintassi
 <ListaAttributi> (Operando)
<ListaAttributi> è un elenco di attributi di Operando
Operando è una espressione nell’algebra relazionale
 semantica

il risultato contiene le ennuple ottenute da tutte le
ennuple dell'operando ristrette agli attributi nella lista
Algebra Relazionale
40

matricola e cognome di tutti gli impiegati
Matricola Cognome Filiale Stipendio
7309
Neri
Napoli
55
5998
Neri
Milano
64
9553
Rossi
Roma
44
5698
Rossi
Roma
64
 Matricola, Cognome (Impiegati)
Algebra Relazionale
41

cognome e filiale di tutti gli impiegati
Matricola Cognome Filiale Stipendio
7309
Neri
Napoli
55
5998
Neri
Milano
64
9553
Rossi
Roma
44
5698
Rossi
Roma
64
 Cognome, Filiale (Impiegati)
Algebra Relazionale
42
Cardinalità delle proiezioni
 una proiezione


contiene al più tante ennuple quante l'operando
può contenerne di meno
 se X è una superchiave di R, allora  X(R)
contiene esattamente tante ennuple quante R
Algebra Relazionale
43
Selezione e proiezione
 Combinando selezione e proiezione,
possiamo estrarre interessanti informazioni
da una relazione
 Cond ( A,B,C (R) ) = ( A,B,C  Cond (R) ) ?
Sono commutative a certe condizioni !
Algebra Relazionale
44

matricola e cognome degli impiegati che guadagnano più di
50
Matricola Cognome Filiale Stipendio
7309
Rossi
Roma
55
5998
Neri
Milano
64
9553
5698
Milano
Neri
Milano
Napoli
44
64
5698
Neri
Napoli
64
 Matricola,Cognome (  Stipendio > 50 (Impiegati) )
Algebra Relazionale
45


combinando selezione e proiezione, possiamo
estrarre informazioni da una relazione
non possiamo però correlare informazioni presenti
in relazioni diverse
Algebra Relazionale
46
Join
 il join è l'operatore più interessante
dell'algebra relazionale
 permette di correlare dati in relazioni diverse
 sfrutta la caratteristica fondamentale del
modello relazionale, che è quella di essere
basato su valori
Algebra Relazionale
47
Idea del join naturale
matricola
cognome
data_nasc
matricola
corso
voto
2021
Rossi
1-3-1975
2021
Basi dati
28
2424
Bianchi
23-3-1974
2021
Calcolo
25
3445
Neri
2-2-1975
3445
3445
Algebra
Algebra
30
30
matricola
cognome
data_nasc
corso
voto
2021
Rossi
Rossi
1-3-1975
1-3-1975
Basi dati
28
2021
Rossi
1-3-1975
Calcolo
25
3545
3445
Neri
Neri
2-2-1975
2-2-1975
Algebra
Algebra
30
30
Join naturale
 operatore binario (generalizzabile a più
relazioni)
 produce un risultato


sull'unione degli attributi degli operandi
(schema)
con ennuple costruite ciascuna a partire da una
ennupla di ognuno degli operandi (istanza)
Algebra Relazionale
49
Join, sintassi e semantica
 R1(X1), R2(X2)
 R1  R2 è una relazione su X1X2
{ t su X1  X2 : esistono t1R1e t2R2
con t[X1] =t1 [X1] e t[X2] =t2 [X2] }
Algebra Relazionale
50
Join, proprietà
 Il join naturale è commutativo:
R1  R2 = R2  R1
 Il join naturale è associativo:
( R1  R2 )  R3 = R1  ( R2  R3 )
Algebra Relazionale
51
studenti Matricola Cognome
6554
Rossi
8765
Neri
9283
Verdi
3456
Rossi
esami
Matricola
3456
3456
9283
6554
corsi
Corso
01
02
04
(studenti  esami)
((studenti  esami)  corsi )
Voto
30
24
28
26
Nome
Mario
Paolo
Luisa
Maria
Corso
04
02
01
01
Titolo Docente
Analisi
Mario
Chimica Bruni
Chimica
Verdi
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
A
B
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Capo
Mori
Bruni
Capo
Mori
Bruni
Bruni
 ogni ennupla contribuisce al risultato:
join completo
Un join non completo
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
B
C
Impiegato Reparto
Neri
B
Bianchi
B
Algebra Relazionale
Capo
Mori
Bruni
Capo
Mori
Mori
54
Un join vuoto
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
D
C
Impiegato Reparto
Algebra Relazionale
Capo
Mori
Bruni
Capo
55
Un join completo, con n x m
ennuple
Ogni n-upla di ciascuna tabella è combinabile con
tutte le n-uple dell’altro
Impiegato Reparto
Rossi
A
B
Neri
B
Reparto
A
B
B
Impiegato Reparto
Rossi
B
Rossi
B
Neri
B
Bianchi Algebra Relazionale
B
Capo
Mori
Bruni
Capo
Mori
Bruni
Mori
Bruni
56
Cardinalità del join
 Il join di R1(A) e R2(B) contiene un numero di
ennuple compreso fra zero e il prodotto di |R1| e
|R2|
Algebra Relazionale
57
se il join coinvolge una chiave di R1 allora il
numero di ennuple è compreso tra zero e |R2|
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Impiegato Capo
Rossi
Mori
Neri
Bruni
Neri
Bianchi
Verdi
Bianchi
Impiegato Reparto Capo
A
Mori
Rossi
B
Bruni
Neri
B
Bianchi
Neri
se il join coinvolge una chiave di R1 e c’è un
vincolo di integrità allora il numero di ennuple
è compreso uguale a |R2|
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Impiegato Capo
Rossi
Mori
Neri
Bruni
Neri
Bianchi
Impiegato Reparto Capo
A
Mori
Rossi
B
Bruni
Neri
B
Bianchi
Neri
Cardinalità del join, riepilogo
 R1(A,B) , R2 (B,C)
 in generale:
0  |R1  R2|  |R1| · |R2|
 se B è chiave in R1
0  |R1  R2|  |R2|
 se B è chiave in R1 ed esiste vincolo di
integrità referenziale fra B (in R2) e R1
|R1  R2| = |R2|
Algebra Relazionale
60
Join naturale e valori nulli
Algebra Relazionale
61
Join, una difficoltà
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
B
C
Capo
Mori
Bruni
Impiegato Reparto Capo
Neri
B
Mori
Bianchi
B
Mori
 alcune ennuple non contribuiscono al risultato:
vengono "tagliate fuori'': si possono omettere
informazioni importanti
Algebra Relazionale
62
Join esterno
 Il join esterno estende, con valori nulli, le
ennuple che verrebbero tagliate fuori da un
join (naturale)
 esiste in tre versioni:

sinistro, destro, completo
Algebra Relazionale
63
Join esterno




sinistro: prevede che tutte le ennuple del primo
operando, estendendole con valori nulli, se necessario,
diano un contributo al join
destro: ... del secondo operando ...
completo: … di entrambi gli operandi …
OSSERVAZIONE: il Join esterno non è commutativo
Algebra Relazionale
64
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Reparto
B
C
Impiegati  LEFT Reparti
Impiegato Reparto
Neri
B
Bianchi
B
Rossi
A
Capo
Mori
Mori
NULL
Capo
Mori
Bruni
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Reparto
B
C
Impiegati  RIGHT Reparti
Impiegato Reparto
Neri
B
Bianchi
B
NULL
C
Capo
Mori
Mori
Bruni
Capo
Mori
Bruni
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Reparto
B
C
Impiegati  FULL Reparti
Impiegato Reparto
Neri
B
Bianchi
B
Rossi
A
NULL
C
Capo
Mori
Mori
NULL
Bruni
Capo
Mori
Bruni
studenti
esami
Matr
6554
4678
9283
3456
Cognome
Rossi
Neri
Verdi
Rossi
Matr
Voto
Codice
3456
esami
3456
Corso
9283
04
6554
30
04
24
02
30
01
26
01
Nome
Mario
Paolo
Luisa
Maria
corsi
Codice
01
02
04
Data di nascita
05/12/1978
03/11/1976
12/11/1979
01/02/1978
Titolo
Analisi
Chimica
Chimica
Esercizio 1
Determinare i corsi tenuti dal Prof. Mari
 Titolo ( Docente=‘Mari’(corsi) )
Docente
Mari
Mari
Verdi
studenti
esami
Matr
6554
4678
9283
3456
Cognome
Rossi
Neri
Verdi
Rossi
Matr
Voto
Codice
3456
esami
3456
Corso
9283
04
6554
30
04
24
02
30
01
26
01
Nome
Mario
Paolo
Luisa
Maria
corsi
Codice
01
02
04
Data di nascita
05/12/1978
03/11/1976
12/11/1979
01/02/1978
Titolo
Analisi
Chimica
Chimica
Docente
Mari
Mari
Verdi
Esercizio 2
Determinare nome, cognome e numero di matricola degli studenti
che hanno ricevuto la votazione di 30
 Nome, Cognome, Matr ( Voto=30( esami  studenti ))
studenti
esami
Matr
6554
4678
9283
3456
Cognome
Rossi
Neri
Verdi
Rossi
Matr
Voto
Codice
3456
esami
3456
Corso
9283
04
6554
30
04
24
02
30
01
26
01
Nome
Mario
Paolo
Luisa
Maria
Data di nascita
05/12/1978
03/11/1976
12/11/1979
01/02/1978
corsi
Codice
01
02
04
Titolo
Analisi
Chimica
Chimica
Docente
Mari
Mari
Verdi
Esercizio 3
Determinare il nome e il cognome degli studenti che hanno
sostenuto l'esame di Analisi
studenti
esami
Matr
6554
4678
9283
3456
Cognome
Rossi
Neri
Verdi
Rossi
Matr
Voto
Codice
3456
esami
3456
Corso
9283
04
6554
30
04
24
01
30
01
26
01
Nome
Mario
Paolo
Luisa
Maria
Data di nascita
05/12/1978
03/11/1982
12/11/1979
01/02/1983
corsi
Codice
01
02
04
Titolo
Analisi
Chimica
Chimica
Docente
Mari
Mari
Verdi
Esercizio 4
Determinare nome, cognome ed eventuali esami sostenuti da tutti gli
studenti del corso di laurea che hanno più di 25 anni.
Algebra Relazionale
71
studenti
esami
Matr
6554
4678
9283
3456
Cognome
Rossi
Neri
Verdi
Rossi
Matr
Voto
Codice
3456
esami
3456
Corso
9283
04
6554
30
04
24
01
30
01
26
01
Nome
Mario
Paolo
Luisa
Maria
Data di nascita
05/12/1978
03/11/1982
12/11/1979
01/02/1983
corsi
Codice
01
02
04
Titolo
Analisi
Chimica
Chimica
Docente
Mari
Mari
Verdi
Esercizio 5
Determinare nome, cognome degli studenti del corso di laurea che
non hanno sostenuto alcun esame.
Algebra Relazionale
72
Join e proiezioni
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
B
C
Impiegato Reparto
Neri
B
Bianchi
B
Impiegato Reparto
Neri
B
Bianchi
B
Capo
Mori
Bruni
Capo
Mori
Mori
Reparto
B
Capo
Mori
Proiezioni e join
Impiegato
Neri
Bianchi
Verdi
Impiegato
Neri
Bianchi
Verdi
Reparto
B
B
A
Impiegato
Neri
Bianchi
Neri
Bianchi
Verdi
Reparto
B
B
A
Capo
Mori
Bruni
Bini
Reparto
B
B
A
Reparto
B
B
B
B
A
Capo
Mori
Bruni
Bini
Capo
Mori
Bruni
Bruni
Mori
Bini
Join e proiezioni
 R 1(X1), R 2(X2)
X1 (R 1  R2 )  R 1
 R(X), X = X1  X2
( X1 (R))  ( X2 (R))  R
Algebra Relazionale
75
Prodotto cartesiano



Che cosa accade se si effettua un join naturale su
relazioni senza attributi in comune?
Prodotto cartesiano tra le due relazioni
contiene sempre un numero di ennuple pari al
prodotto delle cardinalità degli operandi (le ennuple
sono tutte combinabili )
Algebra Relazionale
76
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Codice
A
B
Impiegati  Reparti
Impiegato Reparto Codice
Rossi
A
A
Rossi
A
B
Neri
B
A
Neri
B
B
Bianchi
B
A
Bianchi
B
B
Capo
Mori
Bruni
Capo
Mori
Bruni
Mori
Bruni
Mori
Bruni
 Il prodotto cartesiano, in pratica, ha senso solo
se seguito da selezione:
Condizione
(R1  R2)
 L'operazione viene chiamata theta-join e
indicata con:
R1 Cond R2
Algebra Relazionale
78
Perché "theta-join"?
 La condizione C è spesso una congiunzione
(AND) di atomi di confronto A1J A2 dove J è
uno degli operatori di confronto (=, >, <, …)
 se l'operatore è sempre l'uguaglianza (=)
allora si parla di equi-join
Algebra Relazionale
79
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Codice
A
B
Impiegati Reparto=Codice Reparti
Impiegato Reparto Codice
Rossi
A
A
Rossi
A
A
Rossi
A
B
Neri
B
B
Neri
B
A
Bianchi
B
B
Neri
B
B
Bianchi
BEqui-join
A
Bianchi
B
B
Capo
Mori
Bruni
Capo
Mori
Mori
Bruni
Bruni
Mori
Bruni
Bruni
Mori
Bruni
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Reparto
A
B
Capo
Mori
Bruni
Impiegati  Reparti
Algebra Relazionale
81
Join naturale ed equi-join
Impiegati
Reparti
Impiegato Reparto
Reparto
Capo
Impiegati  Reparti
 Impiegato,Reparto,Capo (  Reparto=Codice
( Impiegati
  Codice  Reparto (Reparti)
) ))
Producono lo stesso risultato !
Algebra Relazionale
82
prodotto cartesiano o join
naturale?
 Prodotto cartesiano e Join naturale possono essere
ottenuti l’uno a partire dall’altro
 R(A,B), S(B,C)
 Prodotto cartesiano :
R  S =  A,B,C (R.B=S.B (R  S) )
 Join naturale :
R  S = ( BB’ (R) S)
Algebra Relazionale
83
Operatore di divisione
studenti
esami
Matr
6554
4678
9283
3456
Cognome
Rossi
Neri
Verdi
Rossi
Matr
Voto
Codice
3456
esami
3456
Corso
9283
04
6554
30
04
24
01
30
01
26
01
6554
28
30
02
04
6554
Nome
Mario
Paolo
Luisa
Maria
Data di nascita
05/12/1978
03/11/1982
12/11/1979
01/02/1983
corsi
Codice
01
02
04
Titolo
Analisi
Chimica
Fisica
Docente
Mari
Mari
Verdi
 trovare gli studenti che hanno sostenuto tutti gli esami del
Algebra Relazionale
corso di laurea
84
Matr,Codice(esami)
Matr
Codice
3456
esami
3456
Corso
9283
04
6554
04
6554
02
04
6554
Codice(corsi)
01
Codice
01
02
04
01
01
Si considerano solo
Matr,Codice(esami)  Codice(corsi)
le righe della prima
tabella che si
Matr
combinano con
6554
tutte le righe della
seconda tabella
R(XY) / S(X) è una relazione su T(Y) tale che tT(Y) se e solo se
esistono n-uple tR in R tali che:
-tR [Y]=t
-tR [X]=l per ogni n-unpla l di S
Algebra Relazionale
85
Un insieme completo di
operazioni
 Teorema: L’insieme delle operazioni
{ ,  , ,  , - }
è un insieme completo.
 ESEMPIO



R  S=(R  S) - (( R-S)  ( S- R ))
Join naturale = Prod. Cartesiano + Selezione +
Proiezione
Divisione= Prodotto Cartesiano + Differenza +
Algebra Relazionale
Proiezione
86
Alcune operazioni in algebra
relazionale
 Esempio: qual è la squadra prima in
classifica?
Classifica
Squadra
Siena
Inter
Juve
Punti
40
36
34
Algebra Relazionale
87
 Ridenominazione + Join
Squadra1 Punti1 Squadra2 Punti2
Siena
40
Siena
40
Inter
36
Siena
40
Siena
40
Juve
34
Inter
36
Juve
34
….
…
….
…
Algebra Relazionale
88
Selezione sulla condizione:
(Punti1  Punti2) AND (Squadra1  Squadra2)
Squadra1 Punti1
Squadra2
Punti2
Juve
34
Siena
40
Inter
36
Siena
40
Juve
34
Inter
36
Proiezione su
Squadre che hanno
Squadra1,
Punti1
meno punti
di almeno
un’altra squadra
Squadra1 Punti1
Juve
Inter
Algebra Relazionale
Classifica 2
Squadre che hanno più
34
punti di almeno
36
un’altra squadra 89
Classifica
Squadra
Siena
Inter
Juve
Classifica 2
Punti
40
36
34
Squadra1 Punti1
Juve
Inter
Differenza tra la tabella
Classifica e Classifica 2
(dopo opportuna ridenominazione)
Algebra Relazionale
34
36
Squadra
Punti
Siena
40
90
Chiusura transitiva
Supervisione(Impiegato, Capo)
Per ogni impiegato, trovare tutti i superiori
(cioè il capo, il capo del capo, e cosi' via)
Impiegato
Rossi
Neri
Lupi
Capo
Mori
Lupi
Bruni
Falchi
Impiegato
Rossi
Neri
Lupi
Rossi
Algebra Relazionale
Superiore
Mori
Lupi
Bruni
Falchi
Falchi
91
Chiusura transitiva, come si fa?
 Nell'esempio, basterebbe il join della relazione con
se stessa, previa opportuna ridenominazione
 Ma:
Impiegato
Rossi
Neri
Lupi
Falchi
Capo
Mori
Lupi
Bruni
Falchi
Leoni
Impiegato
Rossi
Neri
Lupi
Rossi
Lupi
Rossi
Algebra Relazionale
Superiore
Mori
Lupi
Bruni
Falchi
Falchi
Leoni
Leoni
92
Chiusura transitiva,
impossibile!
 Per ogni specifico livello è possibile determinare tutti
gli impiegati sorvegliati da un impegato a un certo
livello, ma non quelli sorvegliati a tutti i livelli
 Non esiste in algebra la possibilità di esprimere
l'interrogazione che, per ogni relazione binaria, ne
calcoli la chiusura transitiva
 Per ciascuna istanza relazione, è possibile calcolare la
chiusura transitiva, ma con un'espressione ogni volta
diversa: dipende dall’istanza e non dallo schema!
 Immaginate una istanza di migliaia di tuple: quanti
join servono?
Algebra Relazionale
93
Interrogazioni in algebra
relazionale
 Una interrogazione su una base di dati è una
funzione che restituisce una relazione R su
un insieme di attributi X.
Algebra Relazionale
94
Esempi
Impiegati Matricola Nome
Età Stipendio
7309
Rossi
34
45
5998
Bianchi 37
38
9553
Neri
42
35
5698
Bruni
43
42
4076
Mori
45
50
8123
Lupi
46
60
Supervisione Impiegato Capo
7309
5698
5998
5698
9553
4076
5698
4076
4076
8123
 Trovare matricola, nome, età e stipendio degli
impiegati che guadagnano più di 40 milioni
Stipendio>40 (Impiegati)
Algebra Relazionale
96
Matricola Nome Età Stipendio
7309
Rossi
34
45
5998
5698
Bianchi
Bruni
37
43
38
42
9553
4076
Mori
Neri
42
45
35
50
5698
8123
Bruni
Lupi
43
46
42
60
4076
Mori
45
50
8123
Lupi
46
60
Stipendio>40(Impiegati)
Algebra Relazionale
97
 Trovare matricola, nome ed età degli impiegati
che guadagnano più di 40 milioni
Matricola, Nome, Età (Stipendio>40(Impiegati))
Matricola Nome Età Stipendio
7309
Rossi
34
45
5998
5698
Bianchi
Bruni
37
43
38
42
9553
4076
Mori
Neri
42
45
35
50
5698
8123
Bruni
Lupi
43
46
42
60
4076
Mori
45
50
8123
Lupi
46
60
Algebra Relazionale
98
 Trovare le matricole dei capi degli impiegati che
guadagnano più di 40 milioni
 Capo (Supervisione
 Impiegato=Matricola ( Stipendio>40(Impiegati)))
Algebra Relazionale
99
 Trovare nome e stipendio dei capi degli
impiegati che guadagnano più di 40 milioni
Nome,Stipendio
(Impiegati  Matricola=Capo  Capo(Supervisione
 Impiegato=Matricola ( Stipendio>40(Impiegati))))
Algebra Relazionale
100
Capo
5698
4076
8123
 Capo (Supervisione 
Impiegato=Matricola(Stipendio>40(Impiegati)))
Matricola Nome Età Stipendio
7309
Rossi
34
45
5998
Bianchi 37
38
9553
Neri
42
35
5698
Bruni
43
42
4076
Mori
45
50
8123
Lupi
46
60
Impiegati
Impiegati  Matricola=Capo  Capo(Supervisione 
Impiegato=Matricola ( Stipendio>40(Impiegati))))
Capo
Matricola
Nome
Età
Stipendio
5698
5698
Bianchi
37
38
4076
4076
Mori
45
50
8123
8123
Lupi
46
60
Algebra Relazionale
102
 Nome,Stipendio (Impiegati  Matricola=Capo
 Capo(Supervisione  Impiegato=Matricola
(Stipendio>40(Impiegati))))
Nome
Stipendio
Bianchi
38
Mori
50
Lupi
60
Nome e stipendio dei capi di impiegati
che guadagnano più di 40 milioni
Algebra Relazionale
103
 Trovare gli impiegati che guadagnano più del
proprio capo, mostrando matricola, nome e
stipendio dell'impiegato e del capo
 Matr,Nome,Stip,MatrC,NomeC,StipC ( Stipendio>StipC(
 MatrC,NomeC,StipC,EtàC  Matr,Nome,Stip,Età(Impiegati)
 MatrC=Capo
(Supervisione  Impiegato=Matricola Impiegati)))
Algebra Relazionale
104
Equivalenza di espressioni
algebriche
 Espressioni E1 e E2 sono equivalenti per lo schema R,
E1RE2 se
E1(r) = E2(r)
per ogni istanza r di R.
 Le due espressioni sono assolutamente equivalenti, E1E2 se
E1 R E2
per ogni schema R.
Algebra Relazionale
105
 equivalenza assoluta:
 A,B( A>0(R))   A>0 ( A , B(R))
 equivalenza:
 A,B(R1)   A ,C(R2) R  A ,B,C(R1  R2)
vale solo per gli schemi R per cui l’intersezione tra
gli attributi di R1 e R2 è uguale ad A
ESERCIZIO: trovare un controesempio
Algebra Relazionale
106
Trasformazioni di equivalenza

Due espressioni E1 ed E2 equivalenti
garantiscono lo stesso risultato, ma questo non
significa che la scelta sia indifferente in termini di
“risorse” necessarie
Scopi:

1.
2.
trasformare le espressioni in modo semplice, affinchè
sia ridotto il numero delle operazioni da eseguire
il costo di una interrogazione viene valutato in termini
di dimensione dei risultati intermedi: in presenza di
alternative si sceglie quella col costo minore.
Algebra Relazionale
107
Trasformazioni di equivalenza (2)

1.
2.
3.

Operazioni che sostituiscono una espressione con un’altra
ad essa equivalente
Atomizzazione delle selezioni
 F1F2(E)   F1(F2(E)))
Idempotenza delle proiezioni
 X (E)   X ( X  Y (E))
Anticipazione della selezione rispetto al join
 F (E1  E2)  E1   F (E2)
se la condizione F fa riferimento solo ad attributi nella
sottoespressione E2
Algebra Relazionale
108
4.
Inglobamento di una selezione in un prodotto cartesiano
 F (E1  E2)  E1  F E2
5.
Distributività della selezione rispetto all'unione
 F (E1  E2)   F (E1)   F (E2)
6.
Distributività della proiezione rispetto all'unione
 X (E1  E2)   X(E1)   X (E2)
7.
Distributività della selezione rispetto alla differenza
 F (E1 - E2)   F (E1) -  F (E2)
Algebra Relazionale
109
Impiegati Matricola Nome
7309
5998
9553
5698
4076
8123
Età Stipendio
Rossi
34
45
Bianchi 28
38
Neri
42
35
Bruni
23
42
Mori
45
50
Lupi
46
60
Supervisione Impiegato
7309
5998
9553
5698
4076
Capo
5698
5698
4076
4076
8123
Esercizio: Utilizzando le regole di trasformazione dimostrare
che le due espressioni sono equivalenti
 Capo ( Matr=Imp  Età < 30 (IMPIEGATI  SUPERVISIONE))
 Capo (SUPERVISIONE  Matr=Imp ( Età < 30 (IMPIEGATI))
Algebra Relazionale
111
Trovare i numeri di matricola dei capi di impiegati con meno di 30 anni
 Capo ( Matr=Imp  Età < 30 (IMPIEGATI  SUPERVISIONE))
Per calcolare pochi valori effettua un prodotto cartesiano (molto costoso)
REGOLA 1:
 Capo ( Età < 30 ( Matr=Imp (IMPIEGATI  SUPERVISIONE)))
REGOLA 4:
 Capo ( Età<30 (IMPIEGATI  Matr=Imp SUPERVISIONE))
Algebra Relazionale
112
REGOLA 3
 Capo ( Età<30 (IMPIEGATI)  Matr=Imp SUPERVISIONE)
Algebra Relazionale
113
Viste (relazioni derivate)
 Spesso è utile mettere a disposizione degli
utenti rappresentazioni diverse per gli stessi
dati (schema esterno)
 Relazioni derivate:
relazioni il cui contenuto è funzione del
contenuto di altre relazioni (definito per mezzo
di interrogazioni)
 Relazioni di base:
contenuto autonomo (quelle che costituiscono
effettivamente la base di dati)
Algebra Relazionale
114
Architettura standard (ANSI/SPARC)
a tre livelli per DBMS
utente
utente
Schema
esterno
utente
Schema
esterno
Schema logico
Schema interno
BD
utente
Schema
esterno
utente
Viste virtuali e materializzate
 Due tipi di relazioni derivate:


viste materializzate
relazioni virtuali (o viste)
Algebra Relazionale
116
Viste materializzate
 relazioni derivate effettivamente memorizzate
nella base di dati

vantaggi:


immediatamente disponibili per le interrogazioni
svantaggi:



ridondanti
appesantiscono gli aggiornamenti (il loro contenuto
deve essere mantenuto allineato con quello delle
relazioni da cui derivano)
non sono supportate dai DBMS commerciali
Algebra Relazionale
117
Viste
 relazioni virtuali (o viste):




non sono memorizzate nella base di dati
sono supportate dai DBMS commerciali
una interrogazione su una vista viene eseguita
"ricalcolando" la vista (o quasi)
vengono definite nei sistemi relazionali per
mezzo di espressioni nel linguaggio di
interrogazione
Algebra Relazionale
118
Viste, esempio
Afferenza Impiegato Reparto
Rossi
A
Neri
B
Verdi
B
Bianchi
B
Direzione
Reparto
A
B
B
Capo
Mori
Leoni
Bruni
Una vista:
Supervisione =  Impiegato,Capo (Afferenza  Direzione)
Algebra Relazionale
119
Interrogazioni sulle viste
 Sono eseguite sostituendo alla vista la sua
definizione:
 Capo='Leoni' (Supervisione)
viene eseguita come
 Capo='Leoni'( Impiegato,Capo (Afferenza  Direzione))
Algebra Relazionale
120
Viste, motivazioni
 Schema esterno: ogni utente vede solo
 ciò che gli interessa e nel modo in cui gli interessa, senza
essere distratto dal resto
 ciò che e' autorizzato a vedere (autorizzazioni)
 Strumento di programmazione:
 si può semplificare la scrittura di interrogazioni: espressioni
complesse e sottoespressioni ripetute
 Utilizzo di programmi esistenti su schemi ristrutturati.
Invece:
 L'utilizzo di viste non influisce sull'efficienza delle
interrogazioni
Algebra Relazionale
121
Viste come strumento di
programmazione
 Trovare gli impiegati che hanno lo stesso capo di
Rossi
 Senza vista:
Impiegato (Afferenza  Direzione) 
 ImpR,RepR  Imp,Reparto ( Impiegato='Rossi' (Afferenza  Direzione))
 Con la vista:
 Impiegato (Supervisione)   ImpR,RepR  Imp,Reparto (Impiegato='Rossi' (Supervisione))
Algebra Relazionale
122