Basi di Dati
prof. A. Longheu
2 – Modello Relazionale – Algebra Relazionale
Cap. 2-3 “Basi di dati” Atzeni – Ceri – Paraboschi - Torlone
Modello Relazionale
• Esso fu proposto nel 1970 da E.F. Codd
• Primi sistemi relazionali appaiono sul mercato nel 1981
• Il modello logico si basa su due concetti:
– relazione: teoria matematica derivata dalla teoria
degli insiemi
– tabella: intuitivo ma informale
l’uso delle tabelle rende semplice da usare il modello,
mentre la formalizzazione matematica ne consolida
la potenza (ad esempio, verifica della correttezza o
completezza di un db)
• Le relazioni possono essere efficacemente e
semplicemente rappresentate tramite tabelle.
Relazione
Dati due insiemi D1 e D2, si considera anzitutto il loro prodotto
cartesiano, ossia l’insieme di tutte le possibili coppie che si
possono formare prendendo un elemento di D1 ed uno di D2.
Una relazione (in senso matematico) è un sottoinsieme del
prodotto cartesiano, ossia è un insieme che contiene alcune di tutte
le possibili coppie (al limite, anche tutte, ma non necessariamente)
Esempio
D1 = { 1, 3, 5 }
D2 = { a, b }
D1 X D2 = { (1,a), (1,b), (3,a), (3,b), (5,a), (5,b) }
Una possibile relazione R = { (1,a), (3,b), (5,b) }
che può essere rappresentata con una tabella
1
3
5
a
b
b
Il prodotto cartesiano e le relazioni si possono estendere a N insiemi
Caratteristiche delle relazioni
• Ogni riga della tabella viene chiamata n-upla o t-upla
• Non è definito alcun ordinamento fra le n-uple, quindi due tabelle
con le stesse righe, anche in ordine diverso, rappresentano la
stessa relazione
• Le n-uple di una relazione devono essere distinte l’una dall’altra,
quindi una tabella rappresenta una relazione solo se le sue righe
sono tutte fra loro diverse
• Per definire il significato e il ruolo di ogni colonna essa viene
etichettata mediante un attributo. In tal modo, l’ordine delle
colonne risulta irrilevante.
Attributi
SqCasa
Juventus
Lazio
Torino
SqOspite
Roma
Milan
Sampdoria
Casa Ospite
0
2
1
1
0
1
T-upla
Database Relazionali - Generalità
Una base di dati relazionale è costituita da più relazioni (una
di solito non è sufficiente). Alcuni attributi contengono valori
comuni (ripetuti cioè in relazioni differenti) necessari per
definire collegamenti fra le relazioni
Corsi Codice Docente
Studenti Matricola Cognome Nome Nascita
276545
565211
446212
656422
Rossi
Bruni
Lorenzi
Vulturi
Maria
Aldo
Silvio
Paolo
21/10/1971
12/03/1973
06/06/1970
22/08/1974
Esami Studente Voto
276545
565211
446212
656422
28
26
25
30
Corso
A04
A10
A23
A45
A04
A10
A23
A45
Sergi
Palazzo
La Corte
Ingrassia
Database Relazionali - Definizioni
Uno schema di relazione è costituito :
–da un simbolo R, detto nome della relazione
–da un insieme di nomi di attributi X = {A1, A2, ... , An}
Informalmente, uno schema di relazione è l’insieme del
nome di una tabella e dei nomi dei suoi attributi (senza
valori).
Studenti Matricola Cognome Nome Nascita
R = Studenti
X = { Matricola, Cognome, Nome, Nascita }
L’insieme di R ed X si indica con R (X)
Database Relazionali - Definizioni
Uno schema di base di dati è un insieme di schemi di relazione con
nomi diversi
DB = { R1(X1) , R2(X2) , ... , Rn(Xn) }
Informalmente, uno schema di base di dati è l’insieme dei nomi di tutte le
tabelle e dei nomi tutti i loro attributi (senza valori), o, in altre parole, il
database vuoto, senza dati (solo lo “scheletro”).
Studenti Matricola Cognome Nome Nascita
Esami Studente Voto
Corsi Codice Docente
Corso
Schemi di relazione
R1 = Studenti
X1 = { Matricola, ... }
R2 = Corsi
X2 = { Codice, Docente }
R3 = Esami
X3 = { Studente, Voto, Corso }
Schema di base di dati
R= { Studenti (Matricola, ...),
Esami (Studente, Voto, Corso),
Corsi (Codice, Docente) }
Database Relazionali - Definizioni
Una istanza di relazione (o anche semplicemente relazione) su
uno schema di relazione R(X) è un insieme di t t-uple su X.
Informalmente, una istanza di relazione è l’insieme di righe dei suoi
dati.
(Studenti)
276545
565211
446212
656422
Rossi
Bruni
Lorenzi
Vulturi
Maria
Aldo
Silvio
Paolo
21/10/1971
12/03/1973
06/06/1970
22/08/1974
Una istanza di base di dati su uno schema di base di dati DB è un insieme di
relazioni t = { t1, ..., tn } dove ogni elemento ti è una relazione sullo schema di
relazione Ri(Xi)
Informalmente, una istanza di base di dati è l’insieme di tutti i dati di tutte le
tabelle del database
Un database è l’insieme del suo schema (tabelle vuote) e della sua
istanza (dati che popoleranno le tabelle)
Valori Nulli
•In alcuni casi è necessario assegnare ad un attributo un valore non
significativo perché:
–non se ne conosce il valore
–non è significativo per gli altri attributi
–deve essere inserito in un secondo momento
Non sempre esiste un valore al quale sia possibile assegnare il significato
di “nullo”, per cui viene introdotto un valore “speciale” NULL.
Non tutte le colonne possono essere nulle (ad esempio, un numero di
matricola nella tabella STUDENTI).
Occorre un controllo per evitare che la presenza multipla di più NULL in
righe diverse generi ambiguità o faccia perdere di significato la tupla
considerata.
Esami Studente Voto
NULL
NULL
NULL
656422
28
26
26
30
Corso
NULL
A10
A10
A45
inutilizzabile
ambiguo
Vincoli di integrità
•
•
•
è una proprietà che deve essere soddisfatta dalle istanze per potere esse
rappresentare informazioni corrette. I vincoli sono di due categorie:
vincoli intrarelazionali (all’interno di una relazione)
– vincolo su valori (ad esempio, VOTO compreso fra 18 e 30)
– vincolo di t-upla (ad esempio, LODE non può esserci se il VOTO è inferiore
a 30)
vincoli interrelazionali (su più relazioni), ad esempio una tupla in ESAMI
per essere valida deve contenere un numero di matricola che esista anche in
STUDENTI
Studenti
Matricola Cognome Nome Nascita
276545 Rossi
Maria 21/10/1971
565211 Bruni
Aldo 12/03/1973
446212 Lorenzi Silvio 06/06/1970
446212 Vulturi Paolo 22/08/1974
Esami
Studente
276545
565211
446212
999100
Voto
36
28
25
30
Lode
X
X
Corso
A04
A10
A23
A45
Chiave - 1
insieme di attributi utilizzato per identificare
univocamente le t-uple di una relazione
• superchiave: un insieme K di attributi è superchiave di R se non contiene
due t-uple distinte, ad esempio come chiave si può prendere l’insieme di
tutti gli attributi della relazione .
• chiave: un insieme K è chiave se è una superchiave minimale (cioè non
contiene al suo interno altre superchiavi)
Studenti
Cognome Nome
Rossi
Maria
Bruni
Aldo
Lorenzi Silvio
Vulturi Paolo
Nascita
21/10/1971
12/03/1973
06/06/1970
22/08/1974
Corso
Ing. Meccan.
Ing. Civile
Ing. Inform.
Ing. Inform.
{ Cognome, Nome, Nascita, Corso } è superchiave, e contiene la
superchiave minimale (ossia, la chiave) {Cognome, Nome, Nascita }
nell’ipotesi che siano sufficienti a distinguere le singole persone.
Chiave - 2
•Per trovare una chiave, si cerca una superchiave e si scartano quanti più attributi
possibili, fino a restare con quelli indispensabili, che rappresenteranno una chiave.
•In una relazione possono esistere più chiavi, tutte egualmente valide.
•Nei casi reali, è quasi impossibile trovare attributi che siano sempre identificanti e
disponibili (noti). Per ovviare a questo problema, si introduce un attributo avente il
compito specifico di fare da chiave, motivo della nascita di matricole, numeri di
targa, codici fiscali eccetera.
•La presenza indiscriminata di valori nulli negli attributi può rendere impossibile o
inutile l’uso di una chiave.
impossibile
inutile
Matricola Cognome Nome
NULL
Rossi
Maria
565211 Bruni
Aldo
NULL
Lorenzi Silvio
446212 Lorenzi Silvio
Nascita
NULL
12/03/1973
06/06/1970
NULL
Corso
Ing. Meccan.
Ing. Civile
Ing. Inform.
Ing. Inform.
Chiavi : { Cognome, Nome, Nascita } e { Matricola }
Se esiste almeno un valore nullo su tutte le chiavi, la tupla non è più identificabile
Se esiste almeno un valore nullo su almeno una chiave, potrebbe sorgere ambiguità
Per evitare problemi, si definisce una delle chiavi come primaria, e si impone per
essa l’assenza di valori nulli.
Vincoli di Integrità Referenziale
Un Vincolo di Integrità Referenziale (foreign key) fra un insieme di
attributi X di una relazione R1 ed un’altra relazione R2 è soddisfatto se i
valori su X per ogni tupla di R2 figurano come chiave primaria su R2.
Codice
1123
1256
1433
2300
Prov.
RM
RM
SA
BA
Articolo Prov. Numero
567
RM 2F8534
125
RM 6D9909
322
FI
D45668
219
NA F81642
Numero Proprietario
6H5567 Rossi Mario
6D9909 Broni Aldo
2F8534 Sineri Luigi
998342
Russo Paolo
Agente
55-89
12-88
82-33
23-43
Agente
40-10
12-88
82-33
23-43
Nome
Mico Sergio
Luni Piero
Ronchi Aldo
Busi Nemo
Basi di Dati Relazionali
Rispetto agli altri modelli (reticolare, gerarchico), il
modello relazionale è basato su valori, quindi:
• richiede di rappresentare solo ciò che è rilevante da
parte dell’utente (altri modelli richiedono di tenere
conto di altri campi, necessari alla gestione interna).
Questo implica che:
• è semplice spostare l’informazione da un
contesto ad un altro (ad esempio, da un
calcolatore ad un altro).
• la rappresentazione logica non fa riferimento a
quella fisica.
Cenni di Algebra Relazionale - 1
L’algebra relazionale è un linguaggio procedurale, ossia un linguaggio
in cui le operazioni complesse vengono specificate descrivendo il
procedimento da seguire per ottenere la soluzione.
L’algebra relazionale fornisce dei procedimenti formali per effettuare
operazioni di uso comune sulle relazioni (tabelle), come estrazione di
particolari dati, aggiornamenti eccetera.
La formalizzazione consente di verificare la correttezza delle operazioni che
vengono fatte, nonche’ di (se possibile) ottimizzarle.
L’algebra relazionale è costituita da un insieme di operatori che in ingresso
accettano delle relazioni e che in uscita ne producono altre, ottenute
elaborando quelle di ingresso. Le tabelle ottenute in uscita prendono il
nome di viste, in quanto il calcolo di cui rappresentano il risultato è un
filtro logico che serve ad ottenere le sole informazioni che interessano (la
“vista” che si vuole in quel momento avere dell’intero db).
Cenni di Algebra Relazionale - 2
Unione
l’unione di due relazioni è una relazione che contiene le t-uple che
appartengono alla prima o alla seconda o ad entrambe.
STUDENTI
LAUREATI
Cognome
Cognome
Nome
Nome
Paperino
Paolino
Rossi
Paolo
Mickey
Mouse
Verdi
Mario
LAUREATI  STUDENTI
Cognome
Paperino
Rossi
Verdi
Mickey
Nome
Paolino
Paolo
Mario
Mouse
Cenni di Algebra Relazionale - 3
Differenza
la differenza di due relazioni è una relazione che contiene le tuple
che appartengono alla prima e non appartengono alla seconda.
STUDENTI
LAUREATI
Cognome
Cognome
Nome
Nome
Paperino
Paolino
Paperino
Paolino
Mickey
Mouse
Verdi
Mario
LAUREATI - STUDENTI
Cognome Nome
Mickey
Mouse
Cenni di Algebra Relazionale - 4
Intersezione
l’intersezione di due relazioni è una relazione che contiene le tuple che
appartengono alla prima e alla seconda.
STUDENTI
LAUREATI
Cognome
Cognome
Nome
Nome
Paperino
Paolino
Paperino
Paolino
Mickey
Mouse
Verdi
Mario
LAUREATI  STUDENTI
Cognome Nome
Paperino Paolino
Cenni di Algebra Relazionale - 5
Prodotto Cartesiano
Il prodotto cartesiano di due relazioni è una relazione che contiene
tutte le possibili combinazioni di tuple prese da entrambe le relazioni.
STUDENTI
FACOLTA
Facolta
ing
let
ing
matricola cognome
11
Paolino
12
Pluto
10
Mouse
STUDENTI x FACOLTA
matricola
11
12
10
11
12
10
11
12
10
cognome
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Facolta
ing
ing
ing
let
let
let
ing
ing
ing
Stud
10
10
10
11
11
11
12
12
12
stud
10
11
12
Cenni di Algebra Relazionale - 6
Selezione 
la selezione produce un sottoinsieme delle t-uple su tutti
gli attributi (seleziona alcune righe sulla base di un dato
criterio).
 (STUDENTI x FACOLTA) mat=stud
