Il modello relazionale (II)
Informazione incompleta e
valori nulli
In una tupla di una relazione un attributo può
non avere valore

Per esempio: Mario Rossi non ha telefono in
Persone(Cognome,Nome,Indirizzo,Telefono)
Oppure il valore di un attributo potrebbe
esistere ma essere sconosciuto a chi inserisce
i dati nel DB

Per esempio: Mario Rossi ha telefono, ma non ne
conosciamo il numero
Informazione incompleta e
valori nulli
NULL: valore nullo


Assegnato agli elementi di tuple inesistenti o
sconosciuti
NULL è valore aggiuntivo rispetto al dominio di un
attributo
Informazione incompleta e
valori nulli
In basi di dati, i due casi sopra trattati come
assenza di informazione
In assenza di informazione su un attributo
bisogna usare NULL perché non si confonde
con altri valori del dominio dell’attributo
Informazione incompleta e
valori nulli
Per esempio:


Numero di telefono sconosciuto potrebbe essere
rappresentato con 0 (numero che nessun telefono
può avere). Però questa convenzione non è
generale
Inoltre, per altri attributi, potrebbe non esistere
valore di dominio che non si può assegnare mai:
usare NULL
Informazione incompleta e
valori nulli
Non tutti gli attributi di una relazione devono poter
assumere valore nullo
In definizione di relazione, si può specificare quali
attributi non devono mai essere nulli nelle tuple
Studenti
Matricola
Cognome
Nome
DataNascita
276545
Rossi
Maria
NULL
NULL
Neri
Anna
23/04/1982
NULL
Verdi
Fabio
12/02/1982
587614
Rossi
Luca
10/10/1981
937653
Bruni
Mario
01/12/1981
Informazione incompleta e
valori nulli
Non tutti gli attributi di una relazione devono poter
assumere valore nullo
In definizione di relazione, si può specificare quali
attributi non devono mai essere nulli nelle tuple
OK
Studenti
Matricola
Cognome
Nome
DataNascita
276545
Rossi
Maria
NULL
NULL
Neri
Anna
23/04/1982
NULL
Verdi
Fabio
12/02/1982
587614
Rossi
Luca
10/10/1981
937653
Bruni
Mario
01/12/1981
Informazione incompleta e
valori nulli
Non tutti gli attributi di una relazione devono poter
assumere valore nullo
In definizione di relazione, si può specificare quali
attributi non devono mai essere nulli nelle tuple
Studenti
Matricola
Cognome
Nome
DataNascita
276545
Rossi
Maria
NULL
NULL
Neri
Anna
23/04/1982
NULL
Verdi
Fabio
12/02/1982
587614
Rossi
Luca
10/10/1981
937653
No: matricola usata
Bruni
Mario
per correlare relazione
01/12/1981
Informazione incompleta e
valori nulli
Studente
Voto
Corso
276545
28
01
NULL
27
NULL
No: informazione
inutile
200768
25
01
587614
24
NULL
Corsi
Codice
Titolo
Docente
01
Analisi
Giani
03
Chimica
NULL
NULL
Chimica
Belli
Esami
Informazione incompleta e
valori nulli
Studente
Voto
Corso
276545
28
01
NULL
27
NULL
No: informazione
inutile
200768
25
01
587614
24
NULL
Corsi
Codice
Titolo
Docente
01
Analisi
Giani
03
Chimica
NULL
NULL
Chimica
Belli
Esami
Informazione incompleta e
valori nulli
Esami
Corsi
Studente
Voto
Corso
276545
28
01
NULL
27
NULL
200768
25
01
587614
24
NULL
Codice
Titolo
Docente
01
Analisi
Giani
03
Chimica
NULL
NULL
Chimica
Belli
No: codice usato
Per correlare relazione
Informazione incompleta e
valori nulli
Esami
Corsi
Studente
Voto
Corso
276545
28
01
NULL
27
NULL
200768
25
01
587614
24
NULL
Codice
Titolo
Docente
01
Analisi
Giani
03
Chimica
NULL
NULL
Chimica
Belli
OK
Instanze inconsistenti
Non tutte le tuple rappresentano
informazione corretta per un’applicazione


Valori nulli
Valori fuori del dominio di un attributo
 Per esempio: voto = 36

Tuple inconsistenti (valori di più attributi non
simultaneamente assegnabili)
 Per esempio: voto = 24, lode = Sì

…
Instanze inconsistenti
Non tutte le tuple rappresentano
informazione corretta per un’applicazione


