| | Informazioni sul prodotto Come fare a... Formazione Modelli Supporto, commenti e suggerimenti Risorse tecniche Risorse aggiuntive | Avviso: si sta tentando di visualizzare questa pagina con un browser non supportato. Per ottenere un funzionamento ottimale del sito, utilizzare Microsoft Internet Explorer 6.0 o versioni successive, Firefox 1.5 oppure Netscape Navigator 8.0 o versioni successive. Ulteriori informazioni sui browser supportati.
Informazioni sulle relazioni in un database di Access (MDB)
Dopo avere impostato diverse tabelle per ogni argomento del database di Microsoft Access (database di Microsoft Access: Insieme di dati e oggetti, quali tabelle, query o maschere, correlati a un particolare argomento o scopo.), è necessario indicare il modo per ricollegare le informazioni. Definire innanzitutto le relazioni (relazione: Associazione stabilita tra campi (colonne) comuni in due tabelle. Una relazione può essere di tipo uno-a-uno, uno-a-molti o molti-a-molti.) tra le tabelle. È quindi possibile creare query, maschere e report in cui visualizzare le informazioni di diverse tabelle contemporaneamente. In questa maschera sono incluse ad esempio le informazioni di quattro tabelle: 
Tabella Clienti
Tabella Ordini
Tabella Prodotti
Tabella Dettagli ordini
Il nome del cliente visualizzato nella casella Fatturare a viene recuperato dalla tabella Clienti, i campi ID ordine e Data ordine dalla tabella Ordini, il nome del prodotto nella colonna Prodotto dalla tabella Prodotti e i valori Prezzo unitario e Quantità dalla tabella Dettagli ordini. Queste tabelle sono collegate in vari modi per consentire la visualizzazione di informazioni di vario tipo nella maschera. Nelle sezioni seguenti vengono descritti in maggiore dettaglio i tipi di relazioni disponibili, le interazioni nella maschera e le informazioni fondamentali per l'utilizzo efficiente delle relazioni per ottenere esattamente i dati desiderati dalle tabelle del database. Relazione uno-a-molti
Una relazione uno-a-molti è il tipo più comune di relazione. In una relazione uno-a-molti un record della tabella A può avere molti record corrispondenti nella tabella B, ma un record della tabella B non ha più di un record corrispondente nella tabella A.

Un fornitore...
... può fornire più di un prodotto...
... ma ogni prodotto è fornito da un solo fornitore.
Relazione uno-a-uno
In una relazione uno-a-uno ogni record della tabella A può avere solo un record corrispondente nella tabella B e viceversa. Questo tipo di relazione non è comune, in quanto la maggior parte delle informazioni correlate viene inclusa in una tabella. È possibile utilizzare una relazione uno-a-uno per dividere una tabella con molti campi, per isolare parte di una tabella per ragioni di protezione o per memorizzare le informazioni valide solo per un sottoinsieme della tabella principale. È possibile ad esempio che si desideri creare una tabella per tenere traccia degli impiegati che prendono parte a una partita di calcio di beneficenza. Ogni giocatore della tabella Giocatori calcio ha un record corrispondente nella tabella Impiegati.

