Presentazione 11.1
Vincoli sulle basi di dati
Informatica Generale (Prof. Luca A. Ludovico)
Informazione incompleta e valori nulli
• ll modello relazionale impone ai dati una struttura
rigida:
– le informazioni sono rappresentate per mezzo di n-uple
– le n-uple ammesse sono dettate dagli schemi di relazione
• Nella pratica, però, i dati disponibili possono non
corrispondere esattamente al formato previsto, per
varie ragioni.
• Non è corretto (e talvolta nemmeno possibile) usare
un valore del dominio per indicare l’assenza di un
valore significativo.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Il valore nullo NULL
• E’ valore aggiuntivo rispetto a quelli del dominio.
• Denota l’assenza di informazione nella base di dati.
• Uso per scopi diversi:
1.
2.
3.
4.
Per sostituire valore appartenente al dominio ma non noto
Inapplicabilità dell’attributo
Inesistenza del valore
Non si dispone di informazione: il valore può esistere o
meno, e se esiste non lo conosciamo
• In alcuni casi, il valore NULL è inammissibile
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Esempio
Città
Prefettura
Roma
Via Quattro Novembre
Firenze
NULL
Esiste ma non è noto
Tivoli
NULL
Non esiste
Prato
NULL
Non sappiamo se esista,
nel caso non è noto
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Vincoli di integrità
• Non è vero che qualsiasi insieme di n-uple sullo
schema rappresenti informazioni corrette per
l’applicazione.
• Non solo per quanto riguarda i valori nulli.
Studente
Voto
Lode
Corso
710566
36
768911
30
lode
03
743284
28
lode
04
710233
25
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
01
01
Vincoli di integrità
• Un vincolo è un predicato che associa a ogni istanza un
valore di verità: vero o falso.
• Serve ad evitare l’occorrenza di situazioni
indesiderate.
• Se il predicato assume il valore vero, allora l’istanza
soddisfa il vincolo.
• Ad uno schema di base di dati si associa un insieme di
vincoli e si considerano corrette (o lecite, o
ammissibili) le istanze che soddisfano tutti i vincoli.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Classificazione dei vincoli
A seconda degli elementi della base di dati coinvolti:
• Vincolo intrarelazionale: il suo soddisfacimento è
definito rispetto a singole relazioni della base di dati
– Vincolo di tupla: viene valutato su ciascuna tupla
indipendentemente dalle altre
– Vincolo su valori o di dominio: è un caso ancora più specifico
che viene valutato sui singoli valori
• Vincolo interrelazionale: coinvolge più relazioni
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Vincoli di tupla
• Esprimono condizioni sui valori di ciascuna tupla,
indipendentemente dalle altre.
• Possibile sintassi: basata su espressioni booleane con
operatori AND, OR e NOT
• Esempi:
– Vincolo di dominio
(Voto >= 18) AND (Voto <= 30)
– Vincolo di tupla
(Voto = 30) OR (NOT (Lode = “lode”))
Verifica: 21 è ok, 30 è ok, 30 e lode è ok, 28 e lode no.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Chiavi
• Una chiave è un insieme di attributi utilizzato per
identificare univocamente ogni n-upla in una
relazione.
• Definizione formale:
– Un insieme K di attributi è superchiave per la relazione R se R
non contiene due tuple distinte t1 e t2 con t1[K] = t2[K]
– K è chiave di R se è una superchiave minimale di R (ossia non
esiste un’altra superchiave K’ di R contenuta in K come
sottoinsieme proprio)
• Valori nulli e chiave primaria (in inglese primary key).
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Esistenza delle chiavi
• Poiché le relazioni sono insiemi, una relazione non può
contenere n-uple uguali fra loro.
• Ogni relazione ha come superchiave l’insieme degli
attributi su cui è definita.
• Poiché l’insieme di tutti gli attributi è una superchiave
per ogni relazione, ogni schema di relazione ha
almeno una superchiave.
• Ne segue che ogni schema di relazione ha (almeno)
una chiave.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Come individuare le chiavi
• Considerare le proprietà che i dati soddisfano
nell’applicazione (il “frammento di mondo reale di
interesse”)
• Notare quali insiemi di attributi permettono di
identificare univocamente le n-uple
• Individuare i sottoinsiemi minimali di tali insiemi che
conservano la capacità di identificare le n-uple
• Valutare se i valori presenti nella base di dati non
soddisfino tale vincolo in modo casuale (cioè
dipendente dall’istanza)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Importanza delle chiavi
• L’esistenza delle chiavi garantisce l’accessibilità a
ciascun dato della base di dati
• Ogni singolo valore è univocamente accessibile
tramite:
– nome della relazione
– nome dell’attributo
– valore della chiave
• Le chiavi sono lo strumento principale attraverso il
quale vengono correlati i dati in relazioni diverse (“il
modello relazionale è basato su valori”)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Vincoli di integrità referenziale (chiave esterna)
• Sono la più importante classe di vincoli
interrelazionali.
• In inglese: foreign key o referential integrity
constraint.
• Un vincolo di integrità referenziale fra un insieme di
attributi X tra una relazione R1 e un’altra 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.
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Valori nulli e azioni compensative
• I vincoli di integrità referenziale possono essere resi
meno restrittivi ammettendo valori nulli.
• Sono possibili meccanismi per il supporto alla gestione
dei vincoli di integrità ("azioni" compensative a seguito
di violazioni)
• Ad esempio, se viene eliminata una n-upla causando
una violazione:
– comportamento “standard”: rifiuto dell'operazione
– azioni compensative: eliminazione in cascata oppure
introduzione di valori nulli
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
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 che vogliamo siano soddisfatti da tutte le
sue istanze corrette
• Si considerano quindi corrette (valide, ammissibili) le
istanze che soddisfano tutti i vincoli
• Attenzione: un'istanza può soddisfare altri vincoli (per
caso?)
Informatica Generale (Prof. Luca A. Ludovico)
Presentazione 11.1
Scarica

Vincoli di integrità referenziale