…
Tuple con valori uguali per attributi identificanti
 Per esempio: tuple con la stessa matricola in relazione
Studenti

Valori inesistenti in attributi usati per
corrispondenze tra relazioni
 Per esempio: studente in relazione Esami
Vincoli di integrità
Proprietà che devono essere soddisfatte dalle
istanze corrette per un’applicazione
Sono predicati che associano ad ogni istanza
il valore vero o falso


Vero: istanza corretta (ammissibile, lecita)
Falso: istanza inconsistente
Vincoli di integrità
Definendo lo schema di un base di dati si
associano vincoli di integrità che si riferiscono
a tutte le istanze del base di dati
Questi vincoli permettono di considerare
corrette le sole istanze che li verificano tutti
Vincoli di integrità
Vincoli intrarelazionali

Vincolo di tupla
 Vincolo di dominio
 Vincoli su assegnamento di valori ad attributi diversi di
una tupla

Vincolo di chiave
Vincoli interrelazionali
Vincoli intrarelazionali
Vincoli interni a una relazione:

Soddisfacimento definito rispetto ad una singola relazione
del base di dati
Vincolo di tupla: esprime condizioni sui valori di
ciascuna tupla indipendentamente dalle altre tuple


Vincolo di dominio (vincolo su valori): restrizione su dominio
di attributo
Vincoli su assegnamento di valori ad attributi diversi di una
tupla
Vincoli di tupla
Esprimibili mediante espressioni booleane
(AND, OR, NOT) i cui termini contengono:

Uguaglianze, disuguaglianze, ordinamenti di valori
di attributo

Espressione aritmetiche su valori di attributo
p
q
p AND q
p
q
p OR q
p
NOT p
F
F
F
F
F
F
F
T
F
T
F
F
T
T
T
F
T
F
F
T
F
T
T
T
T
T
T
T
Vincoli di tupla
Per esempio:



Vincolo di dominio
(Voto  18) AND (Voto  30)
Vincolo su più attributi
(NOT(Lode = “lode”)) OR (Voto = 30)
Pagamenti(Data, Importo, Ritenute, Netto)
Netto = Importo - Ritenute
Vincoli di chiave
Superchiave/chiave: insieme di attributi usato
per identificare univocamente le tuple di una
relazione



Superchiave: un insieme K di attributi è detto
superchiave di una relazione r se r non contiene
due tuple t1 e t2 con t1[K]=t2[K]
K è una chiave di r se è una superchiave minimale
di r
Ogni chiave è una superchiave
Vincoli di chiave
{Matricola} è una chiave
Matricola
Cognome
Nome
Nascita
Corso
Table1 4328
Rossi
Luigi
29/04/79
Informatica
6328
Rossi
Dario
29/04/79
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
01/05/81
Economia
5536
Neri
Luca
05/03/78
Economia
Vincoli di chiave
{Cognome, Nome, Nascita} è una chiave
Matricola
Cognome
Nome
Nascita
Corso
Table1 4328
Rossi
Luigi
29/04/79
Informatica
6328
Rossi
Dario
29/04/79
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
01/05/81
Economia
5536
Neri
Luca
05/03/78
Economia
Vincoli di chiave
{Matricola, Corso} è una superchiave, ma non
una chiave
Matricola
Cognome
Nome
Nascita
Corso
Table1 4328
Rossi
Luigi
29/04/79
Informatica
6328
Rossi
Dario
29/04/79
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
01/05/81
Economia
5536
Neri
Luca
05/03/78
Economia
Vincoli di chiave
{Nome, Corso} non è una superchiave
Matricola
Cognome
Nome
Nascita
Corso
Table1 4328
Rossi
Luigi
29/04/79
Informatica
6328
Rossi
Dario
29/04/79
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
01/05/81
Economia
5536
Neri
Luca
05/03/78
Economia
Vincoli di chiave
{Nome, Corso} è adesso una chiave

È una chiave “per caso”
Matricola
Cognome
Nome
Nascita
Corso
Table2 6328
Rossi
Dario
29/04/79
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
01/05/81
Economia
5536
Neri
Luca
05/03/78
Informatica
Vincoli di chiave
Ogni relazione r, con la schema r(X), ha una
chiave



Essendo un insieme, r è costituita da tupla diverse
tra loro  X è sicuramente superchiave di r
X potrebbe essere una chiave di r
Se X non sia una chiave di r, esiste un
sottoinsieme Y di X tale che Y è una chiave
Vincoli di chiave
Il fatto che ogni schema di relazione abbia
almeno una chiave garantisce