STUDENTI x FACOLTA
matricola
11
12
10
11
12
10
11
12
10
cognome
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Facolta
ing
ing
ing
let
let
let
ing
ing
ing
matricola
Stud
10
10
10
11
11
11
12
12
12
11
12
10
11
12
10
11
12
10
cognome
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Facolta
ing
ing
ing
let
let
let
ing
ing
ing
Stud
10
10
10
11
11
11
12
12
12
Cenni di Algebra Relazionale - 7
Proiezione 
la proiezione genera un risultato cui contribuiscono tutte le tuple, ma
su un sottoinsieme degli attributi (sostanzialmente, si prendono
alcune colonne della relazione, eliminando quelle eventualmente
ripetute)
STUDENTI x FACOLTA
Matricola
11
12
10
11
12
10
11
12
10
Cognome Facolta
Paolino
ing
Pluto
ing
Mouse
ing
Paolino
let
Pluto
let
Mouse
let
Paolino
ing
Pluto
ing
Mouse
ing
Stud
10
10
10
11
11
11
12
12
12
 (STUDENTI x FACOLTA) cognome, facoltà
Cognome
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Facolta
ing
ing
ing
let
let
let
ing
ing
ing
Cognome
Paolino
Pluto
Mouse
Paolino
Pluto
Mouse
Facolta
ing
ing
ing
let
let
let
Cenni di Algebra Relazionale - 8
Join Naturale
il Join naturale unisce due relazioni aventi entrambe un certo numero di
colonne comuni, generando una terza relazione che contiene tutte le
colonne delle due relazioni, e tutte le righe delle due relazioni che hanno
valori uguali nelle colonne (attributi) comuni. Se si escludono le colonne
non comuni della seconda relazione, si parla di semi-join.
S
C
3
6
6
7
E
1
2
8
2
C
3
6
9
R

