Microsoft Office Online
Accedi a il mio Office Online (Guida rapida) | Accedi

 
 
Microsoft Office Access
Cerca
Cerca
 
 
 
 
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:

Maschera Ordini che visualizza contemporaneamente le informazioni correlate provenienti da cinque tabelle

Callout 1  Tabella Clienti

Callout 2  Tabella Ordini

Callout 3  Tabella Prodotti

Callout 4  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.


Mostra Funzionamento delle relazioni

Nell'esempio precedente i campi delle quattro tabelle devono essere coordinati in modo da visualizzare le informazioni relative allo stesso ordine. Tale coordinazione viene realizzata con le relazioni tra le tabelle. Una relazione funziona facendo corrispondere i dati nei campi chiave, in genere un campo con lo stesso nome per entrambe le tabelle. Nella maggior parte dei casi tali campi corrispondenti saranno la 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.) di una tabella che fornisce un identificatore univoco per ogni record e una chiave esterna (chiave esterna: Uno o più campi di tabella (colonne) che fanno riferimento al campo o ai campi chiave primaria di un'altra tabella. Una chiave esterna indica la correlazione tra le tabelle.) dell'altra tabella. Gli impiegati possono essere associati ad esempio agli ordini di cui sono responsabili creando una relazione tra i campi IDImpiegato.

ID impiegato utilizzato come chiave primaria nella tabella Impiegati e come chiave esterna nella tabella Ordini.

Callout 1  Il campo IDImpiegato compare in entrambe le tabelle, come chiave primaria...

Callout 2  ... e come chiave esterna.

Mostra 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 record della tabella Fornitori con più di un record correlato nella tabella Prodotti

Callout 1  Un fornitore...

Callout 2  ... può fornire più di un prodotto...

Callout 3  ... ma ogni prodotto è fornito da un solo fornitore.

Mostra Relazione molti-a-molti

In una relazione molti-a-molti un record della tabella A può avere molti record corrispondenti nella tabella B e viceversa. Questo tipo di relazione è possibile solo definendo una terza tabella, chiamata tabella di congiunzione, la cui 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.) consiste di due campi, vale a dire le chiavi esterne (chiave esterna: Uno o più campi di tabella (colonne) che fanno riferimento al campo o ai campi chiave primaria di un'altra tabella. Una chiave esterna indica la correlazione tra le tabelle.) di entrambe le tabelle A e B. Una relazione molti-a-molti è in realtà composta da due relazioni uno-a-molti con una terza tabella. La tabella Ordini e la tabella Prodotti ad esempio hanno una relazione molti-a-molti definita creando due relazioni uno-a-molti per la tabella Dettagli ordini. Un ordine può includere molti prodotti e ciascun prodotto può apparire in molti ordini.

Chiavi esterne nella tabella Dettagli ordini e chiavi primarie corrispondenti nelle tabelle Ordini e Prodotti

Callout 1  Chiave primaria nella tabella Ordini

Callout 2  Chiave primaria nella tabella Prodotti

Callout 3 Un ordine può includere molti prodotti...

Callout 4  ... e ogni prodotto può apparire in molti ordini.

Mostra 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.

Ogni record della tabella Impiegati può avere un solo record corrispondente nella tabella Giocatori calcio.

Callout 1  Per ogni giocatore esiste un record corrispondente nella tabella Impiegati.

Callout 2  Questo set di valori è un sottoinsieme del campo IDImpiegato e della tabella Impiegati.

Mostra Informazioni sulla definizione delle relazioni

Il tipo di relazione creata dipende dal modo in cui vengono definiti i campi correlati.

È inoltre possibile creare una relazione nell'ambito della stessa tabella. Ciò risulta particolarmente utile in situazioni in cui è necessario eseguire una ricerca all'interno della stessa tabella. Nella tabella Impiegati, ad esempio, è possibile definire una relazione tra i campi IDImpiegato e Superiore in modo che il campo Superiore possa visualizzare i dati relativi agli impiegati provenienti da un campo IDImpiegato corrispondente.

 Nota   Se si trascina un campo che non rappresenta una chiave primaria e che non ha un indice univoco in un altro campo che anch'esso non rappresenta una chiave primaria e che non ha un indice univoco, verrà creata una relazione indeterminata. Nelle query contenenti tabelle con una relazione indeterminata verrà visualizzata una linea di join (join: Collegamento fra un campo di una tabella o di una query e un campo con lo stesso tipo di dati in un'altra tabella o query. Un join indica al programma la relazione esistente tra i dati. I record privi di corrispondenza possono essere inclusi o esclusi, a seconda del tipo di join.) predefinita tra le tabelle, ma non verrà 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.) e i record non saranno necessariamente univoci in entrambe le tabelle.

Mostra 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:

Per l'utilizzo dell'integrità referenziale sono valide le regole riportate di seguito:

Mostra 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.

annuncio pubblicitario