Identificabilità univoca dei dati
Definizione di corrispondenze tra dati contenuti in
relazioni diverse
Per esempio: nel base di dati Università


Studente corrisponde a Matricola della relazione
Studenti
Corso corrisponde a Codice della relazione Corsi
Chiave e valori nulli
Tupla 1: ha entrambe le chiave incomplete
({Matricola}, {Cognome, Nome, Nascita})
Matricola
Cognome
Nome
Nascita
Corso
NULL
Rossi
Dario
NULL
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
NULL
NULL
NULL
Neri
Luca
05/03/78
Economia
Chiave e valori nulli
Tuple 3 e 4: hanno una chiave
completamente specificata, ma sono lo stesso
individuo?
Matricola
Cognome
Nome
Nascita
Corso
NULL
Rossi
Dario
NULL
Informatica
4766
Rossi
Luca
01/05/81
Fisica
4856
Neri
Luca
NULL
NULL
NULL
Neri
Luca
05/03/78
Economia
Chiave e valori nulli
Chiave primaria: la chiave primaria non può
avere valori nulli



Identificata mediante sottolineatura ({Matricola})
Usata per stabilire corrispondenza tra tabelle
Se nessun attributo della relazione può prendere il
ruolo di chiave primaria se ne definisce uno
aggiuntivo a tale scopo
Vincoli interrelazionali
Vincoli interrelazionali sono i vincoli che
coinvolgono più relazioni del base di dati
Per verificarli, considerare istanze di più
relazioni
Vincoli interrelazionali
Vincoli di integrità referenziale (foreign keys,
referential integrity constraints):


Servono a garantire che i riferimenti tra tabelle
siano possibili
Un vincolo di integrità referenziale fra insieme di
attributi X di una relazione R1 ed una relazione R2
è soddisfatto se i valori su X di ciascuna tupla
dell’istanza di R1 compaiono come valori della
chiave (primaria) dell’istanza di R2
Vincoli di integrità referenziale
Per esempio: le relazioni
Studenti(Matricola,Cognome,Nome,DataNascita)
Corsi(Codice,Titolo,Docente)
Esami(Numero,Studente,Voto,Lode,Corso)

Un numero può comparire in attributo Studente di
una tupla di relazione Esami solo se compare
come valore di Matricola in istanza di relazione
Studenti
Vincoli di integrità referenziale
Se chiave di R2 è composta da un solo
attributo B, X è composto di un solo attributo
A

Vincolo di integrità referenziale tra A in R1 e B in
R2 è soddisfatto se, per ogni tupla t1 in R1 per cui
t1[A] non è nullo, esiste una tupla t2 in R2 tale
che t1[A] = t2[B]
Vincoli di integrità referenziale
K
A
R1
B
…
R2
Vincoli di integrità referenziale
Se chiave di R2 contiene più attributo bisogna
stabilire corrispondenza tra attributi di R1 e
R2



Chiave di R2: {B1,…,Bp}
X={A1,…,Ap}
Vincolo di integrità referenziale tra {A1,…,Ap} in
R1 e {B1,…,Bp} in R2 è soddisfatto se, per ogni
tupla t1 in R1 per cui t1[{A1,…,Ap}] non contiene
valori nulli, esiste una tupla t2 in R2 tale che t1[Ai]
= t2[Bi] per 1ip
Vincoli di integrità referenziale
K
Ai
R1
Bi
…
R2
Vincoli di integrità referenziale
Infrazioni
Agenti
Auto
Codice
Data
987554
630876
Agente
Art
Prov
Numero
26/10/02 456
34
RM
2F7643
15/10/93 456
53
FI
4E5432
Matricola
CF
Cognome
Nome
567
RSSM…
Rossi
Mario
638
NREP…
Neri
Piero
Prov
Numero
Proprietario
Indirizzo
RM
1A2396
Verdi Piero
Via Tigli
MI
2F7643
Luci Gino
Via Noci
FI
4E5432
Bini Luca
Via Po
Vincoli di integrità referenziale
Infrazioni
Agenti
Auto
Codice
Data
987554
630876
Agente
Art
Prov
Numero
26/10/02 456
34
RM
2F7643
15/10/93 456
53
FI
4E5432
Matricola
CF
Cognome
Nome
567
RSSM…
Rossi
Mario
638
NREP…
Neri
Piero
Prov
Numero
Proprietario
Indirizzo
RM
1A2396
Verdi Piero
Via Tigli
MI
2F7643
Luci Gino
Via Noci
FI
4E5432
Bini Luca
Via Po
Vincoli di integrità referenziale
Infrazioni
Agenti
Auto
Codice
Data
987554
630876
Agente
Art
Prov
Numero
26/10/02 456
34
RM
2F7643
15/10/93 456
53
FI
4E5432
Matricola
CF
Cognome
Nome
567
RSSM…
Rossi
Mario
638
NREP…
Neri
Piero
Prov
Numero
Proprietario
Indirizzo
RM
1A2396
Verdi Piero
Via Tigli
MI
2F7643
Luci Gino
Via Noci
FI
4E5432
Bini Luca
Via Po
Vincoli di integrità referenziale
Ordinamento di attributi in vincoli referenziali
è essenziale perché non sempre la
corrispondenza tra tabelle si può stabilire per
nome di attributo
Per esempio:



