E. GiunchigliaBasi di dati 1
(trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 2)
Capitolo 2:
IL MODELLO RELAZIONALEIL MODELLO RELAZIONALE
21/09/2004
21/9/2004 Basi di Dati 1: Il modello relazionale 2
I modelli logici dei dati
• Tre modelli logici tradizionali• gerarchico • reticolare • relazionale
• Più recente (e poco diffuso)• a oggetti
21/9/2004 Basi di Dati 1: Il modello relazionale 3
Modelli logici, caratteristiche
• Gerarchico e reticolare• utilizzano riferimenti espliciti (puntatori) fra
record• Relazionale "è basato su valori"
• anche i riferimenti fra dati in strutture (relazioni) diverse sono rappresentati per mezzo dei valori stessi
21/9/2004 Basi di Dati 1: Il modello relazionale 4
Il modello relazionale
• Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati
• Disponibile in DBMS reali nel 1981 • Si basa sul concetto matematico di
relazione (con una variante) • Le relazioni hanno naturale
rappresentazione per mezzo di tabelle
21/9/2004 Basi di Dati 1: Il modello relazionale 5
Relazione: tre accezioni
• relazione matematica: come nella teoria degli insiemi
• relazione (dall’inglese relationship) che rappresenta una classe di fatti, nel modello Entity-Relationship; tradotto anche con associazione o correlazione
• relazione secondo il modello relazionale dei dati
21/9/2004 Basi di Dati 1: Il modello relazionale 6
Relazione matematica
• D1, …, Dn (n insiemi anche non distinti) • prodotto cartesiano D1×…×Dn:
• l’insieme di tutte le n-uple (d1, …, dn) tali che d1D1, …, dn Dn
• relazione matematica su D1, …, Dn:• un sottoinsieme di D1×…×Dn.
• D1, …, Dn sono i domini della relazione
21/9/2004 Basi di Dati 1: Il modello relazionale 7
Relazione matematica, esempio
• una relazione r D1 × D2
aaab
bb
xyzxyz
aab
xzy
• D1={a,b}
• D2={x,y,z}
• prodotto cartesiano D1 × D2
21/9/2004 Basi di Dati 1: Il modello relazionale 8
Relazione matematica, proprietà
• una relazione matematica è un insieme di n-uple ordinate:• (d1, …, dn) tali che d1D1, …, dn Dn
• una relazione è un insieme; quindi: • 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
21/9/2004 Basi di Dati 1: Il modello relazionale 9
Relazione matematica, esempio
• Ciascuno dei domini ha due ruoli diversi, distinguibili attraverso la posizione:• La struttura è posizionale
3200
1021
JuveLazioJuveRoma
LazioMilanRomaMilan
Partite string × string × int × int
21/9/2004 Basi di Dati 1: Il modello relazionale 10
Struttura non posizionale
3200
1021
JuveLazioJuveRoma
LazioMilanRomaMilan
• A ciascun dominio si associa un nome (attributo), che ne descrive il "ruolo"
RetiCasa RetiFuoriCasa Fuori
21/9/2004 Basi di Dati 1: Il modello relazionale 11
Tabelle e relazioni
• Una tabella rappresenta una relazione se• i valori di ogni colonna sono fra loro
omogenei • le righe sono diverse fra loro• le intestazioni delle colonne sono diverse
tra loro • In una tabella che rappresenta una relazione
• l’ordinamento tra le righe è irrilevante• l’ordinamento tra le colonne è irrilevante
21/9/2004 Basi di Dati 1: Il modello relazionale 12
Il modello è basato su valori
• i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple
21/9/2004 Basi di Dati 1: Il modello relazionale 13
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso3456 30 043456 24 029283 28 01
esami
6554 26 01
21/9/2004 Basi di Dati 1: Il modello relazionale 14
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso302428
esami
26
21/9/2004 Basi di Dati 1: Il modello relazionale 15
Struttura basata su valori: vantaggi
• indipendenza dalle strutture fisiche (si potrebbe avere anche con puntatori di alto livello) che possono cambiare dinamicamente
• si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione
• l’utente finale vede gli stessi dati dei programmatori
• i dati sono portabili piu' facilmente da un sistema ad un altro
• i puntatori sono direzionali
21/9/2004 Basi di Dati 1: Il modello relazionale 16
Definizioni• Schema di relazione:
un nome R con un insieme di attributi distinti A1, ...,
An, ogni attributo Ai associato a un dominio Di (i
domini D1, ..., Dn non sono necessariamente distinti)
R(A1,..., An)
• Schema di base di dati: insieme di schemi di relazione:
R = {R1(X1), ..., Rk(Xk)}
21/9/2004 Basi di Dati 1: Il modello relazionale 17
Definizioni, 2
• Una ennupla su un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore del dominio di A
• t[A] denota il valore della ennupla t sull'attributo A
21/9/2004 Basi di Dati 1: Il modello relazionale 18
Definizioni, 3
• (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} (con ri
relazione su Ri)
21/9/2004 Basi di Dati 1: Il modello relazionale 19
Relazioni su singoli attributi
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Matricola65543456
studenti lavoratori
21/9/2004 Basi di Dati 1: Il modello relazionale 20
Strutture nidificate
Da FilippoVia Roma 2, Roma
Ricevuta Fiscale1235 del 12/10/2000
3 Coperti 3,00
2 Bistecche 18,00
3 Primi 12,00
2 Antipasti 6,20
Totale 39,20
Da FilippoVia Roma 2, Roma
Ricevuta Fiscale1240 del 13/10/2000
2 Coperti 2,00
2 Orate 20,00
2 Primi 8,00
2 Antipasti 7,00
2 Caffè 2,00
Totale 39,00
21/9/2004 Basi di Dati 1: Il modello relazionale 21
Relazioni che rappresentano strutture nidificate
1235
3 Coperti 3,00
2 Bistecche 18,00
3 Primi 12,00
2 Antipasti 6,20
39,2012/10/2000
Numero TotaleData
1240 39,0013/10/2000
Ricevute
Dettaglio Qtà Descrizione Importo
1235
Numero
1240
1235
1235
1235
2 Coperti 2,00… … … …
21/9/2004 Basi di Dati 1: Il modello relazionale 22
Strutture nidifcate, riflessione
• Abbiamo rappresentato veramente tutti gli aspetti delle ricevute?
• Dipende da che cosa ci interessa! • l'ordine delle righe e' rilevante?• possono esistere linee ripetute in una
ricevuta?
• Sono possibili rappresentazioni diverse
21/9/2004 Basi di Dati 1: Il modello relazionale 23
Rappresentazione alternativa per strutture nidificate
1235
3 Coperti 3,00
2 Bistecche 18,00
3 Primi 12,00
2 Antipasti 6,20
39,2012/10/2000
Numero TotaleData
1240 39,0013/10/2000
Ricevute
Dettaglio Qtà Descrizione Importo
1235
Numero
1240
1235
1235
1235
2 Coperti 2,00… … … …
1
4
3
2
Riga
1…
21/9/2004 Basi di Dati 1: Il modello relazionale 24
Informazione incompleta
• ll modello relazionale impone ai dati una struttura rigida: • le informazioni sono rappresentate
per mezzo di ennuple • solo alcuni formati di ennuple sono
ammessi: quelli che corrispondono agli schemi di relazione
• I dati disponibili possono non corrispondere al formato previsto
21/9/2004 Basi di Dati 1: Il modello relazionale 25
Informazione incompleta: motivazioni
Franklin RooseveltDelano
Nome CognomeSecondoNome
Winston Churchill
Charles De Gaulle
Josip Stalin
21/9/2004 Basi di Dati 1: Il modello relazionale 26
Informazione incompleta: soluzioni?
• non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...): • potrebbero non esistere valori “non
utilizzati” • valori “non utilizzati” potrebbero diventare
significativi • in fase di utilizzo (nei programmi) sarebbe
necessario ogni volta tener conto del “significato” di questi valori
21/9/2004 Basi di Dati 1: Il modello relazionale 27
Informazione incompleta nel modello relazionale
• Tecnica rudimentale ma efficace:• valore nullo: denota l’assenza di un valore
del dominio (e non è un valore del dominio) • t[A], per ogni attributo A, è un valore del
dominio dom(A) oppure il valore nullo NULL• Si possono (e debbono) imporre restrizioni
sulla presenza di valori nulli
21/9/2004 Basi di Dati 1: Il modello relazionale 28
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/1978
NULL Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 NULL NULL04 Chimica Verdi
corsi
Studente Voto CorsoNULL 30 NULLNULL 24 029283 28 01
esami
Troppi valori nulli
21/9/2004 Basi di Dati 1: Il modello relazionale 29
Tipi di valore nullo
• (almeno) tre casi differenti• valore sconosciuto: esiste il valore,
ma non lo si conosce• valore inesistente: non esiste il valore• valore senza informazione: non si sa
se esiste il valore • I DBMS non distinguono i tipi di valore
nullo
21/9/2004 Basi di Dati 1: Il modello relazionale 30
Vincoli di integrità
• Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse
21/9/2004 Basi di Dati 1: Il modello relazionale 31
Una base di dati "scorretta"
Studente Voto Lode Corso32 01276545
276545 30 e lode 02787643 27 e lode 03739430 24 04
Esami
Matricola276545787643787643
CognomeRossiNeri
Bianchi
NomeMarioPieroLuca
Studenti
787643787643
32
27 e lode739430
21/9/2004 Basi di Dati 1: Il modello relazionale 32
Vincolo di integrità
• Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione
• Un vincolo è una funzione booleana (un predicato):associa ad ogni istanza il valore vero o falso
21/9/2004 Basi di Dati 1: Il modello relazionale 33
• descrizione più accurata della realtà • contributo alla “qualità dei dati” • utili nella progettazione (vedremo)• usati dai DBMS nella esecuzione delle
interrogazioni
Vincoli di integrità, perché?
21/9/2004 Basi di Dati 1: Il modello relazionale 34
Vincoli di integrità, nota
• non tutte le proprietà di interesse sono rappresentabili per mezzo di vincoli formulabili in modo esplicito
21/9/2004 Basi di Dati 1: Il modello relazionale 35
Tipi di vincoli
• vincoli intrarelazionali• vincoli su valori (o di dominio) • vincoli di ennupla
• vincoli interrelazionali
21/9/2004 Basi di Dati 1: Il modello relazionale 36
Studente Voto Lode Corso32 01276545
276545 30 e lode 02787643 27 e lode 03739430 24 04
Esami
Matricola276545787643787643
CognomeRossiNeri
Bianchi
NomeMarioPieroLuca
Studenti
787643787643
32
27 e lode739430
21/9/2004 Basi di Dati 1: Il modello relazionale 37
Vincoli di ennupla
• Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple
• Caso particolare:• Vincoli di dominio: coinvolgono un
solo attributo
21/9/2004 Basi di Dati 1: Il modello relazionale 38
Sintassi ed esempi
• Una possibile sintassi: • espressione booleana di atomi che
confrontano valori di attributo o espressioni aritmetiche su di essi
(Voto 18) AND (Voto 30)
(Voto = 30) OR NOT (Lode = "e lode")
21/9/2004 Basi di Dati 1: Il modello relazionale 39
Vincoli di ennupla, esempio
ImpiegatoRossiNeri
Bruni
Stipendi Lordo55.00045.00047.000
Netto42.50035.00036.000
Ritenute12.50010.00011.000
Lordo = (Ritenute + Netto)
21/9/2004 Basi di Dati 1: Il modello relazionale 40
Identificazione delle ennuple
• non ci sono due ennuple con lo stesso valore sull’attributo Matricola
• non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita
Matricola276557876365432
NomeMario
PieroMario87654
67653
Mario
CognomeRossi
NeriNeri
Rossi
Rossi Piero
CorsoIng Inf
Ing MeccIng Inf
Ing Inf
Ing Mecc
Nascita5/12/78
10/7/793/11/76
3/11/76
5/12/78
21/9/2004 Basi di Dati 1: Il modello relazionale 41
Chiave
• insieme di attributi che identificano le ennuple di una relazione
Formalmente:• un insieme K di attributi è superchiave
per r se r non contiene due ennuple distinte t1 e t2 con t1[K] = t2[K]
• K è chiave per r se è una superchiave minimale per r (cioè non contiene un’altra superchiave)
21/9/2004 Basi di Dati 1: Il modello relazionale 42
Una chiave
• Matricola è una chiave:• è superchiave• contiene un solo attributo e quindi è
minimale
Matricola276557876365432
NomeMario
PieroMario87654
67653
Mario
CognomeRossi
NeriNeri
Rossi
Rossi Piero
CorsoIng Inf
Ing MeccIng Inf
Ing Inf
Ing Mecc
Nascita5/12/78
10/7/793/11/76
3/11/76
5/12/78
21/9/2004 Basi di Dati 1: Il modello relazionale 43
• Cognome, Nome, Nascita è un’altra chiave:• è superchiave• minimale
Matricola276557876365432
Nome
PieroMario87654
67653
Cognome
NeriNeri
MarioMario
RossiRossi
Rossi Piero
CorsoIng Inf
Ing MeccIng Inf
Ing Inf
Ing Mecc
Nascita5/12/78
10/7/793/11/76
3/11/76
5/12/78
MarioMario
RossiRossi
Rossi
5/12/78
5/12/78
Rossi
Mario 3/11/76
3/11/76Mario
Un'altra chiave
21/9/2004 Basi di Dati 1: Il modello relazionale 44
• Non ci sono ennuple uguali su Cognome e Corso: • Cognome e Corso formano una chiave
• Ma è sempre vero?
Matricola276557876365432
NomeMario
PieroMario87654
67653
Mario
CognomeRossi
NeriNeri
Rossi
Rossi Piero
CorsoIng Inf
Ing MeccIng Inf
Ing Civile
Ing Mecc
Nascita5/12/78
10/7/793/11/76
3/11/76
5/12/78
Un'altra chiave??
21/9/2004 Basi di Dati 1: Il modello relazionale 45
Vincoli, schemi e istanze
• i vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati
• interessano a livello di schema (con riferimento cioè a tutte le istanze)
• ad uno schema associamo un insieme di vincoli e consideriamo corrette/consistenti (valide, ammissibili) le istanze che soddisfano tutti i vincoli
• un'istanza può soddisfare altri vincoli (“per caso”)
21/9/2004 Basi di Dati 1: Il modello relazionale 46
• chiavi: Matricola
Cognome, Nome, Nascita
Matricola NomeCognome Corso Nascita
Studenti
21/9/2004 Basi di Dati 1: Il modello relazionale 47
• È corretta: soddisfa i vincoli• Ne soddisfa anche altri ("per caso"):
• Cognome, Corso è chiave
Matricola276557876365432
NomeMario
PieroMario87654
67653
Mario
CognomeRossi
NeriNeri
Rossi
Rossi Piero
CorsoIng Inf
Ing MeccIng Inf
Ing Civile
Ing Mecc
Nascita5/12/78
10/7/793/11/76
3/11/76
5/12/78
21/9/2004 Basi di Dati 1: Il modello relazionale 48
Esistenza delle chiavi
• Una relazione non può contenere ennuple distinte ma uguali
• Ogni relazione ha come superchiave l’insieme degli attributi su cui è definita
• e quindi ha (almeno) una chiave
21/9/2004 Basi di Dati 1: Il modello relazionale 49
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
21/9/2004 Basi di Dati 1: Il modello relazionale 50
Chiavi e valori nulli
• In presenza di valori nulli, i valori della chiave non permettono• di identificare le ennuple • di realizzare facilmente i riferimenti da
altre relazioni
21/9/2004 Basi di Dati 1: Il modello relazionale 51
Matricola
78763
65432
Nome
Piero
Mario87654
NULL
Mario
Cognome
Neri
Neri
Rossi
Neri Mario
Corso
Ing Mecc
Ing Inf
Ing Civile
NULL
Nascita
NULL MarioNULL Ing Inf 5/12/78
10/7/79
NULL
3/11/76
5/12/78Mario87654
NULL
Neri
Neri Mario
Ing Inf
NULL
NULL
5/12/78
NULL MarioNULL Ing Inf 5/12/78
• La presenza di valori nulli nelle chiavi deve essere limitata
21/9/2004 Basi di Dati 1: Il modello relazionale 52
Chiave primaria
• Chiave su cui non sono ammessi nulli• Notazione: sottolineatura
Matricola
78763
65432
Nome
Piero
Mario87654
43289
Mario
Cognome
Neri
Neri
Rossi
Neri Mario
Corso
Ing Mecc
Ing Inf
Ing Civile
NULL
Nascita
86765 MarioNULL Ing Inf 5/12/78
10/7/79
NULL
3/11/76
5/12/78
21/9/2004 Basi di Dati 1: Il modello relazionale 53
• informazioni in relazioni diverse sono correlate attraverso valori comuni
• in particolare, valori delle chiavi (primarie)
• le correlazioni debbono essere "coerenti"
Integrità referenziale
21/9/2004 Basi di Dati 1: Il modello relazionale 54
Matricola
3987
3295
9345
Vigili Cognome
Rossi
Neri
Neri
Nome
Luca
Piero
Mario
Mori Gino7543
InfrazioniCodice
34321
73321
64521
53524
Data
1/2/95
4/3/95
5/4/96
5/2/98
Vigile
3987
3295
3295
9345
Prov Numero
MI
TO
PR
PR
39548K
E39548
839548
839548
3295
3295
3987
3987
9345
3987
9345
9345
3295
3295
3295
21/9/2004 Basi di Dati 1: Il modello relazionale 55
Auto Prov Numero
MI
TO
PR
39548K
E39548
839548
Cognome
Rossi
Rossi
Neri
Nome
Mario
Mario
Luca
InfrazioniCodice
34321
73321
64521
53524
Data
1/2/95
4/3/95
5/4/96
5/2/98
Vigile
3987
3295
3295
9345
Prov Numero
MI
TO
PR
PR
39548K
E39548
839548
839548
MI
TO
PR
PR
39548K
E39548
839548
839548
MI
TO
PR
39548K
E39548
839548
21/9/2004 Basi di Dati 1: Il modello relazionale 56
• Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X in R1 di comparire come valori della chiave (primaria) di R2
Vincolo di integrità referenziale
21/9/2004 Basi di Dati 1: Il modello relazionale 57
• vincoli di integrità referenziale fra: • l’attributo Vigile della relazione
INFRAZIONI e la relazione VIGILI • gli attributi Prov e Numero di
INFRAZIONI e gli attributi Prov e Numero della relazione AUTO
21/9/2004 Basi di Dati 1: Il modello relazionale 58
InfrazioniCodice34321
733216452153524
Data1/2/954/3/955/4/965/2/98
Vigile3987329532959345
Prov NumeroMITOPRPR
39548KE39548839548839548
Auto Prov NumeroMITOPR
E39548F34268839548
CognomeRossiRossiNeri
NomeMarioMarioLuca
TO E39548
TOE39548
Violazione di vincolo di integrità referenziale
21/9/2004 Basi di Dati 1: Il modello relazionale 59
Vincoli di integrità referenziale: commenti
• Giocano un ruolo fondamentale nel concetto di “modello basato su valori”
• In presenza di valori nulli i vincoli possono essere resi meno restrittivi
• Sono possibili meccanismi per il supporto alla loro gestione ("azioni" compensative a seguito di violazioni)
• Attenzione ai vincoli su più attributi
21/9/2004 Basi di Dati 1: Il modello relazionale 60
Integrità referenziale e valori nulli
Impiegati Matricola34321
6452153524
CognomeRossiNeriVerdi
ProgettoIDEAXYZNULL
Progetti CodiceIDEA
BOHXYZ
Inizio01/200007/200109/2001
Durata362424
Costo200120150
73032 Bianchi IDEA
21/9/2004 Basi di Dati 1: Il modello relazionale 61
Azioni compensative
• Esempio:• Viene eliminata una ennupla
causando una violazione• Comportamento “standard”:
• Rifiuto dell'operazione• Azioni compensative:
• Eliminazione in cascata• Introduzione di valori nulli o di valori
di “default”
21/9/2004 Basi di Dati 1: Il modello relazionale 62
Eliminazione in cascata
Impiegati Matricola34321
6452153524
CognomeRossiNeriVerdi
ProgettoIDEAXYZNULL
73032 Bianchi IDEA
Progetti CodiceIDEA
BOHXYZ
Inizio01/200007/200109/2001
Durata362424
Costo200120150
XYZ 07/2001 24 120XYZ 07/2001 24 120XYZ 07/2001 24 120
53524 Neri XYZ
21/9/2004 Basi di Dati 1: Il modello relazionale 63
Introduzione di valori nulli
Impiegati Matricola34321
6452153524
CognomeRossiNeriVerdi
ProgettoIDEAXYZNULL
73032 Bianchi IDEA
Progetti CodiceIDEA
BOHXYZ
Inizio01/200007/200109/2001
Durata362424
Costo200120150
XYZ 07/2001 24 120XYZ 07/2001 24 120XYZ 07/2001 24 120
NULL
21/9/2004 Basi di Dati 1: Il modello relazionale 64
Auto Prov Numero
MI
TO
PR
39548K
E39548
839548
Cognome
Rossi
Rossi
Neri
Nome
Mario
Mario
Luca
IncidentiCodice
34321
64521
Data
1/2/95
5/4/96
ProvB NumeroB
MI
TO
39548K
E39548
ProvA NumeroA
TO
PR
E39548
839548
Vincoli multipli su più attributi
21/9/2004 Basi di Dati 1: Il modello relazionale 65
Vincoli multipli su più attributi, 2
• vincoli di integrità referenziale fra: • gli attributi ProvA e NumeroA di
INCIDENTI e la relazione AUTO • gli attributi ProvB e NumeroB di
INCIDENTI e la relazione AUTO
• L'ordine degli attributi è significativo