Vincoli sulle basi di dati Presentazione 11.1 Informatica Generale (Prof. Luca A. Ludovico)

Preview:

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