Incidenti(Codice,Prov1,Numero1,Prov2,Numero2)
Auto(Prov,Numero,Proprietario,Indirizzo)
Prov1, Numero1 e Prov2, Numero2 sono diversi
dai nomi della chiave primaria di Auto
Vincoli di integrità referenziale
Non tutti i DBMS permettono di definire chiavi
primarie

Definire esplicitamente attributi coinvolti in vincoli
di integrità
Algebra relazionale
Accesso ai dati di un DB
Aggiornamento di DB: funzione che,
data istanza di DB, produce altra istanza
di DB, sullo stesso schema

Modifica, aggiunta, rimozione tuple
Interrogazione a DB: funzione che, dato
un DB, produce una relazione su un
dato schema (non necessariamente uno
degli schemi definiti nel DB)
Accesso ai dati di un DB
Aggiornamento e interrogazione
vengono effettuati usando specifici
linguaggi

Per esempio: algebra relazionale
Algebra relazionale
Linguaggio procedurale di accesso a DB


Si specificano operazioni complesse
descrivendo procedimento da usare per
ottenere soluzione
Interrogazioni: espressioni complesse
Algebra relazionale
Algebra relazionale: basata su insieme di
operatori


Definiti su relazioni
Producono relazioni come risultati
Operatori


Insiemistici: unione, intersezione, differenza
Specifici: ridenominazione, selezione, proiezione,
join
Operatori insiemistici
Relazioni: insiemi di tuple omogenee, cioè
definite sigli stessi attributi
Insiemi: ha senso usare operatori insiemistici
Insiemi di tuple omogenee: usare operatori
insiemistici solo su relazioni definite sugli
stessi attributi

Altrimenti, si ottengono insiemi di tuple
disomogenee, che non rappresentano relazioni
Unione di relazioni
Date due relazioni r1(X) e r2(X) definite
sullo stesso insieme di attributi X
r1r2: relazione su X che contiene
tuple appartenenti a r1 oppure a r2
oppure a entrambe
Unione di relazioni
Laureati
Dirigenti
Matricola
Cognome Età
Matricola
Cognome Età
7274
Rossi
37
9297
Neri
56
7432
Neri
39
7432
Neri
39
9824
Verdi
38
9824
Verdi
38
Matricola
Cognome Età
7274
Rossi
37
7432
Neri
39
9297
Neri
56
9824
Verdi
38
Laureati

Dirigenti
Differenza di relazioni
Date due relazioni r1(X) e r2(X) definite
sullo stesso insieme di attributi X
r1-r2: relazione su X che contiene tuple
appartenenti a r1 ma non a r2
Differenza di relazioni
Laureati
Dirigenti
Matricola
Cognome Età
Matricola
Cognome Età
7274
Rossi
37
9297
Neri
56
7432
Neri
39
7432
Neri
39
9824
Verdi
38
9824
Verdi
38
Matricola
Cognome Età
7274
Rossi
37
Laureati
-
Dirigenti
Intersezione di relazioni
Date due relazioni r1(X) e r2(X) definite
sullo stesso insieme di attributi X
r1r2: relazione su X che contiene
tuple appartenenti sia a r1 che a r2
Intersezione di relazioni
Laureati
Dirigenti
Matricola
Cognome Età
Matricola
Cognome Età
7274
Rossi
37
9297
Neri
56
7432
Neri
39
7432
Neri
39
9824
Verdi
38
9824
Verdi
38
Matricola
Cognome Età
7432
Neri
39
9824
Verdi
38
Laureati

Dirigenti
Scarica

parte teorica (formato ppt) - Dipartimento di Informatica