Algebra Relazionale Operazioni nel Modello Relazionale

Algebra Relazionale
1
Algebra Relazionale
Operazioni nel Modello Relazionale
Le operazioni sulle relazioni possono essere
espresse in due formalismi di base:
Algebra relazionale: le interrogazioni (query) sono
espresse applicando operatori specializzati alle
relazioni
Calcolo relazionale: le interrogazioni (query) sono
espresse per mezzo di formule logiche che devono
essere verificate dalle tuple ottenute come risposta
all'interrogazione
I due formalismi (sotto opportune ipotesi) sono
equivalenti
2
Algebra Relazionale
1
Algebra Relazionale
Esistono cinque operazioni di base:
Unione
Differenza
Prodotto cartesiano
Proiezione
Selezione
Queste operazioni definiscono completamente
l’algebra relazionale
3
Algebra Relazionale
Algebra Relazionale
Ogni operazione restituisce come risultato una
relazione: è pertanto possibile applicare una
operazione al risultato di un'altra operazione
(proprietà di chiusura)
Esistono operazioni addizionali, che possono
essere espresse in termini delle cinque
operazioni di base
4
Algebra Relazionale
2
Algebra Relazionale
Tali operazioni non aggiungono potere
espressivo all'insieme delle operazioni di base,
ma sono utili come abbreviazioni; di queste la più
importante è l'operazione di join
Rispetto alla notazione per nome del modello
relazionale, può essere utile introdurre una
ulteriore operazione di ridenominazione
(renaming) che permette di modificare i nomi
degli attributi
5
Algebra Relazionale
Algebra Relazionale - Unione
L’unione di due relazioni R ed S, indicata con
R∪S
è l’insieme delle tuple in R, in S o in entrambe
L’unione di due relazione può essere fatta solo se
hanno lo stesso grado; inoltre il primo attributo di
R deve essere compatibile con il primo attributo
di S, il secondo attributo di R deve essere
compatibile con il secondo attributo di S, e così
via
6
Algebra Relazionale
3
Algebra Relazionale – Unione
Se le relazioni hanno nomi di attributo diversi,
nella relazione risultato per convenzione si usano
i nomi della prima relazione (in questo caso R), a
meno di opportune ridenominazioni
Le tuple duplicate vengono eliminate
Il grado della relazione risultato è uguale al grado
delle relazioni operandi
7
Algebra Relazionale
Algebra Relazionale – Esempio
Unione
A
a
B
b
C
c
D
b
E
g
F
a
A
B
C
a
b
c
d
c
a
b
f
d
d
a
f
d
a
f
c
b
d
b
g
a
S
R
R∪S
8
Algebra Relazionale
4
Algebra Relazionale - Differenza
La differenza di due relazioni R ed S, indicata con
R-S
è l’insieme delle tuple che sono in R ma non in S
La differenza (come l’unione) può essere
eseguita solo se le relazioni hanno lo stesso
grado e gli attributi sono compatibili
9
Algebra Relazionale
Algebra Relazionale - Differenza
In caso di attributi con nomi diversi, nella
relazione risultato, per convenzione, si usano i
nomi della prima relazione, a meno di opportune
ridenominazioni
Il grado della relazione risultato è uguale al grado
delle relazioni operandi
10
Algebra Relazionale
5
Algebra Relazionale – Esempio
Differenza
A
a
d
c
B
b
a
b
C
c
f
d
D
b
d
E
g
a
F
a
f
S
A
B
C
a
b
c
b
R-S
c
d
R
11
Algebra Relazionale
Algebra Relazionale – Prodotto
Cartesiano
Il prodotto cartesiano di due relazioni R ed S, di
grado k1 e k2 rispettivamente, indicato con
RxS
è una relazione di grado k1+k2 le cui tuple sono
tutte le tuple che hanno:
come prime k1 componenti le tuple di R
come seconde k2 componenti le tuple di S
12
Algebra Relazionale
6
Algebra Relazionale – Prodotto
Cartesiano
Nella relazione risultato i nomi dei primi k1
attributi sono i nomi degli attributi della relazione
R e i nomi degli ultimi k2 attributi sono i nomi degli
attributi della relazione S
Se le due relazioni hanno attributi con lo stesso
nome, è necessario ridenominare gli attributi in
una delle due relazioni
13
Algebra Relazionale
Algebra Relazionale – Esempio
Prodotto Cartesiano
A
a
B
b
C
c
D
b
E
g
F
a
A B C D E F
a b c b g a
d
c
a
b
f
d
d
a
f
a
d
d
c
c
S
R
b
a
a
b
b
c
f
f
d
d
d
b
d
b
d
a
g
a
g
a
f
a
f
a
f
RxS
14
Algebra Relazionale
7
Algebra Relazionale - Proiezione
La proiezione di una relazione R su un insieme di
attributi A={A1,…,Am}, indicata con
ΠA1,…,Am(R)
è una relazione di grado m le cui tuple hanno
come attributi solo quelli specificati in A
Pertanto la proiezione genera un insieme T di mtuple tali che se t=[A1:v1,...,Am:vm] è in T allora
esiste una tupla t’ in R tale che per ogni Ai in A,
1 i m, t[Ai]=t’[Ai]
15
Algebra Relazionale
Algebra Relazionale – Esempio
Proiezione
A
a
d
c
R
16
B
b
a
b
C
c
f
d
A
C
B
A
a
c
b
a
d
f
a
d
c
d
b
c
ΠA,C(R)
ΠB,A(R)
Algebra Relazionale
8
Algebra Relazionale - Predicati
Un predicato F su una relazione R ha una delle
seguenti forme:
1)
2)
predicato semplice
combinazione booleana di predicati semplici; tali
combinazioni sono ottenute con i connettivi AND (∧),
OR (∨) e NOT (¬)
17
Algebra Relazionale
Algebra Relazionale – Tavole di
verità dei connettivi logici
18
A
B
A∧
∧B
A∨
∨B
¬A
A B
(¬
¬ A ∨ B)
F
F
F
F
V
V
F
V
F
V
V
V
V
F
F
V
F
F
V
V
V
V
F
V
Algebra Relazionale
9
Algebra Relazionale – Tavole di
verità dei connettivi logici
¬A∨B ¬B∨A
A B
(¬
¬ A ∨ B) ∧ (¬
¬ B ∨ A)
A
B
F
F
V
V
V
F
V
V
F
F
V
F
F
V
F
V
V
V
V
V
19
Algebra Relazionale
Algebra Relazionale - Predicati
Un predicato semplice ha una delle seguenti
forme:
A op costante
A op A’
A e A’ sono attributi di R, op è un operatore
relazionale di confronto (>,<,>=,<=,=, ecc.),
costante è una costante compatibile con il
dominio di A
20
Algebra Relazionale
10
Algebra Relazionale – Esempi di
Predicati
B=b
A=C
B=b OR A=C
B=b AND A=C
NOT B=b
21
predicato semplice forma 1)
predicato semplice forma 2)
combinazione booleana
combinazione booleana
combinazione booleana
Algebra Relazionale
Algebra Relazionale - Selezione
La selezione su una relazione R, dato un
predicato F, indicata con
σF(R)
è una relazione che contiene tutte e sole le tuple
che verificano il predicato F, tale che:
il grado della relazione risultato è uguale al grado della
relazione operando
i nomi degli attributi della relazione risultato sono gli
stessi della relazione operando
22
Algebra Relazionale
11
Algebra Relazionale - Selezione
Se nessuna tupla di R verifica il predicato F,
allora il risultato è una relazione vuota
23
Algebra Relazionale
Algebra Relazionale - Selezione
24
Se k è il grado di R, la selezione genera un
insieme T di k-tuple
Sia t=[A1:v1,…Ak:vk] una k-tupla in T.
t è tale che:
F(A1/t[A1],…,Ak/t[Ak])
è vera, dove la notazione Ai/t[Ai] indica la
sostituzione in F del nome di attributo Ai (se tale
nome compare in F) con il valore t[Ai] dell’attributo
di nome Ai in t
Algebra Relazionale
12
Algebra Relazionale – Esempio
Selezione
A
a
d
c
R
B
b
a
b
C
c
f
d
A
a
c
B
b
b
C
c
d
A
B
C
d
a
f
C
c
d
A
σB=b(R)
A
a
c
B
b
b
σ(B=b)∨(A=a)(R)
25
σ¬B=b(R)
B
C
σ(B=b)∧(A=C)(R)
Algebra Relazionale
Algebra Relazionale Ridenominazione
La ridenominazione di una relazione R rispetto ad
una lista di coppie di nomi di attributi (A1,B1),…,
(Am,Bm) tale che Ai e’ un nome di attributo di R,
denotata con
ρA1,...,Am B1,...,Bm(R)
ridenomina l’attributo di nome Ai con il nome Bi
La ridenominazione è corretta se il nuovo
schema della relazione R ha attributi con nomi
tutti distinti
26
Algebra Relazionale
13
Algebra Relazionale – Esempio
Ridenominazione
La ridenominazione:
ρA,B,C
AA,BB,CC(R)
cambia lo schema R(A,B,C) in R(AA,BB,CC)
27
Algebra Relazionale
Algebra Relazionale - Join
Il join di due relazioni R ed S sugli attributi A di R
ed A’ di S, indicato con
R IXIA A’ S
è definito come
σA A’(RxS)
Il join è quindi un prodotto cartesiano seguito da
una selezione.
Il predicato AθA’ è detto predicato di join
28
Algebra Relazionale
14
Algebra Relazionale - Join
Il grado della relazione risultato è uguale alla
somma dei gradi delle relazioni operandi
Spesso il join è indicato con le seguenti notazioni:
R.AθS.A’ oppure R[AθA’]S
Il join prende il nome di equijoin quando
l’operatore θ nel predicato di join è l’operatore di
uguaglianza
29
Algebra Relazionale
Algebra Relazionale – Esempio
Join
A
B
C
1
2
3
4
5
6
7
8
9
R
D E
3 1
A B C D E
1 2 3 3 1
A B C D E
1 2 3 3 1
6
1
4
4
7
7
R IXIA=E S
S
2
2
5
5
8
8
3
6
6
9
9
RxS
30
6
3
6
3
6
2
1
2
1
2
A
1
1
4
B
2
2
5
C
3
3
6
D
3
6
6
E
1
2
2
R IXIB<D S
Algebra Relazionale
15
Algebra Relazionale – Join Naturale
L’operazione di join naturale è una
“semplificazione” del join
Si consideri l’interrogazione: “ritrovare tutti gli
impiegati e gli uffici dove lavorano”; usando il join
tale interrogazione è espressa come segue:
ΠNome,Ufficio(ImpiegatoIXIImpiegato.Dip#=Dipartimento.Dip#Dipartimento)
Questo join impone l’uguaglianza degli attributi
che appaiono in entrambe le relazioni
31
Algebra Relazionale
Algebra Relazionale – Join Naturale
E’ un tipo di join molto frequente
L’operazione di join naturale indica un tipo di join
basato sull’eguaglianza degli attributi comuni a
due relazioni
Ha senso solo nella notazione con nome, a
differenza delle altre operazioni
32
Algebra Relazionale
16
Algebra Relazionale – Join Naturale
Siano:
R ed S due relazioni
{A1,…,Ak}=UR∩US l’insieme degli attributi presenti sia
nello schema di R che in quello di S
{B1,…,Bm}= UR∪US l’insieme degli attributi presenti
nello schema di R o nello schema di S
L’espressione che definisce il join naturale è
ΠB1,...,Bm(σc(Rx(ρA1,...,Ak S.A1,...,S.Ak(S))))
dove C è un predicato della forma:
A1=S.A1∧...∧Ak=S.Ak
33
Algebra Relazionale
Algebra Relazionale – join naturale
Il join naturale esegue pertanto un join
uguagliando gli attributi con lo stesso nome delle
due relazioni e poi elimina gli attributi duplicati
Il join naturale si indica con
R IXI S
34
Algebra Relazionale
17
Algebra Relazionale – Esempio
Join Naturale
A
B
C
B
C
D
A
B
C
D
a
d
b
c
b
b
b
a
c
c
f
d
b
b
a
c
c
d
d
e
b
a
b
c
d
a
b
c
e
d
b
c
d
d
b
c
e
c
a
d
b
S
R
R IXI S
35
Algebra Relazionale
Impiegati
36
Imp#
Nome
Mansione
DataA
Stipendio
PremioP
7369
Rossi
Ingegnere
17/12/80
1600.00
500.00
Dip#
20
7499
Andrei
Tecnico
20/02/81
800.00
?
30
7521
Bianchi
Tecnico
20/02/81
800.00
100.00
30
7566
Rosi
Dirigente
02/04/81
2975.00
?
20
7654
Martini
Segretaria
28/09/81
800.00
?
30
7698
Blacchi
Dirigente
01/05/81
2850.00
?
30
7782
Neri
Ingegnere
01/06/81
2450.00
200.00
10
7788
Scotti
Segretaria
09/11/81
800.00
?
20
7839
Dare
Ingegnere
17/11/81
2600.00
300.00
10
7844
Turni
Tecnico
08/09/81
1500.00
?
30
7876
Adami
Ingegnere
23/09/81
1100.00
500.00
20
7900
Gianni
Ingegnere
03/12/81
1950.00
?
30
7902
Fordi
Segretaria
03/12/81
1000.00
?
20
7934
Milli
Ingegnere
23/01/82
1300.00
150.00
10
7977
Verdi
Dirigente
10/12/80
3000.00
?
10
Algebra Relazionale
18
Algebra Relazionale – Esempi
Q1: selezionare i nomi degli impiegati che hanno
uno stipendio maggiore di 2000
ΠNome(σStipendio>2000(Impiegati))
Nome
Rosi
Blacchi
Neri
Dare
Verdi
37
Algebra Relazionale
Impiegati
38
Imp#
Nome
Mansione
DataA
Stipendio
PremioP
7369
Rossi
Ingegnere
17/12/80
1600.00
500.00
Dip#
20
7499
Andrei
Tecnico
20/02/81
800.00
?
30
7521
Bianchi
Tecnico
20/02/81
800.00
100.00
30
7566
Rosi
Dirigente
02/04/81
2975.00
?
20
7654
Martini
Segretaria
28/09/81
800.00
?
30
7698
Blacchi
Dirigente
01/05/81
2850.00
?
30
7782
Neri
Ingegnere
01/06/81
2450.00
200.00
10
7788
Scotti
Segretaria
09/11/81
800.00
?
20
7839
Dare
Ingegnere
17/11/81
2600.00
300.00
10
7844
Turni
Tecnico
08/09/81
1500.00
?
30
7876
Adami
Ingegnere
23/09/81
1100.00
500.00
20
7900
Gianni
Ingegnere
03/12/81
1950.00
?
30
7902
Fordi
Segretaria
03/12/81
1000.00
?
20
7934
Milli
Ingegnere
23/01/82
1300.00
150.00
10
7977
Verdi
Dirigente
10/12/80
3000.00
?
10
Algebra Relazionale
19
Algebra Relazionale - Esempi
Q2: selezionare i nomi ed i numeri di dipartimento
degli impiegati che hanno uno stipendio maggiore
di 2000 e hanno mansione di ingegnere
ΠNome,Dip#(σ(Stipendio>2000)∧(Mansione=“Ingegnere”)(Impiegati))
39
Nome
Dip#
Neri
10
Dare
10
Algebra Relazionale
20