Sei sulla pagina 1di 45

DB -Algebra Relazionale 1

ALGEBRA
RELAZIONALE
DB -Algebra Relazionale 2
LINGUAGGI PER MODELLI
RELAZIONALI
Algebrici: una query definita da
unespressione algebrica sulle relazioni
dello schema
Logici: una query definita da una formula
della logica del primo ordine
DB -Algebra Relazionale 3
ESEMPIO DI QUERY
NOME MATRICOL INDIRIZZO TELEFONO
Mario Rossi 123456 Via Etnea 1 222222
Ugo Bianchi 234567 Via Roma 2 333333
Teo Verdi 345678 Via Enna 3 444444

CORSO MATRICOLA VOTO
Programmazione 345678 27
Architetture 123456 30
Programmazione 234567 18
Matematica
Discreta
345678 22
Architettura 345678 30

CORSO PROFESSORE
Programmazione Ferro
Architetture Pappalardo
Matematica Discreta Lizzio

Quali Professori hanno
dato piu' di 24 a Teo
Verdi ed in quali corsi?
PROFESSORE CORSO
Programmazione Ferro
Architetture Pappalardo


DB -Algebra Relazionale 4
Algebra relazionale
Un set di operatori che
ESono definiti sulle relazioni
EProducono come risultato una relazione
Gli operatori possono essere combinati
per formare espressioni complesse
Esecuzione procedurale
DB -Algebra Relazionale 5
Operatori dellalgebra relazionale
Gli operatori primitivi dellAlgebra Relazionale
sono:
E Ridenominazione;
E Unione;
E Differenza;
E Proiezione;
E Restrizione (o Selezione);
E Prodotto.
I simboli R,S,... denotano relazioni, A,
B,attributi e X,Y,insiemi di attributi
DB -Algebra Relazionale 6
Ridenominazione
Operatore unario
Modifica il nome di un attributo senza cambiarne
il valore
Definizione:
E Siano X gli attributi di R, A in X, B not in X .
E Allora -
A4B
(R) con attributi (X-{A}){B}
E -
A4B
(R)={t | u )R t[B] = u[A] * t[C]=u[C] se C e
diverso da B}.
DB -Algebra Relazionale 7
Esempio Ridenominazione
Corso Matricola Voto
Programmazione 123456 27
EINN 23456 28




Corso Codice Studente Voto
Programmazione 123456 27
EINN 23456 28


-
Matricola 4 Codice Studente
(Esami)
DB -Algebra Relazionale 8
Unione, Differenza e Intersezione
Le relazioni sono degli insiemi, quindi possiamo
applicare gli operatori sugli insiemi
Il risultato devessere un set omogeneo di n-uple
E Quindi, applichiamo gli operatori sui set solo fra
relazioni con gli stessi attributi
Siano R ed S relazioni dello stesso tipo allora
E RS = {t | t )R t ) S}
E R-S = {t | t )R * tS}
E R^S = {t | t )R * t ) S}
DB -Algebra Relazionale 9
Esempio Unione
DB -Algebra Relazionale 10
Esempio Intersezione
DB -Algebra Relazionale 11
Esempio Differenza
DB -Algebra Relazionale 12
Un esempio utile ma non fattibile
Father e Mother sono attributi con nomi
diversi ma entrambi sono Genitori
Soluzione: ridenominare gli attributi
DB -Algebra Relazionale 13
Ridenominazione e Unione
-
Father4Parent
(Paternity) -
Mother4Parent
(Maternity)

DB -Algebra Relazionale 14
Proiezione
Produce risultati:
E Su un sottoinsieme degli attributi delloperando
E Con valori da tutte le n-uple della relazione
Definizione
E Sia R una relazione e siano A
1
, A
2
,, A
n
alcuni suoi
attributi allora:
E O
A1, A2,, An
(R) = {t[A
1
, A
2
,, A
n
] | t)R}
La cardinalita di O
A1, A2,, An
(R) puo essere
minore di R nel caso di duplicati
DB -Algebra Relazionale 15
Esempio Proiezione
Proiezione
DB -Algebra Relazionale 16
Unaltro esempio di proiezione
Si riduce la cardinalita del risultato rispetto alloperando
DB -Algebra Relazionale 17
Selezione (Restrizione)
Produce risultati:
E Con lo stesso schema delloperando
E Con un sottoinsieme delle n-uple delloperando
Quelle che soddisfano la condizione
Definizione
E Sia R una relazione allora
E

