Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Maurizio Lenzerini
Dipartimento di Informatica e Sistemistica Antonio Ruberti
Universit di Roma La Sapienza
Anno Accademico 2010/2011
http://www.dis.uniroma1.it/lenzerini/?q=node/44
2. Il modello relazionale
2.1 Basi di dati relazionali
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 2
Il modello relazionale
Proposto da E. F. Codd nel 1970 per favorire
lindipendenza dei dati
Disponibile come modello logico in DBMS reali nel 1981
(10 anni di incubazione: non facile realizzare
lindipendenza con efficienza e affidabilit!)
Si basa sul concetto matematico di relazione (ma con
importanti varianti)
Le relazioni hanno una rappresentazione naturale per
mezzo di tabelle
Il modello "basato su valori: anche i riferimenti fra dati
in strutture (relazioni) diverse sono rappresentati per
mezzo dei valori stessi
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 3
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 4
Relazione matematica
D1, D2, , Dn (n insiemi, non necessariamente distinti)
il prodotto cartesiano D1D2Dn, linsieme di tutte
le n-uple ordinate (d1,d2,,dn) tali che d1 D1, d2 D2,,
dn D n
una relazione matematica su D1, D2, , Dn un
sottoinsieme del prodotto cartesiano D1D2Dn
D1, D2, , Dn sono i domini della relazione, anche detti
componenti della relazione. Una relazione su n domini
ha grado (o ariet) n
il numero di n-uple la cardinalit della relazione
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 5
una relazione
Maurizio Lenzerini
r D1 D2
Basi di Dati
a
a
a
b
b
b
x
y
z
x
y
z
a
a
b
b
x
z
y
z
Modello relazionale - 6
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 7
Lazio
Lazio
Milan
Juve
Roma
Roma
Milan
Basi di Dati
Modello relazionale - 8
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 9
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 10
Fuori
RetiCasa
RetiFuori
Juve
Lazio
Lazio
Milan
Juve
Roma
Roma
Milan
Basi di Dati
Modello relazionale - 11
Notazioni
Sia X linsieme degli attributi di una relazione R. Se t una
ennupla di R, cio una ennupla su X, e A X, allora t[A]
(oppure t.A) indica il valore che t ha in corrispondenza
dellattributo A
Se t la prima ennupla della tabella dellesempio
precedente, allora si ha che t[Fuori] = Lazio
La stessa notazione estesa anche ad insiemi di attributi:
t[Fuori,RetiFuori] indica una ennupla sui due attributi Fuori
e RetiFuori
Riferendoci alla ennupla t vista prima, si ha che
t[Fuori,RetiFuori] = <Lazio, 1>
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 12
Altra notazione
La specifica del nome R di una relazione, degli attributi
A1,A2,,An e dei domini di tali attributi D1,D2,,Dn forma il
cosiddetto schema di relazione, che si denota come
R(A1 : D1, A2 : D2, , An : Dn)
oppure semplicemente come
R(A1, A2, , An)
Di conseguenza, una tupla di R con t[A1] = a, t[A2] = b, ,
t[An] = c si pu denotare anche come <A1:a, A2:b,, An:c>
In altre parole, la tupla si pu vedere come tupla
etichettata, in cui le etichette sono gli attributi della
relazione, ed i valori associati alle etichette sono i valori che
compongono la tupla
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 13
Tabelle e relazioni
Sottolineiamo che in una relazione del modello relazionale:
i valori di ciascuna colonna sono fra loro omogenei
(appartengono allo stesso dominio)
le righe sono diverse fra loro
le intestazioni delle colonne (attributi) sono diverse tra
loro
Inoltre, nella rappresentazione tabellare della relazione
lordinamento tra le righe irrilevante
lordinamento tra le colonne irrilevante
Sottolineiamo anche che il modello relazionale basato
sui valori: i riferimenti fra due relazioni diverse sono
espressi per mezzo di valori che compaiono nelle ennuple di
entrambe le relazioni
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 14
Studente
3456
3456
9283
6554
corso
Codice
01
02
04
Maurizio Lenzerini
Nome
Mario
Paolo
Luisa
Maria
Voto
30
24
28
26
Data di nascita
05/12/1978
03/11/1976
12/11/1979
01/02/1978
Corso
04
02
01
01
Titolo Docente
Analisi
Mario
Chimica
Bruni
Chimica
Verdi
Basi di Dati
Modello relazionale - 15
Studente
corso
Codice
01
02
04
Maurizio Lenzerini
Nome
Mario
Paolo
Luisa
Maria
Voto
30
24
28
26
Data di nascita
05/12/1978
03/11/1976
12/11/1979
01/02/1978
Corso
Titolo Docente
Analisi
Mario
Chimica
Bruni
Chimica
Verdi
Basi di Dati
Modello relazionale - 16
Basi di Dati
Modello relazionale - 17
Definizioni
Schema di relazione: un nome di relazione R con un
insieme di attributi A1,..., An ed eventualmente anche i domini
R(A1, ... ,An)
Schema di base di dati: insieme di schemi di relazione con
nomi diversi:
R = {R1(X1), ... ,Rn(Xn)}
(Istanza di) relazione su uno schema R(X): insieme r di
ennuple su X
(Istanza di) base di dati su uno schema R= {R1(X1), ... , Rn
(Xn) }: insieme di relazioni r = {r1,..., rn} (una relazione ri sullo
schema Ri(Xi), per ogni i = 1,,n)
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 18
Esempio
Schema di base di dati R:
{ studente(Matricola,Cognome,Nome,DataDiNascita),
studenteLavoratore(Matricola) }
Istanza di base di dati sullo schema R:
studente Matricola Cognome
6554
Rossi
8765
Neri
9283
Verdi
3456
Rossi
Nome
Mario
Paolo
Luisa
Maria
DataDiNascita
05/12/1978
03/11/1976
12/11/1979
01/02/1978
studenteLavoratore Matricola
6554
3456
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 19
Informazione incompleta
ll modello relazionale impone ai dati una struttura rigida:
linformazione rappresentata per mezzo di ennuple
le ennuple ammesse sono dettate dagli schemi di relazione
Nella pratica, per, i dati disponibili possono non corrispondere
esattamente al formato previsto, per varie ragioni
Esempio:
di Firenze non conosciamo l'indirizzo della prefettura
Tivoli non provincia: non ha prefettura
Prato nuova provincia: ha la prefettura?
prefettura
citt
indirizzo
Roma
Via IV Novembre
Firenze
Tivoli
Prato
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 20
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 21
Informazione incompleta
nel modello relazionale
Si adotta una tecnica rudimentale, ma per certi versi efficace:
valore nullo: denota lassenza di un valore del dominio (e
non un valore del dominio, anche se pu comparire
come valore degli attributi definiti su quel dominio)
Formalmente, sufficiente estendere il concetto di ennupla:
t[A], per ogni attributo A, un valore del dominio dom(A)
oppure il valore nullo NULL
Si possono (ed in generale si debbono) imporre restrizioni
sulla presenza di valori nulli nei vari attributi
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 22
Basi di Dati
Modello relazionale - 23
Esame
Corso
Maurizio Lenzerini
Matricola
Cognome
Nome
Nascita
276545
Rossi
Maria
23/04/1968
276545
Neri
Anna
23/04/1972
788854
Verdi
Fabio
12/02/1972
Studente
Voto
Lode
Corso
276545
28
e lode
01
276545
32
02
788854
23
03
200768
30
e lode
03
Codice
Titolo
Docente
01
Analisi
Giani
03
NULL
NULL
02
Chimica
Belli
Basi di Dati
Modello relazionale - 24
Vincolo di integrit
Definizione di vincolo di integrit
Un vincolo di integrit (o semplicemente vincolo) una
condizione che si esprime a livello di schema e che si
intende debba essere soddisfatta da quelle istanze della
base di dati che rappresentano situazioni corrette per
lapplicazione
ogni vincolo pu essere visto come una funzione
booleana (o un predicato) che associa ad ogni istanza
della base di dati il valore vero (nel caso in cui il vincolo
sia soddisfatto) o falso (altrimenti)
Ad uno schema associamo un insieme di vincoli e
consideriamo corrette (o anche lecite, legali, valide,
ammissibili) solo le istanze che soddisfano tutti i vincoli
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 25
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 26
Intrarelazionali
di ennupla
di dominio
di chiave
Interrelazionali
di integrit referenziale (o di foreign key)
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 27
Basi di Dati
Modello relazionale - 28
Cognome
Nome
Corso
Nascita
27655
Rossi
Mario
Ing Inf
5/12/78
78763
Rossi
Mario
Ing Inf
3/11/76
65432
Neri
Piero
Ing Mecc
10/7/79
87654
Neri
Mario
Ing Inf
3/11/76
67653
Rossi
Piero
Ing Mecc
5/12/78
Basi di Dati
Modello relazionale - 29
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 30
Cognome
Nome
Corso
Nascita
27655
Rossi
Mario
Ing Inf
5/12/78
78763
Rossi
Mario
Ing Inf
3/11/76
65432
Neri
Piero
Ing Mecc
10/7/79
87654
Neri
Mario
Ing Inf
3/11/76
67653
Rossi
Piero
Ing Mecc
5/12/78
Basi di Dati
Modello relazionale - 31
Basi di Dati
Modello relazionale - 32
Vincolo di chiave
Un vincolo di chiave unasserzione che specifica che un
insieme di attributi formano una chiave per una relazione.
In altre parole, se in una relazione R(A,B,C,D) dichiaro un
vincolo di chiave su {A,B}, sto asserendo che in tutte le
istanze della basi di dati, non esistono due tuple della
relazione R che coincidono negli attributi A e B e sto anche
asserendo che nessun sottoinsieme proprio di {A,B} una
chiave.
Non ci sono limitazioni per il numero di vincoli di chiave che
si definiscono per una relazione (a parte il limite derivante
dal numero di attributi)
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 33
Basi di Dati
Modello relazionale - 34
Basi di Dati
Modello relazionale - 35
Cognome
Nome
Corso
Nascita
NULL
NULL
Mario
Ing Inf
5/12/78
78763
Rossi
Mario
Ing Civile
3/11/76
65432
Neri
Piero
Ing Mecc
10/7/79
87654
Neri
Mario
Ing Inf
NULL
NULL
Neri
Mario
NULL
5/12/78
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 36
Chiave primaria
La presenza di valori nulli nelle chiavi deve essere limitata
Soluzione pratica: per ogni relazione scegliamo una
chiave (la chiave primaria) su cui non ammettiamo valori
nulli.
Notazione per la chiave primaria: gli attributi che la
compongono sono sottolineati
Matricola
Cognome
Nome
Corso
Nascita
27655
Rossi
Mario
Ing Inf
5/12/78
78763
Rossi
Mario
Ing Civile
3/11/76
65432
Neri
Piero
Ing Mecc
10/7/79
87654
Neri
Mario
Ing Inf
NULL
67653
Rossi
Piero
NULL
5/12/78
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 37
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 38
Basi di Dati
Modello relazionale - 39
Data
Vigile
Prov
Numero
34321
1/2/95
3987
MI
39548K
53524
4/3/95
3295
TO
E39548
64521
5/4/96
3295
PR
839548
73321
5/2/98
9345
PR
839548
Vigili
Maurizio Lenzerini
Matricola
Cognome
Nome
3987
Rossi
Luca
3295
Neri
Piero
9345
Neri
Mario
7543
Mori
Gino
Basi di Dati
Modello relazionale - 40
Esempio (cont.)
Infrazioni
Codice
Data
Vigile
Prov
Numero
34321
1/2/95
3987
MI
39548K
53524
4/3/95
3295
TO
E39548
64521
5/4/96
3295
PR
839548
73321
5/2/98
9345
PR
839548
Auto
Maurizio Lenzerini
Prov
Numero
Cognome
Nome
MI
39548K
Rossi
Mario
TO
E39548
Rossi
Mario
PR
839548
Neri
Luca
Basi di Dati
Modello relazionale - 41
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 42
Data
Vigile
Prov
Numero
34321
1/2/95
3987
MI
39548K
53524
4/3/95
3295
TO
E39548
64521
5/4/96
2468
PR
839548
73321
5/2/98
9345
PR
839548
Vigili
Maurizio Lenzerini
Matricola
Cognome
Nome
3987
Rossi
Luca
3295
Neri
Piero
9345
Neri
Mario
7543
Mori
Gino
Basi di Dati
Modello relazionale - 43
Data
Vigile
Prov
Numero
34321
1/2/95
3987
MI
39548K
53524
4/3/95
3295
TO
39548K
64521
5/4/96
3295
PR
839548
73321
5/2/98
9345
PR
839548
Auto
Maurizio Lenzerini
Prov
Numero
Cognome
Nome
MI
39548K
Rossi
Mario
TO
E39548
Rossi
Mario
PR
839548
Neri
Luca
Basi di Dati
Modello relazionale - 44
Progetti
Maurizio Lenzerini
Matricola
Cognome
Progetto
34321
Rossi
IDEA
53524
Neri
XYZ
64521
Verdi
NULL
73032
Bianchi
IDEA
Codice
Inizio
Durata
Costo
IDEA
01/2000
36
200
XYZ
07/2001
24
120
BOH
09/2001
24
150
Basi di Dati
Modello relazionale - 45
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 46
Eliminazione in cascata
Impiegati
Progetti
Maurizio Lenzerini
Matricola
Cognome
Progetto
34321
Rossi
IDEA
53524
Neri
XYZ
64521
Verdi
NULL
73032
Bianchi
IDEA
Codice
Inizio
Durata
Costo
IDEA
01/2000
36
200
XYZ
07/2001
24
120
BOH
09/2001
24
150
Basi di Dati
Modello relazionale - 47
Progetti
Maurizio Lenzerini
Matricola
Cognome
Progetto
34321
Rossi
IDEA
53524
Neri
NULL
64521
Verdi
NULL
73032
Bianchi
IDEA
Codice
Inizio
Durata
Costo
IDEA
01/2000
36
200
XYZ
07/2001
24
120
BOH
09/2001
24
150
Basi di Dati
Modello relazionale - 48
Data
ProvA
NumeroA
ProvB
NumeroB
34321
1/2/95
TO
E39548
MI
39548K
64521
5/4/96
PR
839548
TO
E39548
Auto
Prov
Numero
Cognome
Nome
MI
39548K
Rossi
Mario
TO
E39548
Rossi
Mario
PR
839548
Neri
Luca
Basi di Dati
Modello relazionale - 49
2. Il modello relazionale
2.2 Algebra relazionale
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 50
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 51
Linguaggi di interrogazione
per basi di dati relazionali
Tipologia:
Dichiarativi: specificano le propriet del risultato ("che
cosa")
Procedurali: specificano le modalit di generazione del
risultato ("come")
Rappresentanti pi significativi:
Algebra relazionale: procedurale
Calcolo relazionale: dichiarativo
SQL (Structured Query Language): parzialmente
dichiarativo (linguaggio ormai standard)
QBE (Query by Example): dichiarativo (reale)
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 52
Algebra relazionale
Costituita da un insieme di operatori
definiti su relazioni
che producono relazioni
e possono essere composti
Operatori dellalgebra relazionale:
unione, intersezione, differenza
ridenominazione
selezione
proiezione
Join in diverse versioni: join naturale, prodotto cartesiano,
theta-join
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 53
Operatori insiemistici
a livello estensionale, le relazioni sono insiemi di
tuple, e quindi sensato definire per essi gli
operatori insiemistici
i risultati di tali operatori debbono essere a loro volta
relazioni (propriet di chiusura delle algebre)
possibile applicare unione, intersezione,
differenza solo a relazioni definite sugli stessi
attributi
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 54
Unione
Laureati
Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Et
42
54
45
Matricola Nome
9297
Neri
7432
Neri
9824
Verdi
Et
33
54
45
Laureati Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
9297
Neri
Maurizio Lenzerini
Basi di Dati
Et
42
54
45
33
Modello relazionale - 55
Intersezione
Laureati
Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Et
42
54
45
Matricola Nome
9297
Neri
7432
Neri
9824
Verdi
Et
33
54
45
Laureati Quadri
Matricola Nome
7432
Neri
9824
Verdi
Maurizio Lenzerini
Basi di Dati
Et
54
45
Modello relazionale - 56
Differenza
Laureati
Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Et
42
54
45
Matricola Nome
9297
Neri
7432
Neri
9824
Verdi
Et
33
54
45
Laureati Quadri
Matricola Nome
7274
Rossi
7432
Neri
9824
Verdi
Maurizio Lenzerini
Basi di Dati
Et
42
54
45
Modello relazionale - 57
Maternit
Figlio
Abele
Caino
Isacco
Madre
Eva
Eva
Sara
Figlio
Abele
Set
Isacco
Paternit Maternit
??
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 58
Ridenominazione
operatore monadico (con un argomento)
"modifica lo schema" lasciando inalterata l'istanza
dell'operando
Paternit
Padre
Adamo
Adamo
Abramo
Maurizio Lenzerini
Genitore
Padre
Adamo
Adamo
Abramo
Basi di Dati
Figlio
Abele
Caino
Isacco
Modello relazionale - 59
Paternit
Padre
Adamo
Adamo
Abramo
Figlio
Abele
Caino
Isacco
Maurizio Lenzerini
Figlio
Abele
Caino
Isacco
Maternit
Madre
Eva
Eva
Sara
Genitore
Adamo
Adamo
Abramo
Figlio
Abele
Set
Isacco
Genitore
Eva
Eva
Sara
Basi di Dati
Figlio
Abele
Set
Isacco
Modello relazionale - 60
Figlio
Abele
Caino
Isacco
RENGenitore Padre
RENGenitore Madre
Figlio
Abele
Set
Isacco
Maurizio Lenzerini
Basi di Dati
Genitore
Adamo
Adamo
Abramo
Eva
Eva
Sara
(Paternit)
(Maternit)
Figlio
Abele
Caino
Isacco
Abele
Set
Isacco
Modello relazionale - 61
Operai
Roma
Milano
Cognome Fabbrica
Bruni
Monza
Verdi
Latina
55
64
Salario
45
55
Sede Retribuzione
Roma
55
Milano
64
Monza
45
Latina
55
Basi di Dati
Modello relazionale - 62
Selezione
operatore monadico
produce un risultato che
ha lo stesso schema dell'operando
contiene un sottoinsieme delle ennuple
dell'operando, quelle che soddisfano una
condizione
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 63
Impiegati
Matricola Cognome Filiale
7309
Rossi
Roma
5998
Neri
Milano
9553
Milano
Milano
5698
Neri
Napoli
Stipendio
55
64
44
64
impiegati che
guadagnano pi di 50
guadagnano pi di 50 e lavorano a Milano
hanno lo stesso nome della filiale presso cui
lavorano
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 64
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 65
Stipendio
55
64
44
64
64
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 66
Impiegati
Matricola Cognome Filiale
7309
5998
Rossi
Neri
Milano
Roma
5998
Neri
Milano
9553
Milano
Milano
5698
Neri
Napoli
Stipendio
55
64
64
44
64
Basi di Dati
Modello relazionale - 67
Stipendio
55
44
64
44
64
Basi di Dati
Modello relazionale - 68
Selezione e proiezione
Sono due operatori "ortogonali"
selezione:
decomposizione orizzontale
proiezione:
decomposizione verticale
selezione
proiezione
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 69
Proiezione
operatore monadico
produce un risultato che
ha parte degli attributi dell'operando
contiene ennuple cui contribuiscono tutte le
ennuple dell'operando
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 70
Impiegati
Matricola Cognome Filiale
7309
Neri
Napoli
5998
Neri
Milano
9553
Rossi
Roma
5698
Rossi
Roma
Stipendio
55
64
44
64
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 71
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 72
Stipendio
55
64
44
64
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 73
Stipendio
55
64
44
64
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 74
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 75
Selezione e proiezione
Combinando selezione e proiezione, possiamo
estrarre interessanti informazioni da una relazione
matricola e cognome degli impiegati che guadagnano pi di 50
Stipendio
55
64
44
64
64
Basi di Dati
Modello relazionale - 76
Join
combinando selezione e proiezione, possiamo
estrarre informazioni da una relazione
non possiamo per correlare informazioni presenti in
relazioni diverse
il join l'operatore pi interessante dell'algebra
relazionale
permette di correlare dati in relazioni diverse
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 77
1
2
3
1
Basi di dati
Prog. sw
Prog. sw
Basi di dati
SQL
Java
UML
Java
UML
Maurizio Lenzerini
Basi di Dati
1
1
1
2
2
Modello relazionale - 78
Join naturale
operatore binario (generalizzabile secondo quanto
specificato pi avanti)
produce un risultato
sull'unione degli attributi degli operandi
con ennuple costruite ciascuna a partire da una
ennupla di ognuno degli operandi
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 79
Basi di Dati
Modello relazionale - 80
Basi di Dati
Modello relazionale - 81
Basi di Dati
Corso
BD
BD
PS
PS
PS
PS
Ling
SQL
Java
Java
UML
Java
UML
Modello relazionale - 82
Join completo
Un join completo un join in cui ogni ennupla contribuisce al
risultato. Questo un esempio di join naturale completo:
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
A
B
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Maurizio Lenzerini
Basi di Dati
Capo
Mori
Bruni
Capo
Mori
Bruni
Bruni
Modello relazionale - 83
Reparto
B
C
Impiegato Reparto
Neri
B
Bianchi
B
Maurizio Lenzerini
Basi di Dati
Capo
Mori
Bruni
Capo
Mori
Mori
Modello relazionale - 84
Un join vuoto
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
D
C
Impiegato Reparto
Maurizio Lenzerini
Basi di Dati
Capo
Mori
Bruni
Capo
Modello relazionale - 85
Impiegato Reparto
Rossi
A
B
Neri
B
Reparto
A
B
B
Impiegato Reparto
Rossi
B
Rossi
B
Neri
B
Neri
B
Maurizio Lenzerini
Basi di Dati
Capo
Mori
Bruni
Capo
Mori
Bruni
Mori
Bruni
Modello relazionale - 86
Basi di Dati
Modello relazionale - 87
Join e proiezioni
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
B
C
Impiegato Reparto
Neri
B
Bianchi
B
Impiegato Reparto
Neri
B
Bianchi
B
Maurizio Lenzerini
Capo
Mori
Mori
Reparto
B
Basi di Dati
Capo
Mori
Bruni
Capo
Mori
Modello relazionale - 88
Proiezioni e join
Impiegato Reparto
Capo
Neri
B
Mori
Bianchi
B
Bruni
Verdi
A
Bini
Impiegato Reparto
Reparto
Capo
Neri
B
B
Mori
Bianchi
B
B
Bruni
Verdi
A
A
Bini
Impiegato
Neri
Bianchi
Neri
Bianchi
Verdi
Maurizio Lenzerini
Reparto
B
B
B
B
A
Basi di Dati
Capo
Mori
Bruni
Bruni
Mori
Bini
Modello relazionale - 89
Join e proiezioni
R 1(X1), R 2(X2)
PROJX1 (R 1 JOIN R2 ) R 1
R(X), X = X1 X2
(PROJX1 (R)) JOIN (PROJX2 (R)) R
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 90
Prodotto cartesiano
Ricordiamo la definizione di join naturale:
R1 JOIN R2 una relazione su X1X2 il cui insieme di
ennuple :
{ t su X1X2 | esistono t1R1e t2R2
con t[X1] =t1 e t[X2] =t2 }
Da essa si evince che il join naturale su relazioni
senza attributi in comune si riduce al prodotto cartesiano
Il risultato contiene sempre un numero di ennuple pari al
prodotto delle cardinalit degli operandi (le ennuple sono
tutte combinabili)
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 91
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Codice
A
B
Capo
Mori
Bruni
Basi di Dati
Capo
Mori
Bruni
Mori
Bruni
Mori
Bruni
Modello relazionale - 92
Theta-join
Supponiamo che R1, R2 non abbiano attributi in comune. Il
prodotto cartesiano, in pratica, ha senso (quasi) solo se
combinato con una selezione:
SELcondizione (R1 JOIN R2)
La combinazione delle due operazioni viene chiamata
theta-join, richiede che R1 ed R2 non abbiano attributi in
comune, e viene indicata con
R1 JOINcondizione R2
La condizione di selezione spesso una congiunzione
(AND) di atomi di confronto A1 A2 dove (da cui deriva il
nome) uno degli operatori di confronto (=, >, <, ).
Se il solo operatore di confronto usato nella condizione
l'uguaglianza (=), allora si parla di equi-join.
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 93
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Codice
A
B
Capo
Mori
Bruni
Basi di Dati
Modello relazionale - 94
Impiegati
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparti
Reparto
A
B
Capo
Mori
Bruni
Maurizio Lenzerini
Basi di Dati
Modello relazionale - 95
Impiegati
Reparti
Impiegato Reparto
Reparto
Capo
Basi di Dati
Modello relazionale - 96
Esempi
Impiegati Matricola Nome
7309
5998
9553
5698
4076
8123
Supervisione
Maurizio Lenzerini
Et Stipendio
Rossi
34
45
Bianchi 37
38
Neri
42
35
Bruni
43
42
Mori
45
50
Lupi
46
60
Impiegato Capo
7309
5698
5998
5698
9553
4076
5698
4076
4076
8123
Basi di Dati
Modello relazionale - 97
SELStipendio>40(Impiegati)
Matricola Nome
7309
Rossi
5998
5698
Bianchi
Bruni
9553
4076
Mori
Neri
5698
8123
Bruni
Lupi
4076
Mori
8123
Lupi
Maurizio Lenzerini
Et Stipendio
34
45
37
43
38
42
42
45
35
50
43
46
42
60
45
50
46
60
Basi di Dati
Modello relazionale - 98
Et Stipendio
34
45
37
43
38
42
42
45
35
50
43
46
42
60
45
50
46
60
Basi di Dati
Modello relazionale - 99
Et Stipendio
Capo
PROJCapo (Supervisione
JOIN Impiegato=Matricola (SELStipendio>40
(Impiegati)))
Maurizio Lenzerini
Basi di Dati
Et Stipendio
Capo
PROJNome,Stipendio (
Impiegati JOIN Matricola=Capo
PROJCapo(Supervisione
JOIN Impiegato=Matricola (SELStipendio>40(Impiegati))))
Maurizio Lenzerini
Basi di Dati
Et Stipendio
Capo
PROJMatr,Nome,Stip,MatrC,NomeC,StipC
(SELStipendio>StipC(
RENMatrC,NomeC,StipC,EtC Matr,Nome,Stip,Et(Impiegati)
JOIN MatrC=Capo
(Supervisione JOIN Impiegato=Matricola Impiegati)))
Maurizio Lenzerini
Basi di Dati
Et Stipendio
Capo
Basi di Dati
Impiegati
Matricola Cognome Filiale
7309
Rossi
Roma
5998
Neri
Milano
9553
Bruni
Milano
Et
32
45
NULL
Basi di Dati
Persone
Maurizio Lenzerini
Basi di Dati
Soluzione
per riferirsi ai valori nulli esistono forme apposite di
condizioni:
IS NULL
IS NOT NULL
Esempio sulla selezione:
SEL Et > 40 (Impiegati)
la condizione atomica vera solo per valori non nulli
Si potrebbe usare (ma non serve) una "logica a tre
valori" (vero, falso, sconosciuto)
Maurizio Lenzerini
Basi di Dati
Quindi:
SEL Et>30 (Persone)
Maurizio Lenzerini
Basi di Dati
Impiegati
Matricola Cognome Filiale
7309
5998
Rossi
Neri
Milano
Roma
5998
9553
Bruni
Neri
Milano
9553
Bruni
Milano
Et
32
45
NULL
45
NULL
Maurizio Lenzerini
Basi di Dati
Join: unosservazione
Impiegato Reparto
Rossi
A
Neri
B
Bianchi
B
Reparto
B
C
Impiegato Reparto
Neri
B
Bianchi
B
Capo
Mori
Bruni
Capo
Mori
Mori
Basi di Dati
Join esterno
Il join esterno estende, con valori nulli, le
ennuple che verrebbero tagliate fuori da un join
(interno)
esiste in tre versioni:
sinistro: mantiene tutte le ennuple del primo
operando, estendendole con valori nulli, se
necessario
destro: ... del secondo operando ...
completo: di entrambi gli operandi ...
Maurizio Lenzerini
Basi di Dati
Reparti
Reparto
B
C
Capo
Mori
Bruni
Basi di Dati
Capo
Mori
Mori
NULL
Modello relazionale - 111
Reparti
Reparto
B
C
Capo
Mori
Bruni
Basi di Dati
Capo
Mori
Mori
Bruni
Modello relazionale - 112
Basi di Dati
Capo
Mori
Mori
NULL
Bruni
Modello relazionale - 113
Equivalenza di espressioni
Due espressioni sono equivalenti se producono
lo stesso risultato qualunque sia l'istanza della
base di dati sulla quale vengono valutate
L'equivalenza importante in pratica perch i
DBMS cercano di eseguire espressioni equivalenti
a quelle date, ma meno "costose della
espressione orginaria
Maurizio Lenzerini
Basi di Dati
Unequivalenza importante
Effettuare le selezioni il prima possibile (push selections)
Esempio: se A attributo di R2
SEL A=10 (R1 JOIN R2) = R1 JOIN SEL A=10 ( R2)
Maurizio Lenzerini
Basi di Dati