DISI Dipartimento di Informatica e Scienze dell'Informazione

Relazioni e vincoli di integrità referenziale

È arrivato il momento di definire delle relazioni tra le tabelle del vostro database.

Per fare questo si deve selezionare il pulsante     dalla barra degli strumenti, per aprire la finestra delle relazioni che visualizza tutte le tabelle che sono state definite per la base di dati.


La finestra delle relazioni




A questo punto si devono scegliere le tabelle sulle quali si vogliono definire le relazioni e premere il pulsante Aggiungi (Add).

L'esempio qui riportato riguarda un'Università dove si tengono più corsi con lo stesso nome (ci sono cioè dei corsi duplicati perchè ci sono molti iscritti) e dove, nell'ambito dello stesso corso specialistico, si possono alternare più docenti, ognuno esperto di una parte dell'insegnamento. Per avere una visione precisa di chi insegna che cosa si può pensare ad una struttura con le tabelle Corsi, Docenti, e Insegnatoda per tenere traccia del legame tra i corsi e i docenti. Dopo aver selezionato queste tre tabelle la situazione sarà quella della figura seguente.


Tabelle selezionate per le relazioni


Per creare le relazioni tra le tabelle a questo punto basta selezionare un attributo da una tabella e trascinare il mouse su un attributo corrispondente in un'altra tabella, tenendo premuto il pulsante sinistro del mouse.

  Quali sono gli attributi da collegare?
Questo dipende dal vostro database e diventa chiaro solo dopo un'attenta fase di progettazione!


Mettendo in relazione l'attributo Codicecorso della tabella Corsi con l'attributo Codicecorso della tabella Insegnatoda viene visualizzata la seguente finestra di dialogo che vi permette di modificare le proprietà della relazione (** non è obbligatorio usare gli stessi nomi per gli attributi che denotano informazioni simili nelle varie tabelle, anzi ...).


Tabelle selezionate per le relazioni


In particolare, è possibile decidere se si deve associare un vincolo di integrità referenziale (Enforce Referential Integrity) alla relazione e decidere quale politica adottare in caso di violazione del vincolo. Selezionando la casella Aggiorna campi correlati a catena (Cascade Update Related Fields) ogni modifica in un campo cui è associato questo vincolo verrà propagata a tutte le tabelle collegate. Analogamente, selezionando Elimina record correlati a catena (Cascade Delete Related Records), se un valore viene cancellato da una tabella, i record corrispondenti verranno cancellati da tutte le tabelle collegate.

Se non si specifica nessuna politica, quando si verifica una violazione verrà semplicemente impedita, visualizzando un messaggio di errore.


Relazioni tra Corsi, Docenti, e Insegnatoda


È sempre possibile modificare (eliminare) una relazione, selezionando il "filo" che collega due attributi e premendo il pulsante destro del mouse.


Modifica di una relazione


Dopo aver creato le relazioni e definito i vincoli di integrità referenziale, chiudete la finestra delle relazioni (premendo il pulsante con la X in alto a sinistra) e provate a popolare le tabelle. Mettere dapprima valori consistenti e poi cominciate a mettere dei valori non consistenti.

** Access si arrabbierà molto e vi farà impazzire ...

Poi cancellate dei valori e osservate come si modificano le altre tabelle

** Se avete fatto tutto correttamente, Access manterrà la consistenza dei vostri dati ...



Arrivati a questo punto :-) potete tornare all'indice



last update >>>