I vizi nascosti delle relazioni
Stabilire una relazione tra due tabelle è abbastanza facile. Far sì che
la relazione resista bene anche in occasione di eventi critici è un po’
più difficile.
Per evento critico in una relazione tra tabelle si intende, ad esempio,
ciò che succede quando in una tabella viene eliminato un valore unico
in un campo cui fa riferimento il campo di un’altra tabella. In un caso
come questo, come si deve comportare il database con tutti i valori cui
da un momento all’altro fanno riferimento a qualcosa che non c’è più?
Il comportamento del database in occasione di eventi critici è regolato
da opzioni predefinite, che tuttavia possono essere modificate per ogni
singola relazione: basta fare doppio clic sulla linea di connessione di
una relazione e aprire così la finestra riportata nella figura sottostante.
Nella finestra sono indicate le due tabelle in relazione e i due campi
che costituiscono la relazione stessa. Nella sezione Opzioni di
aggiornamento si trovano le opzioni che determinano il comportamento
del database in caso di modifica della chiave primaria (cioè del campo
che contiene valori unici e rappresenta l’estremità “uno” della
relazione), mentre nella sezione Opzioni di eliminazione si trovano le
corrispondenti opzioni in caso di eliminazione della chiave primaria.
Le opzioni riguardano ovviamente ciò che succede alle chiavi esterne,
cioè ai valori dei campi collegati che rappresentano l’estremità “a
molti” della relazione.
-
Nessuna operazione: fa sì che le modifiche a una chiave primaria o la
sua eliminazione non abbiano effetto sulle chiavi esterne.
-
Aggiorna/Elimina cascata: in caso di modifica al valore di una chiave
primaria, i campi chiavi esterne corrispondenti vengono aggiornati o
eliminati di conseguenza.
-
Imposta lo zero: in caso di modifica al valore di una chiave primaria o
di sua eliminazione, viene assegnato ai campi chiavi esterne il valore
"IS ZERO", che indica che il campo di dati è vuoto.
-
Preimpostazione: in caso di modifica al valore di una chiave primaria o
di sua eliminazione, ai campi chiave esterne viene assegnato un valore
predefinito, che deve essere stato definito durante la progettazione
della tabella, nelle proprietà di campo.