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

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

Embed Size (px)

Citation preview

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

Vincoli sulle basi di dati

Presentazione 11.1

Informatica Generale (Prof. Luca A. Ludovico)

Page 2: 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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