B
2
5
8

R
A
1
4
7
S
A
B
C
E
1
2
3
1
4
5
6
2
4
5
6
8
Cenni di Algebra Relazionale - 9
E
1
2
8
2

S
left
right
C
3
6
9
R

S
C
3
6
6
7
B
2
5
8
S

R
A
1
4
7

R

R

Il join esclude le righe della prima e seconda
relazione quando esse non hanno attributi comuni
uguali.
Se si vogliono includere le righe della prima,
seconda, o entrambe, si usano i join sinistro,
destro, o totale.
Quando sono coinvolte a qualunque titolo le righe
con valori non coincidenti negli attributi comuni si
parla di outer join (join esterno), altrimenti si
parla di inner join (join interno)
S
full
A
1
4
4
7
B
2
5
5
8
A
B
1
2
4
5
4
5
Null Null
A
B
1
2
4
5
4
5
7
8
Null Null
C
3
6
6
9
C
3
6
6
7
C
3
6
6
9
7
E
1
2
8
Null
E
1
2
8
2
E
1
2
8
Null
2
Cenni di Algebra Relazionale - 10
L’equi-join si ha quando non esistono attributi comuni, ma si decide comunque di voler unire
le due relazioni, specificando quali attributi (colonne) debbano essere uguali.
Se l’espressione, anziché una semplice uguaglianza fra due attributi di due relazioni, è più
complessa, il join prende il nome di theta-join
Codice
H4
S
N6
G8
Nome
Marte
Urano
Giove

R

R
Imp. Progetto
Polda
H4
Versi
H4
Rossi
N6
progetto=codice
S
Imp. Progetto Codice Nome
Polda
H4
H4
Marte
Versi
H4
H4
Marte
Rossi
N6
N6
Urano