3 algebra relazionale - di.unito.it · Algebra relazionale 2 Accesso ai dati di un DB Aggiornamento...
Transcript of 3 algebra relazionale - di.unito.it · Algebra relazionale 2 Accesso ai dati di un DB Aggiornamento...
Algebra relazionale
2
Accesso ai dati di un DB
Aggiornamento del DB: funzione che, data un’istanza del DB, produce un’altra istanza del DB, sullo stesso schema
� Modifica, aggiunta, rimozione tuple
Interrogazione a DB: funzione che, dato un DB, produce una relazione su un dato schema (non necessariamente uno degli schemi definiti nel DB)
3
Accesso ai dati di un DB
Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi
� Per esempio: algebra relazionale
4
Algebra relazionale
Linguaggio procedurale di accesso a DB
� Si specificano operazioni complesse descrivendo il procedimento da usare per ottenere la soluzione
� Interrogazioni : espressioni complesse
5
Algebra relazionale
Algebra relazionale: basata su un insieme di operatori� Definiti su relazioni
� Producono relazioni come risultati
Operatori� Insiemistici: unione, intersezione, differenza
� Specifici: ridenominazione, selezione, proiezione, join
6
Operatori insiemistici
Relazioni: insiemi di tuple omogenee, cioèdefinite sugli stessi attributi
Insiemi: ha senso usare operatori insiemistici
Insiemi di tuple omogenee: usare operatori insiemistici solo su relazioni definite sugli stessi attributi� Altrimenti, si ottengono insiemi di tuple disomogenee, che non rappresentano relazioni
7
Unione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X
r1∪r2: relazione su X che contiene tuple appartenenti a r1 oppure a r2 oppure a entrambe
8
Unione di relazioni
38Verdi9824
39Neri7432
56Neri9297
EtàCognomeMatricola
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
56Neri9297
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
Laureati Dirigenti
Laureati ∪ Dirigenti
9
Differenza di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X
r1-r2: relazione su X che contiene tuple appartenenti a r1 ma non a r2
10
Differenza di relazioni
38Verdi9824
39Neri7432
56Neri9297
EtàCognomeMatricola
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
37Rossi7274
EtàCognomeMatricola
Laureati Dirigenti
Laureati - Dirigenti
11
Intersezione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi X
r1∩r2: relazione su X che contiene tuple appartenenti sia a r1 sia a r2
12
Intersezione di relazioni
38Verdi9824
39Neri7432
56Neri9297
EtàCognomeMatricola
38Verdi9824
39Neri7432
37Rossi7274
EtàCognomeMatricola
38Verdi9824
39Neri7432
EtàCognomeMatricola
Laureati Dirigenti
Laureati ∩ Dirigenti
13
Operatori di manipolazione di relazioni
Specifici dell’algebra relazionale (non derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per creare nuove relazioni� Ridenominazione
� Selezione
� Proiezione
� Join
14
Ridenominazione di relazioni
Cambia il nome di un attributo di relazione lasciandone inalterata l’istanza (modifica solo intestazione di relazione)
Utile per applicare operatori insiemistici a relazioni con attributi di nome diverso
15
Ridenominazione di relazioni
Per esempio:
IsmaeleAbramo
IsaccoAbramo
AbeleAdamo
CainoAdamo
FiglioPadre
IsmaeleAgar
IsaccoSara
SetEva
CainoEva
FiglioMadre
Paternità Maternità
Paternità ∪ Maternità ?16
Ridenominazione di relazioni
Una ridenominazione:
IsmaeleAbramo
IsaccoAbramo
AbeleAdamo
CainoAdamo
FiglioPadre
IsmaeleAbramo
IsaccoAbramo
AbeleAdamo
CainoAdamo
FiglioGenitore
Paternità ρGenitore←Padre(Paternità)
17
Ridenominazione di relazioni
Un’altra ridenominazione:
IsmaeleAgar
IsaccoSara
SetEva
CainoEva
FiglioMadre
IsmaeleAgar
IsaccoSara
SetEva
CainoEva
FiglioGenitore
Maternità ρGenitore←Madre(Maternità)
18
Ridenominazione di relazioni
CainoAdamo
AbeleAdamo
IsaccoAbramo
IsmaeleAbramo
IsmaeleAgar
IsaccoSara
SetEva
CainoEva
FiglioGenitore
ρGenitore←Padre(Paternità) ∪ ρGenitore←Madre(Maternità)
Corretta applicazionedi unione direlazioni
19
Ridenominazione di relazioni
Monza
Latina
Milano
Roma
Sede
45Rossi
53Neri
33Verdi
32Bruni
RetribuzioneCognome
Milano
Roma
Agenzia
45Rossi
53Neri
StipendioCognome
Monza
Latina
Fabbrica
33Verdi
32Bruni
SalarioCognome
Impiegati Operai
ρSede,Retribuzione←Agenzia,Stipendio(Impiegati)
∪ρSede,Retribuzione←Fabbrica,Salario(Operai)
20
Ridenominazione di relazioni
Sia r(X) lo schema di una relazione r definita sull’insieme X={A1,…,Ak}
… e sia Y un insieme di attributi Y={B1,…,Bk}
La ridenominazione ρB1,..,Bk←A1,…,Ak(r) contiene una tupla t’ per ogni tupla t in r, cosìdefinita:� t’ è una tupla su Y, e
� t’[Bi]=t[Ai] per 1≤i≤k
21
Ridenominazione di relazioni
Cambiano solo i nomi degli attributi, i valori rimangono inalterati
Di solito, si indicano nelle ridenominazione solo gli attributi ridenominati (quelli per cui Ai ≠ Bi)
ρGenitore←Padre(Paternità): l’attributo Figlio viene omesso
22
Ridenominazione di relazioni
Che cos’è Studenti ∪ ρMatricola←Numero(Docenti)?
56
32
Matricola
Rossi
Neri
CognomeStudenti
23
78
Numero
Bianchi
Neri
CognomeDocenti
23
Selezione
Data una relazione r su un insieme di attributi X, la selezione σF(r) produce una relazione sugli attributi X che contiene tuple di r che soddisfano la condizione di selezione F
A B C
σF(r)
Selezione secondo F
A B C
24
Selezione
F e’ una formula proposizionale: condizione di selezione formata da
� Operatori booleani: � ∧ (AND),
� ∨ (OR),
� ¬ (NOT)
25
Selezione
F e’ una formula proposizionale: condizione di selezione formata da� Operatori booleani
� Condizione atomiche: termini che possono contenere� Confronti fra attributi (per esempio, Stipendio>Tasse, dove Stipendio e Tasse sono attributi)
� Confronti fra attributi e costanti (per esempio, Età ≤ 60, dove Età è un attributo)
26
Selezione
1.900,0040MarcoRossi
2.250,0036NicoVerdi
1.500,0040LucaNeri
1.000,0025MarioRossi
StipendioEtàNomeCognomeImpiegati
2.250,0036NicoVerdi
StipendioEtàNomeCognome
σEtà>30∧Stipendio>2.000,00(Impiegati)
27
Selezione
1.900,0040MarcoRossi
2.250,0036NicoVerdi
1.500,0040LucaNeri
1.000,0025MarioRossi
StipendioEtàNomeCognomeImpiegati
Che cos’è σEtà>30(Impiegati)?
28
Selezione
1.900,0040MarcoRossi
2.250,0036NicoVerdi
1.500,0040LucaNeri
1.000,0025MarioRossi
StipendioEtàNomeCognomeImpiegati
Che cos’è
σCognome=“Rossi” ∨ (¬ Nome=“Nico”)(Impiegati) ?
29
Proiezione
Dati una relazione r su un insieme di attributi X e un sottoinsieme Y di X, la proiezione πY(r) è l’insieme di tuple su Y ottenute dalle tuple di r considerando solo i valori su Y
πY(r) = {t[Y] | t ∈ r}
A B C
πY(r)
Proiezione su Y
A B
30
Proiezione
Per esempio:� Impiegati(Cognome,Nome,Reparto,Capo)
� πCognome,Nome(Impiegati) ha attributi Cognome, Nome
Ricordiamo che le relazioni sono insiemi, quindi non contengono tuple ripetute:� Tuple uguali collassano in una sola
31
Proiezione
BaldiPersonaleMarcoRossi
BaldiPersonaleNicoVerdi
De RossiVenditeLucaNeri
De RossiVenditeMarioRossi
CapoRepartoNomeCognome
BaldiPersonale
De RossiVendite
CapoReparto
Impiegati
πReparto,Capo(Impiegati)
32
Proiezione
BaldiPersonaleMarcoRossi
BaldiPersonaleNicoVerdi
De RossiVenditeLucaNeri
De RossiVenditeMarioRossi
CapoRepartoNomeCognomeImpiegati
Che cos’è πCognome, Nome(Impiegati)?
33
Proiezione
BaldiPersonaleMarcoRossi
BaldiPersonaleNicoVerdi
De RossiVenditeLucaNeri
De RossiVenditeMarioRossi
CapoRepartoNomeCognomeImpiegati
Che cos’è πCapo(Impiegati)?
34
Tuple di una proiezione
Una proiezione πY(r) contiene al più tante tuple quante ne contiene r
Se Y è una superchiave di r, allora πY(r) contiene tante tuple quante r� Questo può accadere comunque anche se Y non èla chiave primaria (basta che le tuple su Y siano “casualmente” tutte diverse tra loro)
Viceversa: se πY(r) contiene tante tuple quante r, allora Y è una superchiave di r
35
Join
Operatore che permette di correlare dati contenuti in relazioni diverse confrontando i valori delle tuple (modello relazionale basato su valori)
Join Naturale
Theta-Join
36
Join Naturale
Permette di correlare dati contenuti in relazioni diverse confrontando attributi con lo stesso nome
Produce una relazione definita sull’unione di insiemi di attributi delle due relazioni su cui opera
Tuple del risultato: ottenute combinando le tuple dei due operandi con valore uguale su attributi comuni
37
Join Naturale
Date r1(X) e r2(Y), r1><r2 è una relazione su X∪Y:
r1><r2={t su X∪Y | t[X]∈r1 e t[Y]∈r2}
38
Join Naturale
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
De Rossi
Mori
Capo
Produzione
Vendite
Reparto
Rel1 Rel2
Rel1(Impiegato,Reparto) Rel2(Reparto,Capo)
X Y
39
Join Naturale
Produzione
Produzione
Vendite
Reparto
De RossiRossi
MoriNeri
MoriBianchi
CapoImpiegato
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
De Rossi
Mori
Capo
Produzione
Vendite
Reparto
Rel1 Rel2
Rel1 >< Rel2
40
Join Naturale
Se le relazioni da combinare sono definite sullo stesso insieme di attributi, r1(X), r2(X)
… r1><r2 = r1∩r2
� Cioè il join coincide con l’intersezione: combina le tuple con gli stessi valori di attributi su r1 e r2
41
Join Naturale
Produzione
Vendite
Reparto
De Rossi
Mori
Capo
MoriProduzione
De RossiVendite
Baldi
Capo
Acquisti
Reparto
TilliContabilità
De Rossi
Mori
Capo
Produzione
Vendite
Reparto
Rel1 Rel2
Rel1 >< Rel2
42
Join Naturale
Se le relazioni da combinare sono definite su insiemi di attributi disgiunti, r1(X), r2(Y) con X∩Y=∅… la condizione di corrispondenza tra tuple è sempre vera
… r1><r2=r1xr2 (prodotto cartesiano)
Combina tutte le tuple di r1 con tutte quelle di r2
43
Join Naturale
P123MoriMoriProduzione
R124BaldiBaldiAcquisti
Bianchi
Mori
Impiegato
R124
P123
Progetto
Mori
Baldi
Capo
Produzione
Acquisti
Reparto
MoriProduzione
Baldi
Capo
Acquisti
Reparto
R124
P123
Progetto
Mori
Baldi
Impiegato
Rel1 Rel2
Rel1 >< Rel2
44
Join Naturale
Numero degli attributi di r1><r2 ≤ somma dei numeri degli attributi di r1 e r2
Spesso il join viene fatto sulla chiave di una relazione:� Infrazioni(Codice,Data,Agent,Art,Prov,Numero) Auto(Prov,Numero,Proprietario,Indirizzo)
Spesso viene imposto il vincolo di integritàreferenziale tra attributi di join (per evitare che r1 faccia riferimento a valori inesistenti in r2)
45
Join Naturale
v. AceriBini Luca4E5432RM
v. TigliVerdi Piero1A2396RM
Luci Gino
Verdi Piero
Proprietario
v. Aceri
v. Tigli
Indirizzo
2F7643
2F7643
Numero
MI
RM
Prov
Auto
2F7643MI5345615/10/03630876
539856
987557
987554
143256
Codice
12/10/03
26/10/03
26/10/03
25/10/03
Data
2F7643RM34456
4E5432RM34456
MI
RM
Prov
2F7643
4E5432
Numero
44
44
Art
567
567
Agente
Infrazioni
46
Join Naturale
2F7643
2F7643
2F7643
4E5432
4E5432
Numero
Luci Gino
Luci Gino
Verdi Piero
Bini Luca
Bini Luca
Proprietario
v. Aceri
v. Aceri
v. Tigli
v. Aceri
v. Aceri
Indirizzo
MI5345615/10/03630876
539856
987557
987554
143256
Codice
12/10/03
26/10/03
26/10/03
25/10/03
Data
RM34456
RM34456
MI
RM
Prov
44
44
Art
567
567
Agente
Infrazioni >< Auto
• Tra Infrazioni e Auto esiste un vincolo di integrità referenziale• {Prov,Numero} è chiave di Auto• Quindi, ogni tupla di Infrazioni è combinata esattamente conuna tupla di Auto
47
Join Naturale
IsmaeleAbramo
IsaccoAbramo
AbeleAdamo
CainoAdamo
FiglioPadre
Paternità
IsmaeleAgar
IsaccoSara
AbeleEva
CainoEva
FiglioMadre
Maternità
Ismaele
Isacco
Abele
Caino
Figlio
Agar
Sara
Eva
Eva
Madre
Abramo
Abramo
Adamo
Adamo
Padre
Paternità >< Maternità
48
Join completi
Date r1(X) e r2(Y), r1><r2 è completo se e solo se, per ogni tupla t1 di r1 esiste tupla t in r1><r2 tale che t[X]=t1 e analogamente per r2
49
Join completi
Cardinalità di un insieme: il numero di elementi che appartengono all’insieme
� Cardinalità di A: scritto |A|
Per esempio: |{a,b,d}|=3, |∅|=0
50
Join completi
Cardinalità di join:
� Se r1><r2 è completo:
max(|r1|,|r2|) ≤ |r1><r2| ≤ |r1|x|r2|
51
Join completi
MoriP124Bianchi
BruniP124Rossi
BruniP124Neri
BruniP124Bianchi
P124
P124
Progetto
MoriRossi
MoriNeri
CapoImpiegato
P124Neri
P124Bianchi
P124
Progetto
Rossi
Impiegato
BruniP124
Mori
Capo
P124
Progetto
Rel1 Rel2
Rel1 >< Rel2
Un esempio di join con |r1|x|r2| tuple
52
Join incompleti
Join incompleti lasciano tuple senza corrispondenza, dette dangling tuples
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
Produzione
Produzione
Reparto
Mori
Mori
Capo
Bianchi
Neri
ImpiegatoRel1 >< Rel2
53
Join incompletiCaso limite (solo tuple dangling): se non ci sono tuple combinabili, il risultato del join è la relazione vuota(senza tuple)
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Acquisti
Reparto
Rel1 Rel2
Reparto CapoImpiegatoRel1 >< Rel2
54
Cardinalità di join
Date r1(X) e r2(Y):
0 ≤ |r1><r2| ≤ |r1|x|r2|
Se r1 ><r2 completo:
|r1><r2| ≥ max(|r1|,|r2|)
Ogni tupla di r1 viene combinata con almeno 1 tupla di r2 e viceversa
55
Cardinalità di join
Se X∩Y contiene una chiave per r2
|r1><r2| ≤ |r1|
Ogni tupla di r1 viene combinata con al più una tupla di r2
56
Cardinalità di join
Se X∩Y contiene una chiave per r2 e c’èun vincolo di integrità referenziale fra X∩Y in r1 e la chiave di r2
|r1><r2| = |r1|
Ogni tupla di r1 viene combinata con esattamente una tupla di r2
57
Join esterni
Per combinare sempre le tuple di due relazioni, anche quando non ci sono corrispondenze tra i valori degli attributi comuni, si inseriscono dei valori NULL in assenza di controparti
Non tralasciano tuple di operandi nel risultato
58
Join esterni
Join esterno sinistro: estende solo le tuple del primo operando� Aggiunge tuple di r1 senza corrispettivo in r2
Join esterno destro:estende solo le tuple del secondo operando� Aggiunge tuple di r2 senza corrispettivo in r1
Join esterno completo: estende tuple di entrambi gli operandi� Bilaterale
59
Join esterni
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
MoriProduzioneNeri
MoriProduzioneBianchi
Vendite
Reparto
NULL
Capo
Rossi
ImpiegatoRel1 ><LEFT Rel2
60
Join esterni
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
MoriProduzioneBianchi
BruniAcquistiNULL
MoriProduzioneNeri
Reparto CapoImpiegatoRel1 ><RIGHT Rel2
61
Join esterni
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniAcquisti
Mori
Capo
Produzione
Reparto
Rel1 Rel2
MoriProduzioneBianchi
BruniAcquistiNULL
MoriProduzioneNeri
Vendite
Reparto
NULL
Capo
Rossi
ImpiegatoRel1 ><FULL Rel2
62
Theta-Join
Serve per fare Join su relazioni senza attributi omonimi
Ricordiamo che il Join naturale su insiemi di attributi disgiunti degenera nel prodottocartesiano delle relazioni
Il Theta-Join e’ un operatore derivato: si ottiene come prodotto cartesiano seguito dalla selezione delle tuple che verificano una formula proposizionale F tra valori di attributi
r1 ><F r2 = σF(r1 >< r2)
63
Theta-Join
ProduzioneNeri
ProduzioneBianchi
Vendite
Reparto
Rossi
Impiegato
BruniVendite
BaldiAcquisti
Mori
Capo
Produzione
Divisione
Rel1 Rel2
Produzione
Produzione
Vendite
Reparto
Produzione
Produzione
Vendite
Divisione
MoriBianchi
MoriNeri
Bruni
Capo
Rossi
Impiegato
σReparto=Divisione(Rel1 >< Rel2)
64
Theta-Join ed Equi-Join
Theta-Join: r1 ><F r2 = σF(r1 >< r2)
La condizione di selezione F è una formula proposizionale come descritto per l’operatore di selezione
Se F è congiunzione di uguaglianze tra attributi di r1 e attributi di r2, il theta-join viene detto equi-join
65
Theta-Join ed Equi-Join
Per esempio:
� Rel1(Impiegato,Reparto), Rel2(Divisione,Capo)
σReparto=Divisione(Rel1 >< Rel2)
� Infrazioni(Codice,Data,Ag,Art,Prov,Num), Auto(Provincia,Targa,Prop,Indirizzo)
σProv=Provincia ∧ Num=Targa(Infrazioni ><Auto)
66
Theta-Join ed Equi-Join
Theta-join e equi-join sono più utili del join naturale
� Permettono di operare su relazioni senza attributi in comune
� Join naturale viene simulato mediante ridenominazione, equi-join e proiezione
67
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
R1><R2 =
πA,B,C,D(R1><B=B’∧C=C’(ρB’,C’←B,C(R2)))
68
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
R1><R2 =
πA,B,C,D(R1><B=B’∧C=C’(ρB’,C’←B,C(R2)))
Join naturale Equi-join
69
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
R1><R2 =
πA,B,C,D(R1><B=B’∧C=C’(ρB’,C’←B,C(R2)))
Si ridenomina R2 affinchè abbia attributi diversi da quelli di R1
70
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
………
DC’B’
R1 ρB’,C’←B,C(R2)
………
CBA
71
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
R1><R2 =
πA,B,C,D(R1><B=B’∧C=C’(ρB’,C’←B,C(R2)))
Equi-join tra R1 e R2 per selezionare tuple in corrispondenza
72
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
………
DC’B’
R1 ρB’,C’←B,C (R2)
………
CBA
R1><B=B’∧C=C’(ρB’,C’←B,C(R2))…
C
…
B’
…
C’
………
DBA
73
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
R1><R2 =
πA,B,C,D(R1><B=B’∧C=C’(ρB’,C’←B,C(R2)))
Proiezione del risultato per eliminare attributi ridondanti
74
Theta-Join ed Equi-Join
Per esempio: R1(A,B,C), R2(B,C,D)
………
DC’B’
R1 ρB’,C’←B,C (R2)
………
CBA
R1><B=B’∧C=C’(ρB’,C’←B,C(R2))…
C
…
B’
…
C’
………
DBA
πA,B,C,D(R1><B=B’∧C=C’(ρB’,C’←B,C(R2)))…
C
………
DBA
75
Esercizi
Che cos’è Studenti∪Lavoratori?
Reale
Neri
Bruni
Cognome
Carla456123
Dario654321
Andrea123456
NomeMatricola
Reale
Neri
Bianco
Cognome
Carla456123
Dario654321
Giovanni321654
NomeMatricola
Studenti
Lavoratori
76
Esercizi
Che cos’è Studenti∩Lavoratori?
Reale
Neri
Bruni
Cognome
Carla456123
Dario654321
Andrea123456
NomeMatricola
Reale
Neri
Bianco
Cognome
Carla456123
Dario654321
Giovanni321654
NomeMatricola
Studenti
Lavoratori
77
Esercizi
Che cos’è Studenti - Lavoratori?
Reale
Neri
Bruni
Cognome
Carla456123
Dario654321
Andrea123456
NomeMatricola
Reale
Neri
Bianco
Cognome
Carla456123
Dario654321
Giovanni321654
NomeMatricola
Studenti
Lavoratori
78
Esercizi
Che cos’è ρNumero←Matricola(Studenti)?
Reale
Neri
Bruni
Cognome
Carla456123
Dario654321
Andrea123456
NomeMatricolaStudenti
79
Esercizi
Che cos’è σVoto>25(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
80
Esercizi
Che cos’è σVoto>25 ∧ Eta<23(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
81
Esercizi
Che cos’è σVoto>25 ∨ Eta<23(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
82
Esercizi
Che cos’è πCognome,Nome(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
83
Esercizi
Che cos’è πVoto(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
84
Esercizi
Che cos’è πNome,Voto(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
85
Esercizi
Che cos’è πCognome,Nome,Età,Voto(Studenti)?
Carla
Dario
Dario
Nome
20
23
21
Età
22
29
29
Voto
Reale
Neri
Bruni
CognomeStudenti
86
Esercizi
Che cos’è Studenti >< Esami ?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia123456
456123
654321
123456
Matricola
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
87
Esercizi
Che cos’è Studenti >< Esami ?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia123456
456123
654321
123456
Numero
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
88
Esercizi
Che cos’è Studenti >< Esami ?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia654123
876987
901234
789456
Matricola
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
89
Esercizi
Che cos’è Studenti >< Lavoratori ?
Reale
Neri
Bruni
Cognome
Carla456123
Dario654321
Andrea123456
NomeMatricola
Reale
Neri
Bianco
Cognome
Carla456123
Dario654321
Giovanni321654
NomeMatricola
Studenti Lavoratori
90
Esercizi
Studenti >< Esami è un join completo?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia123456
456123
654321
123456
Matricola
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
91
Esercizi
Che cos’è Studenti ><LEFT Esami?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia987654
456123
654321
987654
Matricola
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
92
Esercizi
Che cos’è Studenti ><FULL Esami?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia987654
456123
654321
987654
Matricola
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
93
Esercizi
Che cos’è Studenti ><Matricola=Studente Esami?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia987654
456123
654321
987654
Studente
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
94
Esercizi
Che cos’è Studenti ><Voto>25 Esami?
456123
654321
123456
Matricola
Carla
Dario
Dario
Nome
Reale
Neri
Bruni
Cognome
Studenti
23Psicologia987654
456123
654321
987654
Matricola
22
29
29
Voto
Psicologia
Psicologia
Informatica
Corso
Esami
95
Interrogazioni con Algebra Relazionale
Dato uno schema R(Y), un’interrogazione è una funzione che, per ogni istanza r di R(Y), produce una relazione su un dato insieme di attributi X
Le espressioni di un linguaggio di interrogazione (per esempio, algebra relazionale), permettono di realizzare interrogazioni su un DB
E(r): risultato dell’applicazione dell’espressione E al DB r
E(r) è una relazione
96
Esempi di Interrogazioni: 1
3.25050Mario Rossi375
3.50034Sergio Rossi301
3.50044Nico Bini252
3.00050Siro Bisi231
3.00049Marco Celli210
1.70044Nico Bini105
3.05038Luigi Neri104
1.75023Mario Bianchi103
2.00034Mario Rossi101
StipEtàNomeMatr
252375
231301
210301
105231
104210
103210
101210
ImpiegatoCapo
Impiegati Supervisione
Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000
97
Esempi di Interrogazioni: 1
Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000
πMatr,Nome,Età(σStip>2.000(Impiegati))
98
Esempi di Interrogazioni: 1
Trovare matricola, nome ed età degli impiegati che guadagnano più di 2.000
50Mario Rossi375
34Sergio Rossi301
44Nico Bini252
50Siro Bisi231
49Marco Celli210
38Luigi Neri104
34Mario Rossi101
EtàNomeMatr
99
Esempi di Interrogazioni: 2
Trovare gli impiegati che guadagnano piùdel loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo
1. Definire relazione R che lega (join) la descrizione degli impiegati alla descrizione del capo
Per non confondere gli attributi dell’impiegato e del capo bisogna ridenominare una delle due relazioni
100
Esempi di Interrogazioni: 2
Trovare gli impiegati che guadagnano piùdel loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo
2. Selezionare le tuple di R nelle quali lo stipendio dell’impiegato è superiore a quello del capo
101
Esempi di Interrogazioni: 2
Trovare gli impiegati che guadagnano piùdel loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo
3. Proiettare risultato su attributo Matr, Nome e Stip di impiegato e sui corrispettivi (ridenominati) di capo
102
Esempi di Interrogazioni: 2
1. Definire relazione R che lega la descrizione di impiegati a descrizione di capo
a) Definire relazione R1 che descrive gli impiegati di ciascun capo
� Schema: R1(Matr,Nome,Età,Stip,Capo,Impiegato)
R1 = Impiegati ><Matr=Impiegato Supervisione
103
Esempi di Interrogazioni: 2
R1 = Impiegati ><Matr=Impiegato Supervisione
3.500
3.000
3.000
1.700
3.050
1.750
2.000
Stip
375
301
301
231
210
210
210
Capo
252
231
210
105
104
103
101
Impiegato
44Nico Bini252
50Siro Bisi231
49Marco Celli210
44Nico Bini105
38Luigi Neri104
23Mario Bianchi103
34Mario Rossi101
EtàNomeMatr
R1
104
Esempi di Interrogazioni: 2
1.b) Definire relazione R che descrive impiegati e
capo: per non confondere gli attributi dell’impiegato e del capo ridenominareimpiegati
R2=ρMatrC,NomeC,EtàC,StipC←Matr,Nome,Età,Stip(Impiegati)
R = R1 ><Capo=MatrC R2
105
Esempi di Interrogazioni: 2
R2=ρMatrC,NomeC,EtàC,StipC←Matr,Nome,Età,Stip(Impiegati)
3.25050Mario Rossi375
3.50034Sergio Rossi301
3.50044Nico Bini252
3.00050Siro Bisi231
3.00049Marco Celli210
1.70044Nico Bini105
3.05038Luigi Neri104
1.75023Mario Bianchi103
2.00034Mario Rossi101
StipCEtàCNomeCMatrC
R2
106
Esempi di Interrogazioni: 2
R = R1 ><Capo=MatrC R2
252
231
210
105
104
103
101
Impiegato
375
301
301
231
210
210
210
MatrC
Mario Rossi
Sergio Rossi
Sergio Rossi
Siro Bisi
Marco Celli
Marco Celli
Marco Celli
NomeC
50
34
34
50
49
49
49
EtàC
3.250
3.500
3.500
3.000
3.000
3.000
3.000
StipC
3.500
3.000
3.000
1.700
3.050
1.750
2.000
Stip
375
301
301
231
210
210
210
Capo
44Nico Bini252
50Siro Bisi231
49Marco Celli210
44Nico Bini105
38Luigi Neri104
23Mario Bianchi103
34Mario Rossi101
EtàNomeMatr
R
107
Esempi di Interrogazioni: 2
1.b) Definire relazione R che descrive impiegati e
capo: per non confondere gli attributi dell’impiegato e del capo ridenominareimpiegati
R2=ρMatrC,NomeC,EtàC,StipC←Matr,Nome,Età,Stip(Impiegati)
R = R1 ><Capo=MatrC R2
(Impiegati ><Matr=Impiegato Supervisione) ><Capo=MatrC
ρMatrC,NomeC,EtàC,StipC←Matr,Nome,Età,Stip(Impiegati)
108
Esempi di Interrogazioni: 2
2. Selezionare le tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:
σStip>StipC(R)
252
104
Impiegato
375
210
MatrC
Mario Rossi
Marco Celli
NomeC
50
49
EtàC
3.250
3.000
StipC
3.500
3.050
Stip
375
210
Capo
44Nico Bini252
38Luigi Neri104
EtàNomeMatr
109
Esempi di Interrogazioni: 2
2. Selezionare tuple in R in cui lo stipendio dell’impiegato è superiore a quello del capo:
σStip>StipC(R)
σStip>StipC((Impiegati ><Matr=ImpiegatoSupervisione) ><Capo=MatrC
ρMatrC,NomeC,EtàC,StipC←Matr,Nome,Età,Stip(Impiegati))
110
Esempi di Interrogazioni: 2
3. Proiettare σStip>StipC(R) su attributi richiesti:
πMatr,Nome,Stip,MatrC,NomeC,StipC(σStip>StipC(R))
375
210
MatrC
Mario Rossi
Marco Celli
NomeC
3.250
3.000
StipC
3.500
3.050
Stip
Nico Bini252
Luigi Neri104
NomeMatr
111
Esempi di Interrogazioni: 2
πMatr,Nome,Stip,MatrC,NomeC,StipC(σStip>StipC((Impiegati ><Matr=ImpiegatoSupervisione)
><Capo=MatrC
ρMatrC,NomeC,EtàC,StipC←Matr,Nome,Età,Stip(Impiegati)))
Trovare gli impiegati che guadagnano piùdel loro capo, mostrando matricola, nome e stipendio di ciascuno di essi e del capo
112
Esempi di Interrogazioni: 3
Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 2.000
Quantificazione universale non e’ presentetra gli operatori dell’algebra relazionale
1. Selezionare capi che hanno impiegati con stipendio < 2.000
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati)))
113
Esempi di Interrogazioni: 3
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati)))
1.70044Nico Bini105
1.75023Mario Bianchi103
StipEtàNomeMatr
1.700
1.750
Stip
231
210
Capo
105
103
Impiegato
44Nico Bini105
23Mario Bianchi103
EtàNomeMatr
231
210
Capo
σStip<2.000(Impiegati)
Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati))
πCapo(Supervisione ><Matr=Impiegato
(σStip<2.000(Impiegati)))
Capi che hannoimpiegati con stipendio<2.000
114
Esempi di Interrogazioni: 3
2. Sottrarre tali capi all’insieme di tutti i capi
πCapo(Supervisione) –
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati)))
115
Esempi di Interrogazioni: 3
πCapo(Supervisione) –
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati)))
375
301
231
210
Capo πCapo(Supervisione) πCapo(Supervisione) –
πCapo(Supervisione
><Matr=Impiegato
(σStip<2.000(Impiegati)))
375
301
Capo
116
Esempi di Interrogazioni: 3
3.250
3.500
Stip
375
301
Capo
50Mario Rossi375
34Sergio Rossi301
EtàNomeMatr
3. Recuperare le informazioni relative ai capi dalla relazione Impiegati
Impiegati ><Matr=Capo
(πCapo(Supervisione) –
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati))))
117
Esempi di Interrogazioni: 3
Mario Rossi375
Sergio Rossi301
NomeMatr
4. Proiettare sulle informazioni richieste dall’interrogazione (numero di matricola e nome del capo)
πMatr,Nome(Impiegati ><Matr=Capo
(πCapo(Supervisione) –
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati)))))
118
Esempi di Interrogazioni: 3
Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di 2.000
πMatr,Nome(Impiegati ><Matr=Capo
(πCapo(Supervisione) –
πCapo(Supervisione ><Matr=Impiegato(σStip<2.000(Impiegati)))))
119
Algebra con valori nulli
Come applicare espressioni di algebra relazionale in presenza di tuple con valori nulli?
Per esempio: σEtà>30(Impiegati)� Quando nella relazione Impiegati non si conosce l’età di
alcune persone: le tuple 104 e 219 devono essere selezionate?
3.000NULLMarco Celli210
1.70044Nico Bini105
3.050NULLLuigi Neri104
1.75023Mario Bianchi103
2.00034Mario Rossi101
StipEtàNomeMatr
120
Algebra con valori nulli
Logica a 3 valori per il trattamento di valori veri, falsi, sconosciuti: V, F, U (unknown)
Un predicato assume valore U quando uno dei termini del confronto ha valore nullo
Tabelle di verità dei connettivi: AND, OR, NOT
FFFF
FUUU
FUVV
FUVAND
FUVF
UUVU
VVVV
FUVOR
VF
UU
FV
NOT
121
Algebra con valori nulli
Poiché ragionare su valori nulli è complesso, adottiamo un approccio semplificato al trattamento del valore nullo nelle espressioni dell’algebra relazionale
Definiamo due nuove condizioni atomiche di selezione: dato un attributo A� A IS NULL: vera su tupla t se il valore di t su A ènullo; falsa se il valore è specificato
� A IS NOT NULL: vera su t se valore di t su A èspecificato, falsa altrimenti
122
Algebra con valori nulli
Interpretiamo le condizioni di selezione in modo restrittivo, escludendo dalla selezione le tuple con valore U, a meno che non sia esplicitamente incluso nella selezione
123
Algebra con valori nulli
Per esempio:
� σEtà>30(Impiegati) – le tuple con Età nullnon vengono selezionate (su di esse la condizione Età>30 assume valore U)
� σEtà>30 ∨ Età IS NULL(Impiegati) – si includono anche le tuple con Età sconosciuta (104, 210 in relazione Impiegati)
124
Viste
Relazioni derivate definite su relazioni di schema logico
� Viste materializzate (con tuple memorizzate in DB)
� Relazioni virtuali, o viste (memorizzate in DB mediante espressioni del linguaggio di interrogazione, senza memorizzazione di tuple)
125
Viste
DBMS offrono solo relazioni virtuali (no ridondanza dei dati)
Interrogazioni che utilizzano viste sono risolte sostituendo la definizione delle viste alle loro occorrenze
126
Viste
Per esempio:
� R1(A,B,C), R2(C,D,E), R3(E,G)
� Vista: R = σA>D(R1 >< R2)
� Interrogazione: σB=G(R >< R3) risolta così:
σB=G(σA>D(R1 >< R2) >< R3)
127
Viste
Viste utili per:� Permettere ad applicazioni di utilizzare relazioni che contengono solo le informazioni di interesse
� Se lo schema del DB viene ristrutturato, ricreare relazioni eliminate per evitare di modificare le applicazioni che le usavano� Per esempio: R(A,B,C) sostituita in DB da R1(A,B), R2(B,C), e definiamo vista R= R1><R2
128
Esercizi1. Considerare lo schema di base di dati contenente le relazioni:
FILM(CodFilm,Titolo,Regista,Anno,CostoNoleggio)ARTISTI(CodAttore,Cognome,Nome,Sesso,DataNascita,Nazionalita)INTERPRETAZIONI(CodFilm,CodAttore,Personaggio)
Formulare in algebra relazionale le interrogazioni che trovino:
1) I titoli dei film nei quali Henry Fonda sia stato interprete;2) I titoli dei film per i quali il regista sia stato anche interprete;3) I titoli dei film in cui recitano attori italiani;4) I titoli di tutti i film in cui Robert Redford è attore specificando
che personaggio interpreta;5) I titoli dei film in cui gli attori siano tutti dello stesso sesso;6) Nome e cognome degli attori che hanno recitato insieme (in
coppia) in almeno un film e specificare il titolo del film.
129
Esercizi2. Considerare lo schema di base di dati contenente le relazioni:
DEPUTATI(Codice,Cognome,Nome,Commissione,Provincia,Collegio)COLLEGI(Provincia,Numero,Nome)
PROVINCE(Sigla,Nome,Regione) REGIONI(Codice,Nome)COMMISSIONI(Numero,Nome,Presidente)
Formulare in algebra relazionale le interrogazioni che trovino:
1) Nome e cognome dei presidenti di commissioni cui partecipaalmeno un deputato eletto in una provincia della Sicilia;
2) Nome e cognome dei deputati della commissione Bilancio;3) Nome, cognome, provincia e regione di elezione dei deputati
della commissione Bilancio;4) Le regioni in cui vi sia un solo collegio, indicando il nome e
cognome del deputato ivi eletto.130
Esercizi3. Considerare lo schema di base di dati contenente le relazioni:
CORSO(Codice,Denominazione,Professore)STUDENTI(Matricola,Cognome,Nome)
PROFESSORI(Matricola,Cognome,Nome)ESAMI(Studente,Corso,Voto,Data)
Formulare in algebra relazionale le interrogazioni che trovino:
1) Gli esami superati dallo studente Pico Della Mirandola(supposto unico), con indicazione della denominazione del corso, del voto e del cognome del professore;
2) Nome e cognome degli studenti che hanno riportato in almeno un esame un voto pari a 30 dopo il 01/01/2006;
3) Nome e cognome dei professori che non hanno maiassegnato un voto maggiore di 28.