Per ogni giocatore esiste un record corrispondente nella tabella Impiegati.
Questo set di valori è un sottoinsieme del campo IDImpiegato e della tabella Impiegati.
Integrità referenziale
L'integrità referenziale è un sistema di regole utilizzate per assicurare che le relazioni tra i record delle tabelle correlate siano valide e che non vengano eliminati o modificati per errore i dati correlati. È possibile impostare l'integrità referenziale quando vengono soddisfatte tutte le seguenti condizioni:
- Il campo corrispondente della tabella primaria (tabella primaria: Il lato ''uno'' di due tabelle correlate in una relazione uno-a-molti. Una tabella primaria deve includere una chiave primaria e ogni record deve essere univoco.) è una chiave primaria (chiave primaria: Uno o più campi (colonne) il cui valore identifica in modo univoco ogni record di una tabella. Una chiave primaria non consente valori Null e deve sempre avere un indice univoco. La chiave primaria viene utilizzata per collegare una tabella alle chiavi esterne di altre tabelle.) o dispone di un indice univoco (indice univoco: Indice definito impostando la proprietà Indicizzato di un campo su Sì (Duplicati non ammessi). Un indice univoco non consente immissioni duplicate nel campo indicizzato. Impostando un campo come chiave primaria si definisce automaticamente un campo come univoco.).
- I campi correlati contengono lo stesso tipo di dati (tipo di dati: Attributo di un campo che determina il tipo di dati che può contenere: Boolean, Integer, Long, Currency, Single, Double, Date, String e Variant (predefinito).) con due eccezioni: un campo Contatore (tipo di dati Contatore: In un database di Microsoft Access, un tipo di dati per i campi che consente di memorizzare automaticamente un numero univoco per ogni record aggiunto a una tabella. È possibile generare tre tipi di numeri: sequenziali, casuali e ID replica.) può essere correlato a un campo Numerico la cui proprietà Dimensione campo sia impostata a Intero lungo e un campo Contatore la cui proprietà Dimensione campo sia impostata a ID replica può essere correlato a un campo Numerico la cui proprietà Dimensione campo sia anch'essa impostata a ID replica.
- Entrambe le tabelle appartengono allo stesso database di Microsoft Access. Se si tratta di tabelle collegate (tabella collegata: Tabella memorizzata in un file esterno al database aperto contenente record ai quali è possibile accedere da Access. È possibile aggiungere, eliminare e modificare i record in una tabella collegata, ma non è possibile modificarne la struttura.), per impostare l'integrità referenziale è necessario che le tabelle siano state create in Microsoft Access e che il database in cui sono memorizzate sia aperto. Non è possibile applicare l'integrità referenziale a tabelle correlate di database in altri formati.
Per l'utilizzo dell'integrità referenziale sono valide le regole riportate di seguito:
Opzioni di aggiornamento o di eliminazione a cascata
Per le relazioni alle quali è applicata l'integrità referenziale (integrità referenziale: Regole a cui è necessario attenersi per l'immissione o l'eliminazione di record allo scopo di preservare le relazioni definite fra le tabelle.), è possibile specificare se si desidera utilizzare automaticamente le opzioni di aggiornamento a catena (aggiornamento a catena: Per le relazioni che applicano l'integrità referenziale fra tabelle, l'aggiornamento di tutti i record correlati nella tabella o tabelle correlate quando viene modificato un record della tabella primaria.) e di eliminazione a catena (eliminazione a catena: Per le relazioni che applicano l'integrità referenziale fra tabelle, l'eliminazione di tutti i record correlati nella tabella o tabelle correlate quando viene eliminato un record della tabella primaria.) per i record correlati. Se si impostano queste opzioni, le operazioni di eliminazione e di aggiornamento, che di solito sarebbero impedite dalle regole sull'integrità referenziale, vengono consentite. Quando si eliminano record o si modificano i valori di chiave primaria (chiave primaria: Uno o più campi (colonne) il cui valore identifica in modo univoco ogni record di una tabella. Una chiave primaria non consente valori Null e deve sempre avere un indice univoco. La chiave primaria viene utilizzata per collegare una tabella alle chiavi esterne di altre tabelle.) in una tabella primaria (tabella primaria: Il lato ''uno'' di due tabelle correlate in una relazione uno-a-molti. Una tabella primaria deve includere una chiave primaria e ogni record deve essere univoco.), le modifiche alle tabelle collegate si rendono necessarie per conservare l'integrità referenziale.
Se si seleziona la casella di controllo Aggiorna campi correlati a catena quando si definisce una relazione, ogni volta che si modifica la chiave primaria di un record nella tabella primaria, la chiave primaria verrà automaticamente aggiornata al nuovo valore in tutti i record correlati. Se ad esempio si modifica un ID di un cliente nella tabella Clienti, il campo ID cliente nella tabella Ordini verrà automaticamente aggiornato per tutti gli ordini di quel cliente in modo da non interrompere la relazione. Gli aggiornamenti verranno eseguiti in successione senza visualizzare alcun messaggio.
Nota Se la chiave primaria della tabella primaria è un campo Contatore (tipo di dati Contatore: In un database di Microsoft Access, un tipo di dati per i campi che consente di memorizzare automaticamente un numero univoco per ogni record aggiunto a una tabella. È possibile generare tre tipi di numeri: sequenziali, casuali e ID replica.), la selezione della casella di controllo Aggiorna campi correlati a catena non avrà alcun effetto poiché non è possibile modificare il valore di un campo Contatore.
Se si seleziona la casella di controllo Elimina record correlati a catena quando si definisce una relazione, ogni volta che si eliminano dei record nella tabella primaria verranno automaticamente eliminati i record correlati nella tabella correlata. Se ad esempio si elimina un record relativo a un cliente dalla tabella Clienti, tutti gli ordini di quel cliente verranno automaticamente eliminati dalla tabella Ordini, inclusi i record nella tabella Dettagli ordini correlati ai record della tabella Ordini. Quando si eliminano record da una maschera o da un foglio dati con la casella di controllo Elimina record correlati a catena selezionata, verrà visualizzato un messaggio di avviso che indica che è possibile che vengano eliminati anche i record correlati. Quando tuttavia si eliminano dei record utilizzando una query di eliminazione (query di eliminazione: Query (istruzione SQL) che rimuove le righe che soddisfano i criteri specificati da una o più tabelle.), questi verranno automaticamente eliminati nelle tabelle correlate senza visualizzare un messaggio di avviso.
|