Algebra relazionale
Accesso ai dati di un DB
Aggiornamento di DB: funzione che,
data istanza di DB, produce altra istanza
di 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)
Accesso ai dati di un DB
Aggiornamento e interrogazione
vengono effettuati usando specifici
linguaggi
Per esempio: algebra relazionale
Algebra relazionale
Linguaggio procedurale di accesso a DB
Si specificano operazioni complesse
descrivendo procedimento da usare per
ottenere soluzione
Interrogazioni: espressioni complesse
Algebra relazionale
Algebra relazionale: basata su insieme di
operatori
Definiti su relazioni
Producono relazioni come risultati
Operatori
Insiemistici: unione, intersezione, differenza
Specifici: ridenominazione, selezione, proiezione,
join
Operatori insiemistici
Relazioni: insiemi di tuple omogenee, cioè
definite sigli 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
Unione di relazioni
Date due relazioni r1(X) e r2(X) definite
sullo stesso insieme di attributi X
r1r2: relazione su X che contiene
tuple appartenenti a r1 oppure a r2
oppure a entrambe
Unione di relazioni
Laureati
Dirigenti
Matricola
Cognome Età
Matricola
Cognome Età
7274
Rossi
37
9297
Neri
56
7432
Neri
39
7432
Neri
39
9824
Verdi
38
9824
Verdi
38
Matricola
Cognome Età
7274
Rossi
37
7432
Neri
39
9297
Neri
56
9824
Verdi
38
Laureati
Dirigenti
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
Differenza di relazioni
Laureati
Dirigenti
Matricola
Cognome Età
Matricola
Cognome Età
7274
Rossi
37
9297
Neri
56
7432
Neri
39
7432
Neri
39
9824
Verdi
38
9824
Verdi
38
Matricola
Cognome Età
7274
Rossi
37
Laureati
-
Dirigenti
Intersezione di relazioni
Date due relazioni r1(X) e r2(X) definite
sullo stesso insieme di attributi X
r1r2: relazione su X che contiene
tuple appartenenti sia a r1 che a r2
Intersezione di relazioni
Laureati
Dirigenti
Matricola
Cognome Età
Matricola
Cognome Età
7274
Rossi
37
9297
Neri
56
7432
Neri
39
7432
Neri
39
9824
Verdi
38
9824
Verdi
38
Matricola
Cognome Età
7432
Neri
39
9824
Verdi
38
Laureati
Dirigenti
Operatori di manipolazione di
relazioni
Specifici dell’algebra relazionale (non
derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per
creare nuove relazione
Ridenominazione
Selezione
Proiezione
Join
Operatori di manipolazione di
relazioni
Specifici dell’algebra relazionale (non
derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per
creare nuove relazione
Ridenominazione
Selezione
Proiezione
Join
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
Ridenominazione di relazioni
Per esempio:
Maternità
Paternità
Padre
Figlio
Madre
Figlio
Adamo
Caino
Eva
Caino
Adamo
Abele
Eva
Set
Abramo
Isacco
Sara
Isacco
Abramo
Ismaele
Agar
Ismaele
Paternità
Maternità ?
Ridenominazione di relazioni
Una ridenominazione:
GenitorePadre(Paternità)
Paternità
Padre
Figlio
Genitore
Figlio
Adamo
Caino
Adamo
Caino
Adamo
Abele
Adamo
Abele
Abramo
Isacco
Abramo
Isacco
Abramo
Ismaele
Abramo
Ismaele
Ridenominazione di relazioni
Una ridenominazione:
GenitorePadre
(Paternità)
GenitorePadre
(Paternità)
Paternità
Padre
Figlio
Genitore
Figlio
Adamo
Caino
Adamo
Caino
Adamo
Abele
Adamo
Abele
Abramo
Isacco
Abramo
Isacco
Abramo
Ismaele
Abramo
Ismaele
Ridenominazione di relazioni
Una ridenominazione:
GenitorePadre
(Paternità)
GenitorePadre
(Paternità)
Paternità
Padre
Figlio
Genitore
Figlio
Adamo
Caino
Adamo
Caino
Adamo
Abele
Adamo
Abele
Abramo
Isacco
Abramo
Isacco
Abramo
Ismaele
Abramo
Ismaele
Ridenominazione di relazioni
Un’altra ridenominazione:
GenitoreMadre(Maternità)
Maternità
Madre
Figlio
Genitore
Figlio
Eva
Caino
Eva
Caino
Eva
Set
Eva
Set
Sara
Isacco
Sara
Isacco
Agar
Ismaele
Agar
Ismaele
Ridenominazione di relazioni
GenitorePadre(Paternità)
GenitoreMadre(Maternità)
Genitore
Figlio
Adamo
Caino
Adamo
Abele
Abramo
Isacco
Abramo
Ismaele
Eva
Caino
Eva
Set
Sara
Isacco
Agar
Ismaele
Corretta
applicazione
di unione
relazioni
Ridenominazione di relazioni
Imp
Cognome Agenzia Stipendio
Rossi
Roma
45
Neri
Milano
53
Ridenominazione di relazioni
Imp
Op
Cognome Agenzia Stipendio
Cognome Fabbrica Salario
Rossi
Roma
45
Verdi
Latina
33
Neri
Milano
53
Bruni
Monza
32
Ridenominazione di relazioni
Imp
Op
Cognome Agenzia Stipendio
Cognome Fabbrica Salario
Rossi
Roma
45
Verdi
Latina
33
Neri
Milano
53
Bruni
Monza
32
Sede,RetribuzioneAgenzia,Stipendio(Imp)
Sede,RetribuzioneFabbrica,Salario(Op)
Cognome Sede
Retribuzione
Rossi
Roma
45
Neri
Milan
o
53
Verdi
Latina 33
Bruni
Monza 32
Ridenominazione di relazioni
Sia r(X) è la schema di una relazione r
definita su insieme X={A1,…,Ak}
… e sia Y un insieme di attributi Y={B1,…,Bk}
La ridenominazione B1,..,BkA1,…,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 1ik
Ridenominazione di relazioni
Di solito, si indicano nelle
ridenominazione solo attributi
ridenominati (quelli per cui Ai Bi)
GenitorePadre(Paternità): omesso Figlio
Ridenominazione di relazioni
Che cos’è Studenti MatricolaNumero(Docenti)?
Studenti
Docenti
Cognome Matricola
Rossi
32
Neri
56
Cognome Numero
Bianchi
78
Neri
23
Operatori di manipolazione di
relazioni
Specifici dell’algebra relazionale (non
derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per
creare nuove relazione
Ridenominazione
Selezione
Proiezione
Join
Selezione
Data relazione r su insieme di attributi
X, selezione F(r) produce relazione su
attributi X che contiene tuple di r che
soddisfano la condizione di selezione F
A
B
C
A
Selezione
secondo F
F(r)
B
C
Selezione
F formula proposizionale: condizione di
selezione formata da
Operatori booleani:
(AND),
(OR),
(NOT)
Selezione
F formula proposizionale: condizione di
selezione formata da
Operatori booleani
Condizione atomiche: termine che possono
contenere
Confronti fra attributi (per esempio,
Stipendio>Tasse, dove Stipendio e Tasse sono
attributi)
Confronti fra attributi e constanti (per esempio,
Età 60, dove Età è un attributo)
Selezione
Impiegati
Cognome Nome Età Stipendio
Rossi
Neri
Verdi
Rossi
Mario
Luca
Nico
Marco
25
40
36
40
1.000,00
1.500,00
2.250,00
1.900,00
Età>30Stipendio>2.000,00(Impiegati)
Cognome Nome Età Stipendio
Verdi
Nico
36 2.250,00
Selezione
Impiegati
Cognome Nome Età Stipendio
Rossi
Neri
Verdi
Rossi
Mario
Luca
Nico
Marco
25
40
36
40
1.000,00
1.500,00
2.250,00
1.900,00
Età>30Stipendio>2.000,00(Impiegati)
Età>30Stipendio>2.000,00
(Impiegati)
Cognome Nome Età Stipendio
Verdi
Nico
36 2.250,00
Selezione
Che cos’è Età>30(Impiegati)?
Impiegati
Cognome
Rossi
Neri
Verdi
Rossi
Nome
Mario
Luca
Nico
Marco
Età
25
40
36
40
Stipendio
1.000,00
1.500,00
2.250,00
1.900,00
Selezione
Che cos’è
Cognome=“Rossi” ( Nome=“Nico”)(Impiegati)?
Impiegati
Cognome
Rossi
Neri
Verdi
Rossi
Nome
Mario
Luca
Nico
Marco
Età
25
40
36
40
Stipendio
1.000,00
1.500,00
2.250,00
1.900,00
Operatori di manipolazione di
relazioni
Specifici dell’algebra relazionale (non
derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per
creare nuove relazione
Ridenominazione
Selezione
Proiezione
Join
Proiezione
Data relazione r su 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
A
Proiezione
su Y
Y(r)
B
Proiezione
Per esempio:
Impiegati(Cognome,Nome,Reparto,Capo)
Cognome,Nome(Impiegati) ha attributi Cognome,
Nome
Relazioni non devono contenere tuple ripetute
Tuple uguali collassano in una sola
Proiezione
Impiegati
Cognome Nome Reparto Capo
Rossi
Neri
Verdi
Rossi
Reparto,Capo(Impiegati)
Mario
Luca
Nico
Marco
Vendite
Vendite
Personale
Personale
Reparto Capo
Vendite
De Rossi
Personale Baldi
De Rossi
De Rossi
Baldi
Baldi
Proiezione
Che cos’è Cognome, Nome(Impiegati)?
Impiegati
Cognome Nome Reparto Capo
Rossi
Mario Vendite
De Rossi
Neri
Luca Vendite
De Rossi
Verdi
Rossi
Nico
Personale Baldi
Marco Personale Baldi
Proiezione
Che cos’è Capo(Impiegati)?
Impiegati
Cognome Nome Reparto Capo
Rossi
Mario Vendite
De Rossi
Neri
Luca Vendite
De Rossi
Verdi
Rossi
Nico
Personale Baldi
Marco Personale Baldi
Tuple di una proiezione
Una proiezione Y(r) contiene al più tante
tuple quante 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)
Vice versa: se Y(r) contiene tante tuple
quante r, allora Y è una superchiave di r
Operatori di manipolazione di
relazioni
Specifici dell’algebra relazionale (non
derivano dalle teoria degli insiemi)
Permettono di manipolare relazioni per
creare nuove relazione
Ridenominazione
Selezione
Proiezione
Join
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
Join Naturale
Permette di correlare dati contenuti in
relazioni diverse confrontando attributi con
stesso nome
Produce una relazione definita su 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
Join Naturale
Date r1(X) e r2(Y), r1r2 è relazione
su XY:
r1r2={t su XY | t[X]r1 e t[Y]r2}
Join Naturale
Rel1
Rel2
Impiegato Reparto
Reparto
Rossi
Vendite
Produzione Mori
Neri
Produzione
Vendite
Bianchi
Produzione
Rel1(Impiegato,Reparto)
X
Capo
De Rossi
Rel2(Reparto,Capo)
Y
Join Naturale
Rel1
Rel2
Impiegato Reparto
Reparto
Rossi
Vendite
Produzione Mori
Neri
Produzione
Vendite
Bianchi
Produzione
Rel1
Rel2
Capo
De Rossi
Impiegato Reparto
Capo
Rossi
Vendite
De Rossi
Neri
Produzione Mori
Bianchi
Produzione Mori
Join Naturale
Rel1
Rel2
Impiegato Reparto
Reparto
Rossi
Vendite
Produzione Mori
Neri
Produzione
Vendite
Bianchi
Produzione
Rel1
Rel2
Capo
De Rossi
Impiegato Reparto
Capo
Rossi
Vendite
De Rossi
Neri
Produzione Mori
Bianchi
Produzione Mori
Join Naturale
Se relazioni da combinare definite su
stesso insieme di attributi, r1(X), r2(X)
… r1r2 = r1r2
Cioè il join coincide con intersezione:
combina tuple con stessi valori di attributi
su r1 e r2
Join Naturale
Rel1
Rel2
Reparto
Capo
Reparto
Capo
Acquisti
Baldi
Contabilità Tilli
Produzione Mori
Produzione Mori
Vendite
Vendite
Rel1
De Rossi
Rel2
Reparto
Capo
Vendite
De Rossi
Produzione Mori
De Rossi
Join Naturale
Rel1
Rel2
Reparto
Capo
Reparto
Capo
Acquisti
Baldi
Contabilità Tilli
Produzione Mori
Produzione Mori
Vendite
Vendite
Rel1
De Rossi
Rel2
Reparto
Capo
Vendite
De Rossi
Produzione Mori
De Rossi
Join Naturale
Se relazioni da combinare definite su
insiemi di attributi disgiunti, r1(X), r2(Y)
con XY=
… condizione di corrispondenza tra
tuple è sempre vera
… r1r2=r1xr2 (prodotto cartesiano)
Combina tutte le tuple di r1 con tutte
quelle di r2
Join Naturale
Rel1
Rel2
Reparto
Capo
Impiegato Progetto
Acquisti
Baldi
Mori
P123
Produzione
Mori
Baldi
R124
Rel1
Rel2
Reparto
Capo
Impiegato Progetto
Acquisti
Baldi
Mori
P123
Acquisti
Baldi
Baldi
R124
Produzione Mori
Mori
P123
Produzione Mori
Bianchi
R124