I vincoli di integrità Alcuni aspetti della realtà NON possono essere modellati solamente con entità, attributi e relazioni, per esempio i vincoli di integrità. Si definisce vincolo di integrità una proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione che utilizza la base di dati. 1
I vincoli di integrità: esempio Consideriamo l’entità Studente. Supponiamo che l’attributo matricola sia un numero progressivo che identifichi univocamente uno studente (la chiave). L’attributo Età, di tipo intero, potrebbe assumere un valore molto alto, per esempio 250 (cosa impossibile). Matricola Età Nome Studente Cognome 2
I vincoli di integrità: esempio Dal punto di vista concettuale, questa assegnazione è corretta, ma non ha senso in questa realtà. È necessario specificare un vincolo di integrità che indiche che l’età deve essere inferiore a 120, per esempio. 250 Matricola Età Nome Studente Cognome 3
I vincoli di integrità: esempio Un altro vincolo imporrà che NON possono esserci due studenti con la stessa matricola. Altre possibilità che un attributo DataDiImmatricolazione sia successivo a DataDiNascita, e così via. Valori non duplicati 250 Matricola Età Nome Studente Cognome 4
Tipi di vincoli In generale possiamo considerare ogni vincolo come un’asserzione che può essere, rispetto a un’istanza, vero o falso. Distinguiamo i vincoli di integrità in espliciti e impliciti. 5
Vincoli espliciti I vincoli di integrità espliciti sono quelli imposti dalla stessa struttura della base di dati e si dividono in: Vincoli di chiave primaria: impongono che tutte le istanze di una categoria debbano essere diverse da loro; Vincoli referenziali: date due entità A e B e un’associazione tra loro, questi vincoli impongono che non si possa inserire un elemento di A (o non esista un elemento in A) che non sia associato a un elemento di B. Ciò può anche essere visto come un vincolo sulla partecipazione delle associazioni. 6
Vincoli impliciti I vincoli di integrità impliciti sono quelli che impongono delle restrizioni sul modo in cui i dati possono cambiare. Un esempio di vincolo implicito è «il valore dell’attributo Età che non può essere minore di zero o maggiore di 120». Si parla di vincoli di integrità perché devono essere rispettati, pena l’integrità dei dati. 7
Notazioni per vincoli I vincoli espliciti si evidenziano sul diagramma ER I vincoli di chiave primaria si rappresentano sottolineando i relativi attributi I vincoli referenziali si rappresentano con le linee continue tra le associazioni I vincoli impliciti hanno bisogno di una nuova notazione e saranno del tipo: V<NumProgressivo>:(<Espressione) 8
Esempio di notazioni I vincoli impliciti hanno bisogno di una nuova notazione e saranno del tipo: V<NumProgressivo>: (<Espressione>) Per esprimere il vincolo sull’Età scriveremo V1: (0 < Età < 120) Per esprimere il vincolo che «non si può assumere un dipendente con meno di 16 anni, scriveremo V2: (Anno(Dipendente.DataAssunzione) – Anno(Dipendente.DataDiNascita) > 16) 9
Notazioni Quindi per fare riferimento a un attributo di una particolare entità o associazione, utilizziamo la sintassi <NomeEntità>.<NomeAttributo> oppure <NomeAssociazione>.<NomeAttributo> 10