Upload
rosalba-messina
View
217
Download
0
Embed Size (px)
Citation preview
Vincoli sulle basi di dati
Presentazione 11.1
Informatica Generale (Prof. Luca A. Ludovico)
Informatica Generale (Prof. Luca A. Ludovico)Presentazione 11.1
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. Per sostituire valore appartenente al dominio ma non noto2. Inapplicabilità dell’attributo 3. Inesistenza del valore4. 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
Tivoli NULL
Prato NULL
Esiste ma non è notoNon esiste
Non sappiamo se esista,
nel caso non è noto
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.
Informatica Generale (Prof. Luca A. Ludovico)Presentazione 11.1
Studente Voto Lode Corso
710566 36 01
768911 30 lode 03
743284 28 lode 04
710233 25 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