ALGEBRA
RELAZIONALE
DB -Algebra Relazionale
1
ESEMPIO DI QUERY
NOME
Mario Rossi
Ugo Bianchi
Teo Verdi
MATRICOL
123456
234567
345678
CORSO
Programmazione
Architetture
Matematica Discreta
INDIRIZZO
Via Etnea 1
Via Roma 2
Via Enna 3
TELEFONO
222222
333333
444444
PROFESSORE
Ferro
Pappalardo
Lizzio
CORSO
Programmazione
Architetture
Programmazione
Matematica
Discreta
Architettura
MATRICOLA
345678
123456
234567
345678
VOTO
27
30
18
22
345678
30
Quali Professori hanno
dato piu' di 24 a Teo
Verdi ed in quali corsi?
PROFESSORE CORSO
Programmazione Ferro
Architetture
Pappalardo
DB -Algebra Relazionale
2
Algebra relazionale
Un set di operatori che
Sono
definiti sulle relazioni
Producono come risultato una relazione
Gli operatori possono essere combinati
per formare espressioni complesse
Esecuzione procedurale
DB -Algebra Relazionale
3
Operatori dell’algebra relazionale
Gli operatori primitivi dell’Algebra Relazionale
sono:
Ridenominazione;
Unione;
Differenza;
Proiezione;
Restrizione
(o Selezione);
Prodotto.
I simboli R,S,... denotano relazioni, A,
B,…attributi e X,Y,…insiemi di attributi
DB -Algebra Relazionale
4
Ridenominazione
Operatore unario
Modifica il nome di un attributo senza cambiarne
il valore
Definizione:
Siano
X gli attributi di R, A in X, B not in X .
Allora AB(R) è con attributi (X-{A}){B}
AB(R)={t | u R t[B] = u[A] t[C]=u[C] se C e’
diverso da B}.
DB -Algebra Relazionale
5
Esempio Ridenominazione
Corso
Programmazione
EINN
Matricola
123456
23456
Voto
27
28
Corso
Programmazione
EINN
Codice Studente
123456
23456
Voto
27
28
Matricola Codice Studente(Esami)
DB -Algebra Relazionale
6
Unione, Differenza e Intersezione
Le relazioni sono degli insiemi, quindi possiamo
applicare gli operatori sugli insiemi
Il risultato dev’essere un set omogeneo di n-uple
Quindi,
applichiamo gli operatori sui set solo fra
relazioni con gli stessi attributi
Siano R ed S relazioni dello stesso tipo allora
= {t | t R t S}
R-S = {t | t R tS}
RS = {t | t R t S}
RS
DB -Algebra Relazionale
7
Esempio Unione
DB -Algebra Relazionale
8
Esempio Intersezione
DB -Algebra Relazionale
9
Esempio Differenza
DB -Algebra Relazionale
10
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
11
Ridenominazione e Unione
FatherParent(Paternity) MotherParent(Maternity)
DB -Algebra Relazionale
12
Proiezione
Produce risultati:
Su
un sottoinsieme degli attributi dell’operando
Con valori da tutte le n-uple della relazione
Definizione
R una relazione e siano A1, A2,…, An alcuni suoi
attributi allora:
A1, A2,…, An (R) = {t[A1, A2,…, An ] | tR}
Sia
La cardinalita’ di A1, A2,…, An (R) puo’ essere
minore di R nel caso di duplicati
DB -Algebra Relazionale
13
Esempio Proiezione
Proiezione
DB -Algebra Relazionale
14
Un’altro esempio di proiezione
Si riduce la cardinalita’ del risultato rispetto all’operando
DB -Algebra Relazionale
15
Selezione (Restrizione)
Produce risultati:
Con lo stesso schema dell’operando
Con un sottoinsieme delle n-uple dell’operando
Quelle che soddisfano la condizione
Definizione
Sia R una relazione allora
(R) = {t | t R (t)}
dove e’ una formula proposizionale costruita a partire dagli atomi
A B e utilizzando i connettivi proposizionali ,,
A e B sono attributi di R o costanti
{=,<, >, ≠, ≤, ≥}
DB -Algebra Relazionale
16
Esempio Selezione
Selezione
DB -Algebra Relazionale
17
Un altro esempio di Selezione
DB -Algebra Relazionale
18
Prodotto (Cartesiano)
Siano R(A1: T1,…, An: Tn) ed S (An+1: Tn+1,…,
An+m: Tn+m) con {A1,…, An} {An+1,…, An+m}=
. Allora si pone
R
x S = {tu | tR u S}
DB -Algebra Relazionale
19
Esempio prodotto cartesiano
DB -Algebra Relazionale
20
Operatori Derivati
Sono operatori utili che si possono
esprimere in funzioni di quelli primitivi.
Intersezione: Siano R ed S dello stesso
tipo
RS
= {t | tR t S}.
Essa si può esprimere in funzione degli
operatori primitivi:
R
S = R-(R-S)
DB -Algebra Relazionale
21
JOIN (Giunzione)
L’operatore piu’ importante dell’algebra
relazionale
Permette di combinare tuple da relazioni
diverse basandosi sui valori degli attributi
Fondamentalmente due tipi (piu’ qualche
variante):
Natural
JOIN
Theta JOIN
DB -Algebra Relazionale
22
Natural JOIN
DB -Algebra Relazionale
23
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
24
Un altro esempio di Natural JOIN
DB -Algebra Relazionale
25
Ancora un altro esempio di Natural Join
DB -Algebra Relazionale
26
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
27
JOIN vuoti, un caso estremo
Potrebbe anche succedere che nessuna
n-upla trovi il corrispettivo
DB -Algebra Relazionale
28
L’altro caso estremo del JOIN
Ogni n-upla di R1 si combina con ogni n-upla di R2
Cardinalita’ del risultato e’ il prodotto delle cardinalita’
DB -Algebra Relazionale
29
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:
Left:
solo dangling n-uple del primo operando
Right: solo dangling n-uple del secondo operando
Full: n-uple da entrambi gli operandi
DB -Algebra Relazionale
30
Esempio di NATURAL OUTER JOIN
DB -Algebra Relazionale
31
Proprieta’ del JOIN
Il JOIN e’
Commutativo:
R1S=S1R
Associativo: (R 1 S) 1 T = R 1 (S 1 T)
Quindi possiamo avere sequenze di JOIN
senza rischio di ambiguita’:
R
1S1T…
DB -Algebra Relazionale
32
Esempio di JOIN multipli
DB -Algebra Relazionale
33
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
34
Esempio di prodotto cartesiano
generato dal JOIN
DB -Algebra Relazionale
35
Theta-JOIN e Equi-JOIN
Estensione del NATURAL JOIN
Viene specificato un predicato per la selezione
delle n-uple
E’ un operatore derivato:
R
1 F S = F (R x S)
Se F e’ una congiunzione di uguaglianze si parla
di equi-JOIN
DB -Algebra Relazionale
36
Esempio di equi-JOIN
DB -Algebra Relazionale
37
Query (interrogazioni)
L’algebra 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
38
Database di esercitazione
DB -Algebra Relazionale
39
Esercizio 1
Trovare numero, nome ed eta’ di tutti gli impiegati che
guadagnano piu’ di 40 mila euro
DB -Algebra Relazionale
40
Esercizio 2
Trovare il numero dei responsabili degli impiegati che
guadagnano piu’ di 40 mila euro
DB -Algebra Relazionale
41
Esercizio 3
Trovare nome e salario dei responsabili degli impiegati
che guadagnano piu’ di 40 mila euro.
DB -Algebra Relazionale
42
Esercizio 4
Trovare gli impiegati che guadagnano piu’ dei loro responsabili e
visualizzare numero, nome e salario sia dell’impiegato che del
responsabile
DB -Algebra Relazionale
43
Esercizio 5
Trovare numero e nome dei responsabili i cui impiegati
guadagnano TUTTI piu’ di 40 mila euro
DB -Algebra Relazionale
44