1. Il Modello Relazionale
Il modello relazionale 1
Il modello relazionale
Proposto da E. F. Codd nel 1970 per favorire
l’indipendenza dei dati e reso disponibile
come modello logico in DBMS reali nel 1981
Oggi e` il modello logico piu` diffuso ed e`
adottato dalla larga maggioranza dei DBMS
disponibili a livello commerciale
2
2. Il modello relazionale
Caratteristiche:
E` basato su una semplice struttura dati – la relazione
E` caratterizzato da precise basi matematiche (teoria degli
insiemi + logica dei predicati del primo ordine)
Vantaggi
Semplice rappresentazione dei dati linguaggi
dichiarativi
Facilita` con cui possono essere espresse interrogazioni
anche complesse
3
Il modello relazionale
Due linguaggi di interrogazione:
algebra relazionale, in cui le interrogazioni sono espresse
applicando operatori specializzati alle relazioni
calcolo relazionale, in cui le interrogazioni sono espresse
per mezzo di formule logiche che devono essere verificate
dalle tuple ottenute come risposta all’interrogazione
I due linguaggi, sotto opportune ipotesi, hanno lo
stesso potere espressivo
Sono la base a partire dalla quale e` stato
sviluppato il linguaggio standard per l’accesso e la
manipolazione di dati relazionali SQL
4
3. Prima di introdurre le relazioni …
Dominio
Prodotto Cartesiano
5
Dominio
Un dominio è un insieme (anche infinito) di valori
Esempi:
l'insieme dei numeri interi
l'insieme delle stringhe di caratteri
l'insieme {0,1}
Nel seguito:
D insieme di tutti i domini
int: numeri interi
real: numeri reali
string: stringhe
date: date
6
4. Relazione – prodotto
cartesiano
D1, D2, …, Dk ∈ D (k insiemi anche non distinti)
il prodotto cartesiano D1×D2×…×Dk è definito come:
{(v1, v2, . . . , vk) | v1 ∈ D1, . . . , vk ∈ Dk}
Il prodotto cartesiano D1×D2×…×Dk ha grado k
Ogni elemento del prodotto cartesiano e` detto
tupla
7
Relazione
Siano D1, D2, …, Dk ∈ D domini
Una relazione su D1, D2, …, Dk e` un sottoinsieme finito
del prodotto cartesiano D1×D2×…×Dk
Una relazione, sottoinsieme del prodotto cartesiano di
k domini, ha grado k
Ogni tupla di una relazione di grado k ha k
componenti, una per ogni dominio su cui e` definita la
relazione cui la tupla appartiene
La cardinalita` di una relazione e` il numero di tuple
appartenenti alla relazione 8
5. Notazioni
Sia R una relazione di grado k
Sia t una tupla di R
Sia i ∈ {1,...,k}
t[i] denota la i-esima componente di t
9
Esempio
D1={0,1,2} D2={d,v}
prodotto cartesiano
D1 × D2 = {(0,d),(0,v),(1,d),(1,v),(2,d),(2,v)}
una relazione di cardinalita` 3
r1 ⊆ D1 × D2 r1 = {(0,d),(0,v),(1,d)}
una relazione di cardinalita` 2
r2 ⊆ D1 × D2 r2 = {(0,d),(2,d)}
t = (0,d) t[1] = 0 t[2] = d
10
6. Relazione - proprietà
Una relazione è un insieme di tuple, in
quanto tali ordinate al loro interno:
(d1, d2, …, dk)
∈ ∈ ∈
D1 D2 Dk
…
11
Relazione - proprieta`
Una relazione è un insieme, quindi:
non è definito alcun ordinamento fra le tuple
le tuple di una relazione sono distinte l’una
dall’altra
E` un insieme finito
Ciascun dominio puo` invece essere infinito
12
7. Relazione – notazione
posizionale
La formulazione introdotta permette di riferire
ogni componente di una tupla per posizione
t = (d1, d2, …, dk )
t[1] t[2] … t[k]
13
Relazioni – notazione per
nome
Viene associato un nome, detto nome di attributo, ad
ogni componente delle tuple in una relazione
La coppia (nome di attributo, dominio) e` detta attributo
L’uso degli attributi permette di
denotare le componenti di ogni tupla per nome
piuttosto che per posizione
fornire maggiori informazioni semantiche sulle
proprieta` che ogni componente delle tuple in una
relazione modella
Useremo questa notazione 14
8. Relazione - schema
R nome di relazione
{A1,A2,. . . , An} un insieme di nomi di attributi
dom : {A1,A2, . . . ,An} → D una funzione totale che
associa ad ogni nome di attributo in {A1,A2, . . . ,An} il
corrispondente dominio
La coppia (R(A1,A2, . . . ,An), dom) e` uno
schema di relazione
UR denota l’insieme dei nomi di attributi di R
UR = {A1,A2, . . . ,An}
15
Schema di base di dati
Siano S1, S2, . . . , Sn schemi di relazioni, con
nomi di relazione distinti
S = {S1, S2, . . . , Sn} e` detto
schema di base di dati
16
9. Tupla e relazione
Sia (R(A1,A2, . . . ,An), dom) uno schema di relazione
Una tupla t definita su R e`
un insieme di funzioni totali f1, f2, . . . , fn, dove
fi : Ai → dom(Ai), i = 1, ..., n, associa all’attributo di
nome Ai un valore del dominio di tale attributo
Una relazione definita su uno schema di relazione e`
un insieme finito di tuple definite su tale schema
tale relazione e` anche detta istanza dello schema
17
Notazione
Schema di relazione (R(A1,A2, . . . , An), dom),
Una tupla t su tale schema puo` essere
rappresentata come
[A1 : v1,A2 : v2, . . . ,An : vn]
vi, i = 1, . . . , n, e` un valore appartenente a
dom(Ai)
t[Ai] = vi, i =1,…,n
A = {Ai1,…,Aik} ⊆ {A1,…,An}
t[A] = (vi1,…,vik)
18
10. Esempio
Schema: Film(titolo,regista,anno,genere,valutaz)
dom(titolo) = dom(regista) = dom(genere) = string
dom(anno) = int
dom(valutaz) = real
Relazione (= istanza dello schema) ⊆ string × string × int × string × real
Tupla: [titolo:‘ed wood’,regista:‘tim burton’,anno:1994,
genere:’drammatico’,valutaz:4.00] 19
Valori nulli
Non sempre sono disponibili informazioni
sulle entità del dominio applicativo
rappresentato nella base di dati
alcune tuple possono non avere un valore per un
qualche attributo
Si introduce un valore speciale (valore nullo)
che denota la mancanza di valore
20
11. Valori nulli – quale valore?
Usare un valore legale per almeno un dominio non e` una buona
soluzione
Se scegliamo 0, 0 e` un valore legale per i domini numerici
il suo uso non permetterebbe di distinguere il caso in cui 0 sia
effettivamente il valore dell’attributo dal caso in cui 0 indichi il valore
nullo
Assumiamo di denotare il valore nullo con il simbolo ‘?’
Il valore nullo e` un valore ammissibile per ogni dominio
I linguaggi come SQL permettono di specificare nella definizione
di una relazione quali attributi non possono mai assumere valore
null
Notazione
negli schemi evidenziamo con un circoletto gli attributi che possono
assumere valori nulli 21
Esempio
Noleggio(colloc,dataNol,
codCli,dataResto)
dom(codCli) = dom(colloc) = int
dom(dataNol)= dom(dataRest)= date
22
12. Chiavi
Una chiave di una relazione e` un insieme di
attributi che distingue fra loro le tuple della
relazione
Sia R(A1, ...,An) uno schema di relazione
Un insieme X ⊆ UR di attributi di R e` chiave di R
se verifica entrambe le seguenti proprieta`:
qualsiasi sia lo stato di R, non esistono due tuple distinte
1.
di R che abbiano lo stesso valore per tutti gli attributi in X
nessun sottoinsieme proprio di X verifica la proprieta` (1)
2.
Un insieme di attributi che verifica la proprieta` (1)
ma non la proprieta` (2), e` detto super-chiave di
R
23
Chiavi candidate
Una relazione puo` avere piu` di un insieme S di attributi che
verificano le proprieta` (1) e (2)
chiavi candidate
Le chiavi delle relazioni vengono individuate mediante esame
del dominio applicativo e dei relativi vincoli
Una relazione ha sicuramente almeno una chiave
UR soddisfa sempre la proprieta` (1)
Chiave primaria
Chiavi candidate
Chiavi alternative 24
13. Chiavi
Una tupla e’ identificata dal valore di una qualunque
chiave candidata
Si preferisce pero’ usare la chiave primaria
Usata dal DBMS per ottimizzare le operazioni
Criteri di scelta della chiave primaria
Chiave candidata contenente il minor numero di attributi
Chiave candidata piu` frequentemente utilizzata nelle
interrogazioni
Le chiavi primarie non possono assumere valori
nulli
Le chiavi alternative possono assumere valori nulli
25
Esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza)
◦
Film(titolo,regista,anno,genere,valutaz )
Video(colloc,titolo,regista,tipo)
◦
Noleggio(colloc,dataNol,codCli,dataRest ) 26
14. Chiavi esterne
Permettono di modellare le associazioni
Siano
R ed R′ due relazioni
Y ⊆ UR’ una chiave per R′
X ⊆ UR un insieme di attributi di R tale che Y e X contengano lo
stesso numero di attributi e di dominio compatibile
X e` una chiave esterna di R su R′ se, qualsiasi siano gli stati di R
ed R′, per ogni tupla t di R esiste una tupla t′ di R′ tale che
t[X] = t′[Y ]
R viene detta relazione referente
R′ viene detta relazione riferita
27
Chiavi esterne - schema
X
R(A,B,C,D,E)
R’(F,G,H,I) (D,E) e (F,G) domini compatibili
(D,E) puo` essere definita come
chiave esterna di R su R’
Y
28
15. Chiavi esterne - istanza
R R’
A B C D E F G H I
a1 b1 c1 d1 e1 d1 e1 h1 i1
a2 b1 c2 d2 e1 d1 e2 h2 i2
a3 b2 c3 d1 e1 d2 e1 h1 i3
a4 b2 c3 d2 e3 d2 e4 h3 i4
d2 e2 h1 i1
d2 e3 h2 i1
29
Chiavi esterne
Le chiavi esterne permettono di collegare tra loro
tuple di relazioni diverse
meccanismo per realizzare le associazioni
per valore
30
16. Integrita` referenziale
Qualsiasi siano gli stati di R ed R′, per ogni tupla t di
R esiste una tupla t′ di R′ tale che t[X] = t′[Y ]
Vincolo di integrita’ referenziale
31
Esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza)
◦
Film(titolo,regista,anno,genere,valutaz )
Video(colloc,titoloFilm,registaFilm,tipo)
◦
Noleggio(collocVideo,dataNol,codCliCliente,dataRest )
32
17. Esempio
Vincolo di
integrita` referenziale
soddisfatto
33
Vincolo di
integrita` referenziale
Esempio soddisfatto
34
18. Esempio
Vincolo di
integrita` referenziale
NON soddisfatto
1126 22-Mar-2006 6655 ?
35
Violazioni integrita`
referenziale
L’integrita` referenziale puo` essere violata da
inserimenti e modifiche (del valore della chiave esterna)
nella relazione referente
da cancellazioni e modifiche (del valore della chiave) nella
relazione riferita
I linguaggi per basi di dati quali SQL permettono
all’utente, nella definizione di chiavi esterne, di
specificare quali azioni eseguire nel caso in cui
operazioni di modifica violino l’integrita` referenziale
36
19. Violazioni
Vincolo di
integrita` referenziale
violato da inserimento
in tabella referente
1126 22-Mar-2006 6655 ?
37
Violazioni
Vincolo di
integrita` referenziale
violato da modifica
in tabella referente 6610
6660
6660 non appare
38
20. Violazioni
Vincolo di
integrita` referenziale
violato da cancellazione
in tabella riferita
39
Violazioni
Vincolo di
integrita` referenziale
violato da modifica
in tabella riferita
6630
40
21. Osservazione 1
I nomi degli attributi nella chiave e nella chiave esterna non devono
necessariamente essere gli stessi
Se lo sono, semplificano alcune operazioni (join naturale)
Esempio
Cliente(codCli,nome,cognome,telefono,dataN,residenza)
Noleggio(collocVideo,dataNol,clienteCliente,dataResto)
Gli attributi avranno sicuramente nomi diversi tutte le volte che la
relazione referente e la relazione riferita coincidono, cioe` la chiave
esterna contiene un riferimento alla relazione stessa
Esempio
Film(titolo,regista,anno,genere,valutazo,titoloPreoFilm,registaPreoFilm)
(titoloPre,registaPre) contengono titolo e regista del film di cui il film
e` eventualmente il seguito
41
Osservazione 2
Una relazione puo` contenere piu` chiavi esterne,
eventualmente anche sulla stessa relazione
Le chiavi esterne, come del resto le chiavi, devono
essere esplicitamente specificate in uno schema di
relazione
Il fatto di avere attributi con lo stesso nome e domini
compatibili in relazioni diverse non offre alcuna garanzia
relativamente al mantenimento dell’integrita` referenziale
Se non esplicitamente impedito mediante la
specifica di un apposito vincolo, le chiavi esterne
possono assumere valore nullo
42
22. Vincoli di integrita`
Abbiamo visto
Vincoli di dominio
Vincoli di obbligatorieta`
Vincolo di chiave (primaria, alternativa)
Vincolo di integrita` referenziale (chiave esterna)
Questi vincoli non sono sufficienti a garantire che il
contenuto della base di dati rispecchi in modo fedele
le informazioni del dominio applicativo da
rappresentare
Come faccio a garantire che la valutazione di un film
sia un numero decimale compreso tra 0 e 5?
Discuteremo nel seguito altre categorie di vincoli
43
Algebra Relazionale
Il modello relazionale 44
23. 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
45
Algebra Relazionale
Esistono cinque operazioni di base:
Proiezione
Selezione
Prodotto cartesiano
Unione
Differenza
Queste operazioni definiscono
completamente l’algebra relazionale
46
24. 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
Non aumentano il potere espressivo dell’agebra ma sono
comode a fini pratici
Operazione fondamentale: join
47
Algebra Relazionale
La definizione delle varie operazioni e`
leggermente diversa a seconda che si
consideri la definizione del modello
relazionale per posizione o la definizione per
nome
Considereremo la definizione per nome
Operazione addizionale
Ridenominazione
Permette di modificare il nome degli attributi
48
25. Ridenominazione
La ridenominazione di una relazione R rispetto ad una lista
di coppie di nomi di attributi (A1,B1),…, (Am,Bm) tale che
Ai è un nome di attributo di R, denotata con
(R )
ρ A K, A
m ← B1 ,K, Bm
1
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
La relazione ottenuta ha lo stesso grado della relazione
R ed ha lo stesso contenuto
Gli attributi della relazione risultato sono
UR {A1,A2, . . . ,Am} ∪ {B1,B2, . . . ,Bm}
49
Ridenominazione - esempio
La ridenominazione:
ρ colloc,dataNol,codCli,dataRest ← video,dataIn,cliente,dataFine ( Noleggio )
cambia lo schema di Noleggio da
Noleggio(colloc,dataNol,codCli,dataRest)
a
Noleggio(video,dataIn,cliente,dataFine)
50
26. Proiezione
La proiezione di una relazione R su un insieme di attributi A={A1,…Am},
A ⊆ UR, indicata con
Π A1,K, Am ( R)
è una relazione di grado m le cui tuple hanno come attributi solo quelli
specificati in A
La proiezione genera un insieme T di tuple con m attributi (grado m)
Se t=[A1:v1,…Am:vm] è in T allora esiste una tupla t’ in R tale che per
ogni Ai in A, t[Ai]=t’[Ai]
Nella relazione risultato gli attributi hanno l’ordine specificato in A
La cardinalita` di T puo` essere diversa dalla cardinalita` di R
Eliminazione duplicati
51
Proiezione - esempio
A B C A C B A
a b c a c b a
d a f d f a d
c b d c d b c
Π A,C (R ) Π B, A (R )
R
B
Π B (R)
b
a
52
27. Proiezione - esempio
53
Selezione
La selezione su una relazione R, dato un predicato F
su R, indicata con
σF (R)
genera una relazione che contiene tutte le tuple di R
che verificano F
Il grado della relazione risultato è uguale al grado
della relazione operando
I nomi degli attributi della relazione risultato sono gli
stessi della relazione operando
La cardinalita` del risultato e` minore o uguale alla
cardinalita` della relazione di partenza
54
28. Selezione - predicati
Un predicato F su una relazione R ha una
delle seguenti forme:
predicato semplice
combinazione booleana di predicati semplici,
ottenuta con i connettivi ∧ (AND), ∨ (OR), ¬
(NOT)
55
Selezione - predicati
Un predicato semplice ha una delle
seguenti forme:
A op v
A op A’
dove:
A e A’ sono attributi di R
op è un operatore relazionale di confronto
>,<,>=,<=,=, ≠
v è una costante compatibile con il dominio di A
56
29. Selezione – esempi di predicati
codCli=6635 predicato semplice
dataNol=dataRest predicato semplice
codCli=6635 ∧ dataNol=dataRest
combinazione booleana
57
Selezione
Sia t=[A1:v1,…Ak:vk] una tupla in T = σF (R)
t è tale che:
F(A1/t[A1],…,Ak/t[Ak])
è vera
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
Se nessuna tupla di R verifica il predicato F, allora il
risultato è una relazione vuota
58
30. Selezione - esempio
A B C
a b c
A B C
d a f
a b c A B C
c b d
c b d d a f
R
σ B=b (R ) σ NOTB=b (R )
A B C A B C
a b c
c b d
σ B =bORA=C (R ) σ B =bANDA=C (R )
59
Selezione - esempio
60
31. Prodotto cartesiano
Il prodotto cartesiano di due relazioni R ed S, di grado
k1, k2, 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
61
Prodotto cartesiano
Si applica solo se R e S hanno schemi disgiunti
Se le due relazioni hanno attributi con lo stesso
nome, è necessario ridenominare gli attributi in una
delle due relazioni
Nella relazione risultato:
i primi k1 attributi sono gli attributi della relazione R
gli ultimi k2 attributi sono gli attributi della relazione S
La cardinalita` del risultato e` il prodotto delle
cardinalita` degli argomenti
62
32. Prodotto cartesiano - esempio
D E F
b g a
A B C
d a f
a b c A B C D E F
S
d a f a b c b g a
c b d a b c d a f
R d a f b g a
d a f d a f
RXS
c b d b g a
c b d d a f
63
Prodotto cartesiano – esempio
64
33. Unione
L’unione di due relazioni R, S, indicata con
R∪S
è l’insieme delle tuple in R, S o in entrambe
L’unione di due relazione può essere fatta solo se
hanno lo stesso schema
La relazione risultato ha lo stesso schema delle
relazioni argomento
Le tuple duplicate vengono eliminate
Il grado della relazione risultato è uguale al grado
65
delle relazioni operandi
Unione - esempio
A B C
A B C b g a
a b c d a f
d a f S
c b d A B C
R a b c
R∪S d a f
c b d
b g a
66
34. Unione - esempio
67
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 schema
La relazione risultato ha lo stesso schema delle
relazioni argomento
Il grado della relazione risultato è uguale al grado
delle relazioni operandi
68
35. Differenza - esempio
A B C
A B C b g a
a b c d a f
d a f S
c b d
A B C
R
a b c
R-S
c b d
69
Differenza - esempio
70
36. Operazioni derivate -
intersezione
L’intersezione di due relazioni R, S, indicata con
R∩S
è l’insieme delle tuple contenute in R e in S
L’intersezione di due relazione può essere fatta solo
se hanno lo stesso schema
La relazione risultato ha lo stesso schema delle
relazioni argomento
Il grado della relazione risultato è uguale al grado
delle relazioni operandi
71
Operazioni derivate -
intersezione
L’intersezione è un’operazione derivata
Può infatti essere definita come segue
R∩S = R - (R - S)
72
37. Operazioni derivate –
intersezione - esempio
A B C
a b c A B C
A B C
d a f b g a
d a f
c b d d a f
S R∩S
R
A B C A B C
a b c d a f
c b d
R - (R-S)
R-S 73
Operazioni derivate –
intersezione - esempio
74
38. Operazioni derivate –
intersezione - esempio
75
Operazioni derivate - join
Il join (detto anche theta-join) di due relazioni R ed S
sugli attributi A di R ed A’ di S, indicato con
R >< AθA' S
è definito come
σ AθA' (R × S )
Il join è quindi un prodotto cartesiano seguito da una
selezione
Il predicato AθA’ è detto predicato di join
76
39. Operazioni derivate - join
Come per il prodotto cartesiano, gli schemi
delle due relazioni argomento devono essere
disgiunti e lo schema della relazione risultato
e` dato dalla loro unione
Il grado della relazione risultato è uguale alla
somma dei gradi delle relazioni operandi
77
Operazioni derivate – join -
esempio
ABC DE
31
1 2 3
62
4 5 6
A B C D E
S
7 8 9 1 2 3 3 1
1 2 3 6 2
R
4 5 6 6 2
ABCDE
R >< B< D S
12331
R >< A= E S
78
40. Operazioni derivate – join -
esempio
79
Operazioi derivate - join
Il join e` un’operazione estremamente
importante in quanto permette di collegare
tuple di relazioni diverse e di attraversare le
associazioni rappresentate nelle relazioni
della base di dati mediante il meccanismo
delle chiavi esterne
Il join prende il nome di equi-join quando
l’operatore usato nel predicato di join e`
l’operatore di uguaglianza (=)
80
41. Operazioni derivate – join -
esempio
Determinare il titolo ed il regista dei film noleggiati
il 15 Marzo 2006 dal cliente di codice 6635
81
Operazioni derivate – join
naturale
L’operazione di join naturale è una
‘semplificazione’ del join
Ha senso solo nella notazione con nome del
modello relazionale
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
82
42. Operazioni derivate – join
naturale
Il join naturale di due relazioni R ed S e` indicato
con
R >< S
Sia
{A1,…,Ak} = UR∩US
{I1,…,Im} = UR∪US
{B1,…,Bk} nomi di attributi che non compaiono ne’ in R
ne’ in S
l’espressione che definisce il join naturale è
Π I1,...,Im (σ c (R × (ρ A1,...,Ak←B1,...,Bk (S ))))
83
Operazioni derivate – join
naturale
Nella formula precedente c indica la formula
A1=B1 AND A2 = B2 AND … AND Ak = Bk
Pertanto il join naturale esegue un join eguagliando
gli attributi con lo stesso nome delle due relazioni
argomento dell’operazione e poi elimina gli attributi
duplicati dalla relazione risultato
Affinche’ l’operazione di join sia ben definita, gli
attributi con nomi uguali nelle relazioni argomento
dell’operazione devono avere domini compatibili
84
43. Operazioni derivate – join
naturale
UR = US
Join naturale = intersezione
UR ∩ US = ∅
Join naturale = prodotto cartesiano
Il join naturale permette di navigare in modo molto piu`
agevole, rispetto al join, le associazioni rappresentate
tramite il meccanismo delle chiavi esterne, nel caso in
cui per chiave e chiave esterna sia stato utilizzato lo
stesso nome 85
Operazioni derivate – join
naturale - esempio
A B C B C D A B C D
a b c b c d a b c d
d b c b c e
a b c e
b b f a d b
d b c d
c a d S
d b c e
R
c a d b
R >< S 86
44. Operazioni derivate – join
naturale - esempio
Supponiamo di voler abbinare codice e nome del cliente
al titolo e all’anno dei film di Quentin Tarantino solo se il
cliente ha noleggiato almeno un video di quel film
87
Operazioni derivate - divisione
Date due relazioni R ed S con insiemi di attributi UR
ed US, rispettivamente, e tali che UR ⊃ US,
l'operazione di divisione di R per S è denotata da
R÷S
permette di determinare le tuple t di schema D = UR
– US tali che in R appaiono tutte le tuple che si
ottengono combinando t con ogni tupla di S
88
45. Operazioni derivate - divisione
Una tupla t viene cioe` restituita se, per ogni tupla s in
S, in R e` presente una tupla r tale che
r[D] = t[D] e r[US] = s[US]
Formulazione alternativa, che giustifica il suo nome
come operazione “inversa” del prodotto:
t ∈ R÷S se e solo se {t}×S ⊆ R
l’operazione di divisione determina le tuple per cui in
una relazione c’e` una corrispondenza con tutte le
tuple di un’altra relazione
89
Operazioni derivate – divisione
- esempio
B C
A B C
b c
a b c
b d
a b d
b b d a d
a a d S
R
A
a
R÷S 90
46. Operazioni derivate – divisione
- esempio
B C
A B C
b c
a b c
b d
a b d
b b d a d
a a d S
R
A
a
R÷S 91
Operazioni derivate – divisione
- esempio
Determinare i codici dei clienti che hanno noleggiato tutti i
film di Tim Burton
Film di Tim Burton
1.
92
47. Operazioni derivate – divisione
- esempio
Film noleggiati dai clienti
2.
93
Operazioni derivate – divisione
- esempio
NC ÷ TB
94
48. Operazioni derivate – divisione
La divisione si puo` esprimere nel modo
seguente:
ΠD (R) - Π D((ΠD (R) x S) - R)
dove D = (UR - US)
95
Operazioni derivate – divisione
- esempio
96
49. Operazioni derivate – divisione
- esempio
97
Operazioni derivate – divisione
- esempio
6635
6642
6610
98
50. Algebra relazionale - esempio
Selezionare i codici dei clienti che hanno noleggiato sia film
drammatici che film horror
Codici clienti che hanno noleggiato almeno un film drammatico
1.
R=
Codici clienti che hanno noleggiato almeno un film horror
2.
S=
∩S
Risultato: R
3.
99
Algebra relazionale - esempio
Selezionare i codici dei clienti che non hanno mai
noleggiato film horror
Codici clienti R =
1.
Codici clienti che hanno noleggiato almeno un film horror
2.
S=
Risultato: R - S
3.
100
51. Algebra relazionale - esempio
Selezionare i codici dei clienti che hanno noleggiato film di
almeno due generi diversi
Coppie cliente/genere film noleggiati
1.
R=
Associazione binaria tra coppie cliente/genere film noleggiato
2.
S=RX
Risultato: Selezione delle associazioni relative allo stesso
3.
cliente, ma generi diversi e proiezione sul codice
T=
Si poteva anche risolvere con un join naturale, cosa sarebbe 101
cambiato?
Algebra relazionale - esempio
Selezionare titolo e regista del film con la valutazione piu` alta
Titolo e regista di tutti i film
1.
R=
Titolo e regista dei film con valutazione non massima (film per
2.
cui esiste un altro film con valutazione maggiore della loro)
S=
Risultato: R - S
3.
102
53. Algebra vs. calcolo
L’algebra relazionale è un linguaggio
procedurale
dobbiamo indicare le operazioni da eseguire per
ottenere il risultato di una data interrogazione
Il calcolo relazionale e` un linguaggio
dichiarativo
viene data una descrizione formale del risultato,
senza specificare come ottenerlo
105
Calcolo relazionale - Varianti
Due varianti del calcolo relazionale:
Tuple relational calculus (TRC)
le variabili rappresentano tuple
Domain relational calculus (DRC)
le variabili rappresentano valori di domini
ogni espressione richiede un numero molto elevato di
variabili
usate in interfaccie grafiche
106
54. Calcolo relazionale - atomi
s∈R (R è un nome di relazione ed s è una variabile)
la tupla s appartiene alla relazione R
s[A] θ u[A’] (s ed u sono variabili, θ è un operatore
relazionale di confronto, A ed A’ sono nomi di
attributi)
il valore di A nella tupla s è in relazione θ con il valore di A’
nella tupla u
s[A] θ a (s è una variabile, θ è un operatore
relazionale di confronto, A è un nome di attributo, a
è una costante)
il valore di A nella tupla s è in relazione θ con il valore a
107
Calcolo relazionale - formule
Variabili libere e legate
data una formula F ed una variabile x, x è libera
in F se e solo se x non compare
in un quantificatore ∀x (quantificazione universale)
In un quantificatore ∃x (quantificazione esistenziale)
108
55. Calcolo relazionale - formule
ogni atomo è una formula
tutte le occorrenze delle variabili dell’atomo sono libere
se φ1 e φ2 sono formule, allora φ1∧φ2, φ1∨φ2, ¬φ1
sono formule
le occorrenze delle variabili sono libere o legate a seconda
di come sono in φ1 e φ2
se φ è una formula allora ∃s(φ), ∀s(φ) sono formule
tutte le occorrenze di s in φ sono legate al quantificatore ∃
(oppure ∀)
se φ è una formula allora (φ) è una formula
le occorrenze delle variabili sono libere o legate a seconda
di come sono in φ 109
Calcolo relazionale – verita`
delle formule
Presentiamo una formulazione intuitiva
dati
una formula f(x1, x2,…, xn), con x1, x2,…, xn
variabili libere
una tupla di valori (a1, a2,…, an )
f(x1, x2,…, xn) e` vera su (a1, a2,…, an ) se
sostituendo xi con ai si ottiene il valore True
110
56. Calcolo relazionale – formule -
esempio
cc
formula legale
tutte le occorrenze sono legate
la formula e` vera se esiste una tupla appartenente alla relazione
Film avente il valore dell’attributo valutaz maggiore di 3.50
formula legate
tutte le occorrenze di x sono legate
tutte le occorrenze di y sono libere
la formula e` vera sulla tupla (‘big fish’) con schema (Titolo) se
esiste una tupla appartenente alla relazione Film avente il valore
dell’attributo valutaz maggiore di 3.5 e titolo uguale a ‘big fish’
111
Calcolo relazionale -
espressioni
In TRC un’espressione o interrogazione ha la forma
{x:U|f(x)}
dove
U e` un insieme di attributi
f e` una formula legale del calcolo
x e` la sola variabile libera in f
un’espressione è quindi definita come l’insieme di
tutte le tuple x su un insieme di attributi U tali che il
la formula f è vera per x
112
57. Calcolo relazionale –
espressioni - esempio
cc
espressione corretta
ritrova i registi di cui almeno un film ha valutazione
superiore a 3.50
espressione errata poiche’ x non e` libera
113
Calcolo relazionale - esempi
Ritrovare titolo ed anno di uscita dei film presenti nella
videoteca
Ritrovare i noleggi effettuati dal cliente con codice 6635
Ritrovare l’anno ed il genere dei film il cui regista e` Tim
Burton o Gabriele Salvatores
114
58. Calcolo relazionale - esempi
Ritrovare per i noleggi di film di Quentin Tarantino il codice ed
il nome del cliente che ha effettuato il noleggio insieme al
titolo ed all’anno del film noleggiato
115
Calcolo relazionale - esempi
Ritrovare i codici dei clienti che hanno noleggiato sia film
drammatici sia film horror
116
59. Calcolo relazionale –
esprimere l’algebra con il TRC
Proiezione: ΠA1,…Ak (R)
{t:{A1,…,Ak}|∃x(x∈R∧x[A1]=t[A1]∧…∧x[Ak]=t[Ak]}
Selezione: σF(R)
{t:UR|t ∈R ∧F’}
dove F’ è la formula F con ogni attributo A sostituito
da t[A]
117
Calcolo relazionale –
esprimere l’algebra con il TRC
Prodotto cartesiano: RxS
siano UR ={A1,…,An} e US ={A’1,…,A’m} gli insiemi
degli attributi di R ed S
{t: UR ∪ US |∃x(∃y(x∈R∧y∈S∧
x[A1]=t[A1]∧…∧x[An]=t[An] ∧
y[A’1]=t[A’1]∧…∧ y[A’m]=t[A’m]))}
{t : UR | t ∈ R ∨ t∈S}
Unione: R∪S
{t : UR | t ∈ R ∧ ¬t∈S}
Differenza: R-S
118
60. Calcolo relazionale – potere
espressivo
L’algebra relazionale e il calcolo relazionale
hanno lo stesso potere espressivo?
Cioè
tutte le operazioni esprimibili mediante
espressioni dell’algebra relazionale possono
essere espresse mediante espressioni del calcolo
relazionale e viceversa?
119
Calcolo relazionale – potere
espressivo
La semantica di un’interrogazione (in algebra o in
calcolo) è una funzione che trasforma una base di
dati relazionale (insieme di relazioni) in una nuova
base di dati relazionale
algebra e calcolo hanno lo stesso potere espressivo
se per ogni interrogazione Q1 in uno dei due
formalismi esiste un’interrogazione Q2 nell’altro la
cui semantica è la stessa funzione
120
61. Calcolo relazionale – potere
espressivo
Non tutte le espressioni del calcolo possono essere
tradotte in equivalenti espressioni dell’algebra
Esempio:
l’espressione
{t:UFilm| ¬t∈Film}
è sintatticamente corretta
poiche’ alcuni attributi di Film hanno dominio infinito (ad
esempio Titolo, con dominio string) questa espressione è
soddisfatta da un numero infinito di tuple
il risultato non sarebbe una relazione!
121
Calcolo relazionale – potere
espressivo
Si introduce quindi una condizione sintattica (safety)
sufficiente ad evitare situazioni come quella
precedente
L’espressione
{t:UFilm| ¬t∈Film}
non è safe
il calcolo relazionale safe e l’algebra relazionale hanno
lo stesso potere espressivo
la traduzione da un formalismo all’altro può essere
effettuata in tempo polinomiale nella dimensione
dell’espressione
122
62. Perché due linguaggi?
Algebra relazionale
linguaggio procedurale
utile per il sistema
Calcolo relazionale (safe)
linguaggio dichiarativo
utile per l’utente
i linguaggi di interrogazione nei sistemi reali si basano sul calcolo
l’algebra relazionale viene utilizzata come linguaggio interno
l’interrogazione utente viene compilata in un’espressione
dell’algebra relazionale
il sistema utilizza le proprietà dell’algebra per stabilire quale
espressione permette di risolvere l’interrogazione iniziale nel
modo più efficiente
123