Il modello relazionale dei dati
Prof. Alfredo Pulvirenti (A-L)
Prof. Salvatore Alaimo (M-Z)
(Atzeni-Ceri Capitolo 2)
Definizione
• Un modello dei dati è un insieme di
meccanismi di astrazione per definire una base
di dati, con associato un insieme predefinito di
operatori e di vincoli di integrità.
• Questi meccanismi di astrazione rivestono un
ruolo equivalente a quello delle strutture dati
nella programmazione.
Il modello relazionale dei dati
• Introdotto da E.F. Codd nel 1970
• Implementa bene il concetto di indipendenza dei
dati
• Oggi è di gran lunga il modello dei dati più diffuso
• Implementato nei DBMS commerciali dal 1981
• E’ basato sul concetto matematico di RELAZIONE
Relazione: tre accezioni
• relazione matematica: come nella teoria
degli insiemi
• relazione secondo il modello relazionale dei
dati
• relazione (dall’inglese relationship) che
rappresenta una classe di fatti, nel modello
Entità-Relazione; tradotto anche con
associazione o correlazione
Relazione matematica: esempio
a x
D1={a,b} a y
D2={x,y,z} a z
prodotto cartesiano D1 × D2 b x
b y
b z
una relazione r ⊆ D1 × D2 a x
a z
b y
Relazione matematica
• D1, …, Dn (n insiemi anche non distinti)
• prodotto cartesiano D1×…×Dn:
– l’insieme di tutte le n-uple (d1, …, dn) tali
che d1∈D1, …, dn ∈ Dn
• relazione matematica su D1, …, Dn:
– un sottoinsieme di D1×…×Dn.
• D1, …, Dn sono i domini della relazione
Relazione matematica: proprietà
• una relazione matematica è un insieme di
n-uple ordinate:
– (d1, …, dn) tali che d1∈D1, …, dn ∈ Dn
• una relazione è un insieme dove:
– non c'è ordinamento fra le n-uple
– le n-uple sono distinte
– ciascuna n-upla è ordinata: l’ i-esimo valore
proviene dall’i-esimo dominio
Relazione matematica: esempio
Partite ⊆ stringa × stringa × intero × intero
Juve Lazio 3 1
Lazio Milan 2 0
Juve Roma 0 2
Roma Milan 0 1
• Ciascuno dei domini ha ruoli diversi,
distinguibili attraverso la posizione:
– La struttura è posizionale
Struttura non posizionale
• A ciascun dominio si associa un nome unico nella
tabella (attributo), che ne descrive il "ruolo"
Casa Fuori RetiCasa RetiFuori
Juve Lazio 3 1
Lazio Milan 2 0
Juve Roma 0 2
Roma Milan 0 1
Struttura non posizionale (2)
Casa Fuori RetiCasa RetiFuori
Juve Lazio 3 1
Lazio Milan 2 0
Juve Roma 0 2
Roma Milan 0 1
Schema di relazione
• Uno schema di relazione R : {T} è una
coppia formata dal nome di una relazione
R e da un tipo relazione T
Definizione Tipo Relazione
• Interi, Reali, Booleani, Stringhe sono tipi primitivi
• Siano T1, T2, …, Tn tipi primitivi e A1, A2, …, An
etichette, dette attributi, allora
(A1 :T1 , A2 :T2 , …, An :Tn) è un tipo n-upla di grado n
• Se T è un tipo n-upla allora {T} è un tipo relazione
(tipo insieme di n-uple)
Schema Relazionale
• Uno Schema Relazionale è costituito da:
– un insieme di schemi di relazione
Ri : {Ti}, i=1, 2,…, k
– un insieme di vincoli di integrità relativi a tali
schemi.
• Lo schema relazionale costituisce l’aspetto
intensionale
Aspetto estensionale
• Una n-upla t = (A1:= v1, A2:= v2,…, An:= vn) di
tipo (A1 :T1 , A2 :T2 , …, An :Tn) è un insieme di
coppie (Ai , vi) con vi di tipo Ti.
• Una Relazione R di tipo
{(A1 :T1 , A2 :T2 , …, An :Tn)} è un insieme finito
di n-uple di tipo (A1 :T1 , A2 :T2 , …, An :Tn).
• La cardinalità di una relazione è il numero di n-
uple
Esempio di relazione
Nome Matricola Indirizzo Telefono
Mario Rossi 123456 Via Etnea 18 777777
Maria Bianchi 234567 Via Roma 2 888888
Giovanni Verdi 345678 Via Etnea 18 999999
Enzo Gialli 456789 Via Catania 3 444444
• E’ una relazione di tipo
{(Nome : Stringa, Matricola : intero,
Indirizzo : Stringa, Telefono : intero )}
• Ciascuna riga è una n-upla della relazione.
Esempio di schema relazionale
{
Studenti : { (Nome : stringa, Matricola : intero(6),
Indirizzo : stringa, Telefono :intero(6)) }
Esami : { (Corso : stringa, Matricola : intero(6), Voto: {18,19,…,30}) }
Corsi : { (Corso: stringa, Professore: stringa) }
}
• Si abbrevia (se non interessa riportare il tipo degli attributi) in:
– Studenti (Nome, Matricola, Indirizzo, Telefono);
– Esami (Corso, Matricola, Voto);
– Corsi (Corso, Professore);
Dominio di un attributo
• dom(Ai) è l’insieme dei possibili valori
dell’attributo Ai
• Esempio: nella tabella
Esami(Corso, Matricola, Voto)
dom(Voto) = {18,19,…,30}
Vincoli di integrità
• I vincoli di integrità servono a migliorare la qualità
delle informazioni contenute nella base di dati
• Un vincolo è un predicato che deve essere soddisfatto
da ogni n-upla nella base di dati
• Un’istanza valida di uno schema di relazione è una
relazione dello schema che soddisfa tutti i vincoli di
integrità.
Esempio di vincoli d’integrità
• Il voto deve essere compreso tra 18 e 30
• La lode può apparire solo se voto =30
• Ogni studente deve avere un numero di matricola
• Il numero di matricola di uno studente deve essere
univoco
• Esami dati devono fare riferimento solo a corsi
offerti
Vincoli d’integrità
• I tre tipi più importanti
specificano:
1. Quali attributi non possono
Vincoli
assumere il valore NULL Intrarelazionali
2. Quali attributi sono chiave
1. Quali attributi sono chiavi Vincolo
esterne Interrelazionale
Esempio di valori nulli
Nome Matricola Indirizzo Telefono
Mario Rossi 123456 Via Etnea 18 777777
Maria Bianchi 234567 Via Roma 2 888888
Giovanni Verdi 345678 NULL 999999
Enzo Gialli 456789 Via Catania 3 NULL
Chiavi
• Un insieme X di attributi di uno schema di
relazione R è una superchiave dello schema se
ogni istanza valida dello schema non contiene
due n-uple distinte t1 e t2 con t1[X] = t2[X]
• Una chiave è una superchiave minimale
rispetto alla relazione ⊆ (non contiene un’altra
superchiave).
Esempi di chiavi
• La coppia {Nome, Matricola} è una superchiave ma non
è una chiave, infatti
• {Matricola} è una chiave
Nome Matricola Indirizzo Telefono
Mario Rossi 123456 Via Etnea 18 777777
Maria Bianchi 234567 Via Roma 2 888888
Giovanni Verdi 345678 Via Etnea 18 999999
Enzo Gialli 456789 Via Catania 3 444444
Un’altra chiave
• L’attributo {Nome} è una chiave?
• Sì, in questa istanza..
• Ma è sempre vero?
Nome Matricola Indirizzo Telefono
Mario Rossi 123456 Via Etnea 18 777777
Maria Bianchi 234567 Via Roma 2 888888
Giovanni Verdi 345678 Via Etnea 18 999999
Enzo Gialli 456789 Via Catania 3 444444
Esistenza delle chiavi
• Una relazione non può contenere n-uple
distinte ma uguali
• Ogni relazione ha come superchiave
l’insieme degli attributi su cui è definita
e quindi ha (almeno) una chiave
Importanza delle chiavi
• L’esistenza delle chiavi garantisce
l’accessibilità a ciascun dato della base di
dati
• Le chiavi permettono di correlare i dati in
relazioni diverse:
– Il modello relazionale è basato su valori
Chiavi e valori nulli
• In presenza di valori nulli, i valori della
chiave non permettono:
– di identificare le n-uple
– di realizzare facilmente i riferimenti da altre
relazioni
Chiave primaria
• La Chiave Primaria è una delle chiavi scelta
per un dato schema.
• Non ammette valori NULL
• Notazione: Sottolineatura
Nome Matricola Indirizzo Telefono
Mario Rossi 123456 Via Etnea 18 777777
Maria Bianchi 234567 Via Roma 2 888888
Giovanni Verdi 345678 Via Etnea 18 999999
Enzo Gialli 456789 Via Catania 3 444444
Chiavi esterne
• Un insieme di attributi {A1, A2 , …, An} di
uno schema di relazione R è una chiave
esterna che riferisce una chiave primaria
{B1, B2 , …, Bn} di un altro schema S se in
ogni istanza valida della base di dati, per
ogni n-upla r dell’istanza di R esiste una
n-upla s (riferita da r) dell’istanza di S
tale che r.Ai = s.Bi per i=1,…n.
Esempio di chiave esterna
Esami
Notazione chiave esterna: Corso Matricola Voto
Sottolineatura tratteggiata
Programmazione 1 345678 27
Architettura 123456 30
Matematica discreta 234567 19
Basi di Dati 345678 28
Studenti
Nome Matricola Indirizzo Telefono
Mario Rossi 123456 Via Etnea 18 777777
Maria Bianchi 234567 Via Roma 2 888888
Giovanni Verdi 345678 Via Etnea 18 999999
Enzo Gialli 456789 Via Catania 3 444444
Esempio di chiave esterna
Esami
Corso Matricola Voto
Programmazione 1 345678 27
Architettura 123456 30
Matematica discreta 234567 19
Algoritmi 345678 28
Corsi
Corso Professore
Architettura Barbanera
Programmaizione 1 Cincotti
Matematica discreta Milici
Algoritmi Cantone
Esercizi
1. Individuare le chiavi e i vincoli di integrità referenziale che sussistono
nella seguente basi di dati. Individuare anche quali attributi possano
ammettere valori nulli.
Pazienti Ricoveri
Cod. Cognome Nome Paz. Inizio Fine Rep
A102 Necchi Luca A102 2/5/11 9/5/11 A
B372 Rossini Piero A102 2/12/11 2/1/12 A
B543 Missoni Nadia S555 25/4/11 3/5/11 B
B444 Missoni Luigi B444 1/12/11 2/1/12 B
S555 Rossetti Gino S555 5/10/11 1/11/11 A
Medici
Matr. Cogn. Nome Rep
203 Neri Piero A
Reparti
574 Bisi Mario B
Cod. Nome Primario
461 Bargio Sergio B
A Chirurgia 203
530 Belli Nicola C
B Pediatria 574
405 Mizzi Nicola A
C Medicina 530
501 Monti Mario A
Esercizi
1. Definire uno schema relazionale per organizzare le informazioni di
un’azienda che ha impiegati (ognuno con codice fiscale, cognome, nome e
data di nascita), filiali (con codice, sede e direttore, che è un impiegato).
Ogni lavoratore lavora presso una filiale. Indicare le chiavi e i vincoli di
integrità referenziale dello schema. Mostrare un’istanza della base di dati
e verificare che soddisfa i vincoli.
Esercizi
1. Un albero genealogico rappresenta, in forma grafica, la struttura di una
famiglia (o più famiglie, quando è ben articolato). Mostrare come si possa
rappresentare, in una base di dati relazionale, un albero genealogico,
cominciando eventualmente da una struttura semplificata, in cui si
rappresentano solo le discendenze in linea maschile (cioè i figli vengono
rappresentati solo per i componenti di sesso maschile) oppure solo quelle
in linea femminile.