Capitolo 2
Capitolo 2
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 2
Basi di dati, Capitolo 2
• relazione matematica : come nella teoria • D1, …, Dn (n insiemi anche non distinti)
degli insiemi • prodotto cartesiano D1×…×Dn:
• relazione (dall’inglese relationship) che • l’insieme di tutte le n-uple (d1, …, dn)
rappresenta una classe di fatti, nel tali che d1∈D1, …, dn ∈ Dn
modello Entity-Relationship; tradotto • relazione matematica su D1, …, Dn:
anche con associazione o correlazione • un sottoinsieme di D1×…×Dn.
• relazione secondo il modello relazionale • D1, …, Dn sono i domini della relazione
dei dati
1
Relazione matematica, esempio Relazione matematica, proprietà
• La struttura è posizionale
• Una tabella rappresenta una relazione se • i riferimenti fra dati in relazioni diverse
• i valori di ogni colonna sono fra loro sono rappresentati per mezzo di valori
omogenei dei domini che compaiono nelle ennuple
• 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
2
studenti Matricola Cognome Nome Data di nascita studenti Matricola Cognome Nome Data di nascita
6554 Rossi Mario 05/12/1978 6554 Rossi Mario 05/12/1978
8765 Neri Paolo 03/11/1976 8765 Neri Paolo 03/11/1976
9283 Verdi Luisa 12/11/1979 9283 Verdi Luisa 12/11/1979
3456 Rossi Maria 01/02/1978 3456 Rossi Maria 01/02/1978
esami Studente Voto Corso esami Studente Voto Corso
3456 30 04 30
3456 24 02 24
9283 28 01 28
6554 26 01 26
corsi Codice Titolo Docente corsi Codice Titolo Docente
01 Analisi Mario 01 Analisi Mario
02 Chimica Bruni 02 Chimica Bruni
04 Chimica Verdi 04 Chimica Verdi
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 13 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 14
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2
Definizioni, 2 Definizioni, 3
3
Relazioni su singoli attributi Strutture nidificate
Da Filippo Da Filippo
studenti Via Roma 2, Roma Via Roma 2, Roma
Matricola Cognome Nome Data di nascita
6554 Rossi Mario 05/12/1978 Ricevuta Fiscale Ricevuta Fiscale
8765 Neri Paolo 03/11/1976 1235 del 12/10/2000 1240 del 13/10/2000
9283 Verdi Luisa 12/11/1979 3 Coperti 3,00 2 Coperti 2,00
3456 Rossi Maria 01/02/1978 2 Antipasti 6,20 2 Antipasti 7,00
3 Primi 12,00 2 Primi 8,00
2 Bistecche 18,00 2 Orate 20,00
studenti lavoratori Matricola 2 Caffè 2,00
6554
3456
Totale 39,20 Totale 39,00
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 19 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 20
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2
4
Informazione incompleta:
Informazione incompleta: soluzioni?
motivazioni
• non conviene (anche se spesso si fa) usare
Nome SecondoNome Cognome valori del dominio (0, stringa nulla, “99”, ...):
Franklin Delano Roosevelt • potrebbero non esistere valori “non
utilizzati”
Winston Churchill
Charles De Gaulle • valori “non utilizzati” potrebbero diventare
significativi
Josip Stalin
• in fase di utilizzo (nei programmi) sarebbe
necessario ogni volta tener conto del
“significato” di questi valori
Informazione incompleta
Troppi valori nulli
nel modello relazionale
studenti Matricola Cognome Nome Data di nascita
• Tecnica rudimentale ma efficace: 6554 Rossi Mario 05/12/1978
• valore nullo: denota l’assenza di un valore 9283 Verdi Luisa 12/11/1979
del dominio (e non è un valore del dominio) NULL Rossi Maria 01/02/1978
• t[A], per ogni attributo A, è un valore del esami Studente Voto Corso
dominio dom(A) oppure il valore nullo NULL NULL 30 NULL
• Si possono (e debbono) imporre restrizioni NULL 24 02
9283 28 01
sulla presenza di valori nulli
corsi Codice Titolo Docente
01 Analisi Mario
02 NULL NULL
04 Chimica Verdi
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 27 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 28
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2
5
Una base di dati "scorretta" Vincolo di integrità
Tipi di vincoli
6
Vincoli di ennupla Sintassi ed esempi
7
Un'altra chiave Un'altra chiave??
Matricola Cognome Nome Corso Nascita
Matricola Cognome Nome Corso Nascita
Ing Inf 27655 Rossi Mario Ing Inf 5/12/78
27655 Rossi Mario
Rossi Mario 5/12/78
5/12/78
78763 Rossi Mario Ing Civile 3/11/76
78763 Rossi
Rossi Mario
Mario Ing Inf 3/11/76
3/11/76
65432 Neri Piero Ing Mecc 10/7/79
65432 Neri Piero Ing Mecc 10/7/79
87654 Neri Mario Ing Inf 3/11/76
87654 Neri Mario
Mario Ing Inf 3/11/76
3/11/76
67653 Rossi Piero Ing Mecc 5/12/78
67653 Rossi
Rossi Piero Ing Mecc 5/12/78
5/12/78
• Cognome, Nome, Nascita è un’altra • Non ci sono ennuple uguali su Cognome
chiave: e Corso:
• è superchiave • Cognome e Corso formano una chiave
• minimale • Ma è sempre vero?
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 43 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 44
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2
8
Importanza delle chiavi Chiavi e valori nulli
Chiave primaria
Matricola Cognome Nome Corso Nascita
NULL NULL
NULL Mario Ing Inf 5/12/78 • Chiave su cui non sono ammessi nulli
78763 Rossi Mario Ing Civile 3/11/76 • Notazione: sottolineatura
65432 Neri Piero Ing Mecc 10/7/79
Matricola Cognome Nome Corso Nascita
87654
87654 Neri
Neri Mario
Mario Ing
Ing Inf
Inf NULL
NULL 86765 NULL Mario Ing Inf 5/12/78
NULL
NULL Neri
Neri Mario
Mario NULL
NULL 5/12/78
5/12/78 78763 Rossi Mario Ing Civile 3/11/76
65432 Neri Piero Ing Mecc 10/7/79
• La presenza di valori nulli nelle chiavi 87654 Neri Mario Ing Inf NULL
deve essere limitata
43289 Neri Mario NULL 5/12/78
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 51 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 52
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2
Infrazioni
Integrità referenziale Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K
• informazioni in relazioni diverse sono 53524 4/3/95 3295 TO E39548
correlate attraverso valori comuni 64521 5/4/96 3295 PR 839548
• in particolare, valori delle chiavi 73321 5/2/98 9345 PR 839548
(primarie)
• le correlazioni debbono essere Vigili Matricola Cognome Nome
"coerenti" 3987 Rossi Luca
3295 Neri Piero
9345 Neri Mario
9
Infrazioni Vincolo di integrità referenziale
Codice Data Vigile Prov Numero
34321 1/2/95 3987 MI 39548K
• Un vincolo di integrità referenziale
53524 4/3/95 3295 TO E39548
(“foreign key”) fra gli attributi X di
64521 5/4/96 3295 PR 839548
una relazione R1 e un’altra relazione
73321 5/2/98 9345 PR 839548 R2 impone ai valori su X in R1 di
comparire come valori della chiave
Auto Prov Numero Cognome Nome primaria di R2
MI 39548K Rossi Mario
TO E39548 Rossi Mario
PR 839548 Neri Luca
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 55 24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 56
Basi di dati, Capitolo 2 Basi di dati, Capitolo 2
10
Azioni compensative Eliminazione in cascata
Impiegati Matricola Cognome Progetto
• Esempio: 34321 Rossi IDEA
• Viene eliminata una ennupla 53524 Neri XYZ
causando una violazione 64521 Verdi NULL
Progetti Codice Inizio Durata Costo Auto Prov Numero Cognome Nome
IDEA 01/2000 36 200 MI 39548K Rossi Mario
XYZ 07/2001 24 120 TO E39548 Rossi Mario
BOH 09/2001 24 150 PR 839548 Neri Luca
24/09/2002 Atzeni-Ceri-Paraboschi-Torlone, 65
Basi di dati, Capitolo 2
11