(R) = {t | t )R * (t)}
dove e una formula proposizionale costruita a partire dagli atomi
A O B e utilizzando i connettivi proposizionali ,,*
E A e B sono attributi di R o costanti
E O ) {=,<, >, , , }
DB -Algebra Relazionale 18
Esempio Selezione
Selezione
DB -Algebra Relazionale 19
Un altro esempio di Selezione
DB -Algebra Relazionale 20
Prodotto (Cartesiano)
Siano R(A
1
: T
1
,, A
n
: T
n
) ed S (A
n+1
: T
n+1
,,
A
n+m
: T
n+m
) con {A
1
,, A
n
}^ {A
n+1
,, A
n+m
}=
;. Allora si pone
E R x S = {tu | t)R * u ) S}
DB -Algebra Relazionale 21
Esempio prodotto cartesiano
DB -Algebra Relazionale 22
Operatori Derivati
Sono operatori utili che si possono
esprimere in funzioni di quelli primitivi.
Intersezione: Siano R ed S dello stesso
tipo
ER^S = {t | t)R * t ) S}.
Essa si pu esprimere in funzione degli
operatori primitivi:
ER ^ S = R-(R-S)
DB -Algebra Relazionale 23
JOIN (Giunzione)
Loperatore piu importante dellalgebra
relazionale
Permette di combinare tuple da relazioni
diverse basandosi sui valori degli attributi
Fondamentalmente due tipi (piu qualche
variante):
ENatural JOIN
ETheta JOIN
DB -Algebra Relazionale 24
Natural JOIN
DB -Algebra Relazionale 25
Definizione del Natural JOIN
Sia R con attributi XY ed S con attributi YZ

R 1 S e una relazione di attributi XYZ costituita da
tutte le n-uple t tali che:

t[XY] ) R , t[YZ] ) S.

Quindi: R 1 S = {t | t[XY] ) R * t[YZ] ) S}
Cioe: le n-uple del risultato sono ottenute combinando
le n-uple di R e S che hanno gli stessi valori negli
attributi con lo stesso nome
DB -Algebra Relazionale 26
Un altro esempio di Natural JOIN
DB -Algebra Relazionale 27
Ancora un altro esempio di Natural Join
DB -Algebra Relazionale 28
JOIN incompleti
Nel caso in cui alcuni valori tra gli attributi
comuni non coincidono

Quindi, alcune n-uple non partecipano al JOIN
(dangling n-uple)

DB -Algebra Relazionale 29
JOIN vuoti, un caso estremo
Potrebbe anche succedere che nessuna
n-upla trovi il corrispettivo
DB -Algebra Relazionale 30
Laltro caso estremo del JOIN
Ogni n-upla di R
1
si combina con ogni n-upla di R
2
Cardinalita del risultato e il prodotto delle cardinalita
DB -Algebra Relazionale 31
OUTER JOIN (Giunzione esterna)
Una variante del JOIN per mantenere nel
risultato le n-uple che non partecipano al JOIN
Gli attributi delle dangling n-uple vengono
riempiti con NULL
Tre varianti:
E Left: solo dangling n-uple del primo operando
E Right: solo dangling n-uple del secondo operando
E Full: n-uple da entrambi gli operandi
DB -Algebra Relazionale 32
Esempio di NATURAL OUTER JOIN
DB -Algebra Relazionale 33
Proprieta del JOIN
Il JOIN e
ECommutativo: R 1 S = S 1 R
EAssociativo: (R 1 S) 1 T = R 1 (S 1 T)
Quindi possiamo avere sequenze di JOIN
senza rischio di ambiguita:

ER 1 S 1 T
DB -Algebra Relazionale 34
Esempio di JOIN multipli
DB -Algebra Relazionale 35
Prodotto cartesiano a partire dal
JOIN
Il JOIN e definito anche se non ci sono attributi
comuni fra le relazioni
In questo caso, non essendoci vincoli sulle tuple
da selezionare, vengono selezionate tutte le
tuple dalle relazioni del JOIN
Prodotto cartesiano
DB -Algebra Relazionale 36
Esempio di prodotto cartesiano
generato dal JOIN
DB -Algebra Relazionale 37
Theta-JOIN e Equi-JOIN
Estensione del NATURAL JOIN
Viene specificato un predicato per la selezione
delle n-uple
E un operatore derivato:

E R 1
F

S =
F

(R x S)
Se F e una congiunzione di uguaglianze si parla
di equi-JOIN
DB -Algebra Relazionale 38
Esempio di equi-JOIN
DB -Algebra Relazionale 39
Query (interrogazioni)
Lalgebra relazionale puo quindi essere
usata per interrogare una base di dati
Una query e una funzione da una istanza
di un database (insieme di relazioni) ad
una relazione
DB -Algebra Relazionale 40
Database di esercitazione
DB -Algebra Relazionale 41
Esercizio 1
Trovare numero, nome ed eta di tutti gli impiegati che
guadagnano piu di 40 mila euro

DB -Algebra Relazionale 42
Esercizio 2
Trovare il numero dei responsabili degli impiegati che
guadagnano piu di 40 mila euro

DB -Algebra Relazionale 43
Esercizio 3
Trovare nome e salario dei responsabili degli impiegati
che guadagnano piu di 40 mila euro.

DB -Algebra Relazionale 44
Esercizio 4
Trovare gli impiegati che guadagnano piu dei loro responsabili e
visualizzare numero, nome e salario sia dellimpiegato che del
responsabile

DB -Algebra Relazionale 45
Esercizio 5
Trovare numero e nome dei responsabili i cui impiegati
guadagnano TUTTI piu di 40 mila euro