ALGEBRA
RELAZIONALE
DB -Algebra Relazionale
1
LINGUAGGI PER MODELLI
RELAZIONALI
Algebrici: una query è definita da
un’espressione algebrica sulle relazioni
dello schema
 Logici: una query è definita da una formula
della logica del primo ordine

DB -Algebra Relazionale
2
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
3
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
4
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
5
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 AB(R) è con attributi (X-{A}){B}
  AB(R)={t | u R t[B] = u[A]  t[C]=u[C] se C e’
diverso da B}.
DB -Algebra Relazionale
6
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
7
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  tS}
 RS = {t | t R  t  S}
 RS
DB -Algebra Relazionale
8
Esempio Unione
DB -Algebra Relazionale
9
Esempio Intersezione
DB -Algebra Relazionale
10
Esempio Differenza
DB -Algebra Relazionale
11
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
12
Ridenominazione e Unione
FatherParent(Paternity)  MotherParent(Maternity)
DB -Algebra Relazionale
13
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 ] | tR}
 Sia

La cardinalita’ di  A1, A2,…, An (R) puo’ essere
minore di R nel caso di duplicati
DB -Algebra Relazionale
14
Esempio Proiezione
Proiezione
DB -Algebra Relazionale
15
Un’altro esempio di proiezione

Si riduce la cardinalita’ del risultato rispetto all’operando
DB -Algebra Relazionale
16
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
17
Esempio Selezione
Selezione
DB -Algebra Relazionale
18
Un altro esempio di Selezione
DB -Algebra Relazionale
19
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 | tR  u  S}
DB -Algebra Relazionale
20
Esempio prodotto cartesiano
DB -Algebra Relazionale
21
Operatori Derivati
Sono operatori utili che si possono
esprimere in funzioni di quelli primitivi.
 Intersezione: Siano R ed S dello stesso
tipo

 RS

= {t | tR  t  S}.
Essa si può esprimere in funzione degli
operatori primitivi:
R
 S = R-(R-S)
DB -Algebra Relazionale
22
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
23
Natural JOIN
DB -Algebra Relazionale
24
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
25
Un altro esempio di Natural JOIN
DB -Algebra Relazionale
26
Ancora un altro esempio di Natural Join
DB -Algebra Relazionale
27
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
28
JOIN vuoti, un caso estremo

Potrebbe anche succedere che nessuna
n-upla trovi il corrispettivo
DB -Algebra Relazionale
29
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
30
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
31
Esempio di NATURAL OUTER JOIN
DB -Algebra Relazionale
32
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
33
Esempio di JOIN multipli
DB -Algebra Relazionale
34
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
35
Esempio di prodotto cartesiano
generato dal JOIN
DB -Algebra Relazionale
36
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
37
Esempio di equi-JOIN
DB -Algebra Relazionale
38
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
39
Database di esercitazione
DB -Algebra Relazionale
40
Esercizio 1

Trovare numero, nome ed eta’ di tutti gli impiegati che
guadagnano piu’ di 40 mila euro
DB -Algebra Relazionale
41
Esercizio 2

Trovare il numero dei responsabili degli impiegati che
guadagnano piu’ di 40 mila euro
DB -Algebra Relazionale
42
Esercizio 3

Trovare nome e salario dei responsabili degli impiegati
che guadagnano piu’ di 40 mila euro.
DB -Algebra Relazionale
43
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
44
Esercizio 5

Trovare numero e nome dei responsabili i cui impiegati
guadagnano TUTTI piu’ di 40 mila euro
DB -Algebra Relazionale
45