Guida alle relazioni tra tabelle

Uno degli obiettivi di una buona progettazione del database è eliminare la ridondanza dei dati, ovvero i dati duplicati. Per raggiungere tale obiettivo, è consigliabile suddividere i dati in più tabelle in base all'argomento in modo che ogni fatto sia rappresentato solo una volta e quindi fornire ad Access i mezzi per ricollegare le informazioni suddivise, ad esempio inserendo campi comuni nelle tabelle correlate. Tuttavia, per eseguire questo passaggio correttamente, è innanzitutto necessario comprendere le relazioni tra le tabelle e quindi specificarle nel database.

Per ulteriori informazioni, vedere l'articolo Nozioni fondamentali della progettazione di database.

In questo articolo non vengono illustrate le relazioni in un database Web. I database Web non supportano infatti la finestra Relazioni. Per creare relazioni in un database Web, è possibile utilizzare i campi di ricerca. Per ulteriori informazioni, vedere l'articolo Creare un database da condividere sul Web.

Contenuto dell'articolo


Introduzione

Dopo aver creato una tabella per ogni argomento del database, è necessario indicare in Access i mezzi per ricollegare le informazioni quando se ne presenterà l'esigenza. A tale scopo, inserire campi comuni nelle tabelle correlate e definire relazioni tra le tabelle. Sarà quindi possibile creare query, maschere e report per visualizzare contemporaneamente le informazioni provenienti da diverse tabelle. La maschera illustrata di seguito include ad esempio informazioni provenienti da varie tabelle:

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

Callout 1 Le informazioni nella maschera provengono dalla tabella Clienti...
Callout 2 ...dalla tabella Ordini...
Callout 3 ...dalla tabella Prodotti...
Callout 4 ...e dalla tabella Dettagli sugli ordini.

Il nome del cliente visualizzato nella casella Fatturare a viene recuperato dalla tabella Clienti, i valori di ID ordine e Data ordine provengono dalla tabella Ordini, il nome del prodotto proviene dalla tabella Prodotti e i valori di Prezzo unitario e Quantità provengono dalla tabella Dettagli sugli ordini. Queste tabelle sono collegate in vari modi per consentire di visualizzare nella maschera informazioni provenienti da ciascuna di esse.

Nell'esempio precedente i campi delle tabelle devono essere coordinati in modo da visualizzare le informazioni relative allo stesso ordine. Tale coordinazione viene realizzata tramite relazioni tra le tabelle. Una relazione di questo tipo funziona collegando i dati nei campi chiave, in genere un campo con lo stesso nome in entrambe le tabelle. Nella maggior parte dei casi tali campi collegati saranno la chiave primaria di una tabella che fornisce un identificatore univoco per ogni record e una chiave esterna dell'altra tabella. I dipendenti possono essere ad esempio associati agli ordini di cui sono responsabili creando una relazione tra i campi ID dipendente nelle tabelle Dipendenti e Ordini.

Campo ID dipendente utilizzato come chiave primaria nella tabella Dipendenti e come chiave esterna nella tabella Ordini.

Callout 1 Il campo ID dipendente è presente in entrambe le tabelle, come chiave primaria...
Callout 2 ...e come chiave esterna.

Torna all'inizio Torna all'inizio

Tipi di relazioni tra tabelle

Esistono tre tipi di relazioni tra tabelle.

  • Relazione uno-a-molti

Si consideri un database che tiene traccia degli ordini composto da una tabella Clienti e una tabella Ordini. Poiché ogni cliente può effettuare un numero qualsiasi di ordini, per ogni cliente incluso nella tabella Clienti possono essere presenti numerosi ordini nella tabella Ordini. Tra la tabella Clienti e la tabella Ordini esiste pertanto una relazione uno-a-molti.

Per rappresentare una relazione uno-a-molti nella progettazione del database, aggiungere la chiave primaria del lato "uno" della relazione come ulteriore campo o campi nella tabella sul lato "molti" della relazione. In questo caso è ad esempio sufficiente aggiungere un nuovo campo, il campo ID della tabella Clienti, alla tabella Ordini e denominarlo ID cliente. Il valore di ID cliente può quindi essere utilizzato da Access nella tabella Ordini per individuare il cliente corretto per ogni ordine.

  • Relazione molti-a-molti

Si consideri la relazione tra una tabella Prodotti e una tabella Ordini. Un singolo ordine può includere più prodotti e un singolo prodotto può essere incluso in molti ordini. A ogni record della tabella Ordini possono pertanto corrispondere numerosi record della tabella Prodotti e a ogni record della tabella Prodotti possono corrispondere numerosi record della tabella Ordini. Questo tipo di relazione viene denominata relazione molti-a-molti, poiché a qualsiasi prodotto possono corrispondere molti ordini e a qualsiasi ordine possono corrispondere molti prodotti. Per rilevare le relazioni molti-a-molti esistenti tra le tabelle, è importante considerare entrambi i lati della relazione.

Per rappresentare una relazione molti-a-molti, è necessario creare una terza tabella, in genere denominata tabella di collegamento, che consente di suddividere la relazione molti-a-molti in due relazioni uno-a-molti. Inserire in questa terza tabella la chiave primaria di ognuna delle due tabelle. Nella terza tabella verrà quindi registrata ogni occorrenza o istanza della relazione. Tra la tabella Ordini e la tabella Prodotti esiste ad esempio una relazione molti-a-molti definita creando due relazioni uno-a-molti con la tabella Dettagli sugli ordini. Un ordine può includere molti prodotti e ciascun prodotto può essere presente in molti ordini.

  • Relazione uno-a-uno

In una relazione uno-a-uno ogni record della prima tabella può avere solo un record corrispondente nella seconda tabella e viceversa. Questo tipo di relazione non è comune, in quanto le informazioni correlate in questo modo vengono in genere memorizzate nella stessa 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. Quando si identifica una relazione di questo tipo, entrambe le tabelle devono condividere un campo comune.

Torna all'inizio Torna all'inizio

Utilizzare le relazioni tra tabelle

È possibile creare relazioni tra tabelle utilizzando la finestra Relazioni oppure trascinando un campo dal riquadro Elenco campi. In Access le relazioni tra tabelle vengono utilizzate per eseguire il join delle tabelle quando è necessario utilizzarle in un oggetto di database. Esistono numerosi motivi per cui è consigliabile creare relazioni tra tabelle prima di creare altri oggetti di database, ad esempio maschere, query e report.

  • Le relazioni tra tabelle determinano le strutture delle query

Per utilizzare i record provenienti da più tabelle, è spesso necessario creare una query che esegua il join delle tabelle. La query funziona collegando i valori del campo chiave primaria della prima tabella con il campo chiave esterna della seconda tabella. Ad esempio, per fare in modo che vengano restituite righe in cui sono elencati tutti gli ordini per ogni cliente, creare una query che colleghi la tabella Clienti alla tabella Ordini in base al campo ID cliente. Nella finestra Relazioni è possibile specificare manualmente i campi da collegare. Se tuttavia tra tali tabelle è già stata definita una relazione, Access fornisce il join predefinito, in base alla relazione esistente tra le tabelle. Se si utilizza inoltre una delle procedure guidate per la creazione di query, Access utilizza le informazioni raccolte dalle relazioni tra tabelle già definite per presentare all'utente scelte basate su informazioni aggiornate e prepopolare le impostazioni delle proprietà con valori predefiniti appropriati.

  • Le relazioni tra tabelle determinano la progettazione delle maschere e dei report

Quando si crea una maschera o un report, in Access le informazioni raccolte dalle relazioni tra le tabelle già definite vengono utilizzate per presentare all'utente scelte basate su informazioni aggiornate e prepopolare le impostazioni delle proprietà con valori predefiniti appropriati.

  • Le relazioni tra tabelle costituiscono le basi su cui è possibile applicare l'integrità referenziale per evitare la presenza di record orfani nel database. Un record orfano è un record con un riferimento a un altro record inesistente, ad esempio un record ordine che fa riferimento a un record cliente inesistente.

Quando si crea un database, si suddividono le informazioni in tabelle, a ognuna delle quali è associata una chiave primaria. Alle tabelle correlate vengono successivamente aggiunte chiavi esterne che fanno riferimento alle chiavi primarie. Le coppie chiave esterna-chiave primaria rappresentano la base per le relazioni tra le tabelle e le query multitabella. È quindi importante assicurarsi che i riferimenti chiave esterna-chiave primaria rimangano sincronizzati. L'integrità referenziale consente di garantire la sincronizzazione dei riferimenti e dipende dalle relazioni tra le tabelle.

Torna all'inizio Torna all'inizio

Informazioni sull'integrità referenziale

Quando si crea un database, si suddividono le informazioni in molte tabelle in base all'argomento in modo da ridurre al minimo la ridondanza dei dati. In Access viene quindi indicato il modo per riunire le informazioni inserendo campi comuni nelle tabelle correlate. Per rappresentare una relazione uno-a-molti, ad esempio, si aggiunge la chiave primaria dalla tabella "uno" come campo aggiuntivo nella tabella "molti". Per riunire le informazioni, Access considera il valore nella tabella "molti" e cerca il valore corrispondente nella tabella "uno". In questo modo, i valori nella tabella "molti" fanno riferimento ai valori corrispondenti nella tabella "uno".

Si supponga che esista una relazione uno-a-molti tra Corrieri e Ordini e che si desideri eliminare il record di un corriere. Se al corriere che si desidera eliminare sono associati ordini nella tabella Ordini, quando si elimina il record del corriere tali ordini diventeranno "orfani". Gli ordini continueranno a contenere un ID corriere ma l'ID non sarà più valido poiché il record a cui fa riferimento è stato eliminato.

Lo scopo dell'integrità referenziale è quello di evitare la presenza di record orfani e di mantenere sincronizzati i riferimenti in modo che tale situazione ipotetica non possa mai verificarsi.

È possibile applicare l'integrità referenziale abilitandola per una relazione tra tabelle. Per istruzioni dettagliate, vedere Applicare l'integrità referenziale. Dopo aver applicato l'integrità referenziale, in Access vengono rifiutate le operazioni che comporterebbero la violazione dell'integrità referenziale per tale relazione tra tabelle. Ciò significa che verranno automaticamente rifiutati sia gli aggiornamenti che determinano la modifica della destinazione di un riferimento sia le eliminazioni che determinano la rimozione della destinazione di un riferimento. Potrebbe tuttavia essere necessario modificare la chiave primaria di un corriere a cui sono associati ordini della tabella Ordini. In tal caso, sarà necessario fare in modo che Access aggiorni automaticamente tutte le righe interessate mediante una singola operazione. In questo modo, l'aggiornamento verrà interamente completato, garantendo che il database non venga lasciato in uno stato incoerente, ovvero con alcune righe aggiornate e altre no. A tale scopo, in Access è disponibile l'opzione Aggiorna campi correlati a catena. Se si applica l'integrità referenziale e si seleziona l'opzione Aggiorna campi correlati a catena, quando si aggiorna una chiave primaria, tutti i campi che fanno riferimento alla chiave primaria vengono aggiornati automaticamente.

Potrebbe inoltre essere necessario eliminare una riga e tutti i record correlati, ad esempio un record Corriere e tutti gli ordini correlati relativi a tale corriere. A tale scopo, in Access è disponibile l'opzione Elimina record correlati a catena. Se si applica l'integrità referenziale e si seleziona l'opzione Elimina record correlati a catena, quando si elimina un record sul lato della chiave primaria della relazione, tutti i record che fanno riferimento alla chiave primaria vengono eliminati automaticamente.

Torna all'inizio Torna all'inizio

Visualizzare le relazioni tra tabelle

Per visualizzare le relazioni tra le tabelle, fare clic su Relazioni nella scheda Strumenti database. Verrà visualizzata la finestra Relazioni in cui sono riportate tutte le relazioni esistenti. Se non sono ancora state definite relazioni tra le tabelle e la finestra Relazioni viene aperta per la prima volta, verrà richiesto di aggiungere una tabella o query alla finestra.

Aprire la finestra Relazioni

  1. Nella scheda File fare clic su Apri.
  2. Nella finestra di dialogo Apri selezionare e aprire il database.
  3. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.
  4. Se nel database sono presenti relazioni, verrà visualizzata la finestra Relazioni. Se nel database non è presente alcuna relazione e la finestra Relazioni viene aperta per la prima volta, verrà visualizzata la finestra di dialogo Mostra tabella. Fare clic su Chiudi per chiudere la finestra di dialogo.
  1. Nel gruppo Relazioni della scheda Struttura fare clic su Tutte le relazioni.

Verranno visualizzate tutte le relazioni definite nel database. Si noti che le tabelle nascoste, ovvero quelle per le quali è stata selezionata la casella di controllo Nascosto nella finestra di dialogo Proprietà della tabella, e le relative relazioni non verranno visualizzate fino a quando non verrà selezionata la casella di controllo Mostra oggetti nascosti nella finestra di dialogo Opzioni di spostamento.

Una relazione tra tabelle è rappresentata da una linea di relazione tracciata tra le tabelle nella finestra Relazioni. Una relazione a cui non è applicata l'integrità referenziale viene visualizzata come una linea sottile tra i campi comuni che supportano la relazione. Quando si seleziona la relazione facendo clic sulla relativa linea, la linea diventa più spessa per indicare che è selezionata. Se a questa relazione si applica l'integrità referenziale, la linea risulterà più spessa alle estremità. Sulla parte più spessa della linea su un lato della relazione verrà inoltre visualizzato il numero 1 mentre sulla parte più spessa della linea sull'altro lato verrà visualizzato il simbolo di infinito () .

Quando la finestra Relazioni è attiva, è possibile selezionare i comandi seguenti sulla barra multifunzione.

Nel gruppo Strumenti della scheda Progettazione:

  • Modifica relazioni    Consente di visualizzare la finestra di dialogo Modifica relazioni. Quando si seleziona una linea di relazione, è possibile fare clic su Modifica relazioni per modificare la relazione tra le tabelle. È anche possibile fare doppio clic sulla linea di relazione.
  • Cancella layout    Consente di rimuovere tutte le tabelle e le relazioni dalla visualizzazione nella finestra Relazioni. Tenere presente che mediante questo comando le tabelle e le relazioni vengono solo nascoste e non eliminate.
  • Report relazioni    Consente di creare un report in cui sono visualizzate le tabelle e le relazioni del database. Nel report sono visualizzate solo le tabelle e le relazioni che non sono nascoste nella finestra Relazioni.

Nel gruppo Relazioni della scheda Progettazione:

  • Mostra tabella    Consente di visualizzare la finestra di dialogo Mostra tabella in cui è possibile selezionare le tabelle e le query da visualizzare nella finestra Relazioni.
  • Nascondi tabella    Consente di nascondere la tabella selezionata nella finestra Relazioni.
  • Relazioni dirette    Consente di visualizzare tutte le relazioni e le tabelle correlate della tabella selezionata nella finestra Relazioni, se non sono già visualizzate.
  • Tutte le relazioni    Consente di visualizzare tutte le relazioni e le tabelle correlate del database nella finestra Relazioni. Si noti che le tabelle nascoste, ovvero quelle per le quali è stata selezionata la casella di controllo Nascosto nella finestra di dialogo Proprietà della tabella, e le relative relazioni non verranno visualizzate fino a quando non verrà selezionata l'opzione Mostra oggetti nascosti nella finestra di dialogo Opzioni di spostamento.
  • Chiudi    Consente di chiudere la finestra Relazioni. Se sono state apportate modifiche al layout della finestra Relazioni, verrà richiesto se si desidera salvare le modifiche.

Torna all'inizio Torna all'inizio

Creare una relazione tra tabelle

È possibile creare una relazione tra tabelle utilizzando la finestra Relazioni oppure trascinando un campo in un foglio dati dal riquadro Elenco campi. Quando si crea una relazione tra tabelle, non è necessario che i campi comuni abbiano gli stessi nomi, sebbene ciò avvenga spesso. È invece necessario che tali campi contengano lo stesso tipo di dati. Se il campo chiave primaria è un campo di tipo Numerazione automatica, il campo chiave esterna può essere un campo numerico se la proprietà Dimensione campo di entrambi i campi è impostata sullo stesso valore. È ad esempio possibile collegare un campo di tipo Numerazione automatica e un campo numerico se la proprietà Dimensione campo di entrambi i campi è impostata su Intero lungo. Se entrambi i campi comuni sono numerici, è necessario che l'impostazione della proprietà Dimensione campo sia la stessa per entrambi i campi.

Creare una relazione tra le tabelle utilizzando la finestra Relazioni

  1. Nella scheda File fare clic su Apri.
  2. Nella finestra di dialogo Apri selezionare e aprire il database.
  3. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.
  4. Se non è ancora stata definita alcuna relazione, verrà visualizzata automaticamente la finestra di dialogo Mostra tabella. Se non viene visualizzata, nel gruppo Relazioni della scheda Progettazione fare clic su Mostra tabella.

Nella finestra di dialogo Mostra tabella verranno visualizzate tutte le tabelle e le query incluse nel database. Per visualizzare solo le tabelle, fare clic su Tabelle. Per visualizzare solo le query, fare clic su Query. Per visualizzare entrambe, fare clic su Entrambe.

  1. Selezionare una o più tabelle o query e quindi fare clic su Aggiungi. Dopo aver aggiunto le tabelle o le query alla finestra Relazioni, fare clic su Chiudi.
  2. Trascinare un campo (in genere la chiave primaria) da una tabella a un campo comune (la chiave esterna) nell'altra tabella. Per trascinare più campi, tenere premuto il tasto CTRL mentre si fa clic sui campi desiderati e quindi trascinare la selezione.

Verrà visualizzata la finestra di dialogo Modifica relazioni.

  1. Verificare che i nomi di campo visualizzati corrispondano ai campi comuni da utilizzare per la relazione. Se un nome di campo non è corretto, fare clic su di esso e selezionare un nuovo campo nell'elenco

Per applicare l'integrità referenziale per la relazione, selezionare la casella di controllo Applica integrità referenziale. Per ulteriori informazioni sull'integrità referenziale, vedere le sezioni Informazioni sull'integrità referenziale e Applicare l'integrità referenziale.

  1. Fare clic su Crea.

Verrà tracciata una linea di relazione tra le due tabelle. Se è stata selezionata la casella di controllo Applica integrità referenziale, la linea risulterà più spessa alle estremità. Solo se è stata selezionata la casella di controllo Applica integrità referenziale verrà inoltre visualizzato il numero 1 sulla parte più spessa della linea su un lato della relazione e verrà visualizzato il simbolo di infinito () sulla parte più spessa della linea sull'altro lato.

 Note 

  • Per creare una relazione uno-a-uno    È necessario che entrambi i campi comuni (in genere i campi chiave primaria e chiave esterna) dispongano di un indice univoco, ovvero che la proprietà Indicizzato di tali campi sia impostata su Sì (Duplicati non ammessi). Se entrambi i campi dispongono di un indice univoco, verrà creata una relazione uno-a-uno.
  • Per creare una relazione uno-a-molti    Il campo sul lato "uno" (in genere la chiave primaria) della relazione deve disporre di un indice univoco, ovvero la proprietà Indicizzato per questo campo deve essere impostata su Sì (Duplicati non ammessi). Il campo sul lato "molti" della relazione non deve disporre di un indice univoco, ovvero può disporre di un indice che tuttavia consenta i duplicati. La proprietà Indicizzato per questo campo può pertanto essere impostata su No o Sì (Duplicati ammessi). Se un campo dispone di un indice univoco e l'altro no, verrà creata una relazione uno-a-molti..

Creare una relazione tra tabelle utilizzando il riquadro Elenco campi

In una tabella esistente aperta in visualizzazione Foglio dati è possibile aggiungere un campo trascinandolo dal riquadro Elenco campi. Nel riquadro Elenco campi vengono visualizzati i campi disponibili nelle tabelle correlate, nonché i campi disponibili nelle altre tabelle. Quando si trascina un campo da un'altra tabella, ovvero da una tabella non correlata, e si completa la Ricerca guidata, viene automaticamente creata una relazione uno-a-molti tra la tabella indicata nel riquadro Elenco campi e la tabella nella quale è stato trascinato il campo. Per impostazione predefinita, a tale relazione creata da Access non viene applicata l'integrità referenziale. Affinché venga applicata l'integrità referenziale, sarà necessario modificare la relazione. Per ulteriori informazioni, vedere la sezione Modificare una relazione tra tabelle.

Aprire una tabella in visualizzazione Foglio dati

  1. Nella scheda File fare clic su Apri.
  2. Nella finestra di dialogo Apri selezionare e aprire il database.
  3. Nel riquadro di spostamento fare clic con il pulsante destro del mouse nella tabella alla quale si desidera aggiungere il campo e per la quale si desidera creare la relazione e quindi fare clic su Apri.

Aprire il riquadro Elenco campi

  • Premere ALT+F8.

Verrà visualizzato il riquadro Elenco campi.

Nel riquadro Elenco campi vengono visualizzate tutte le altre tabelle incluse nel database raggruppate in categorie. Quando si utilizza una tabella in visualizzazione Foglio dati, i relativi campi vengono visualizzati in una delle due categorie disponibili nel riquadro Elenco campi, ovvero Campi disponibili nelle tabelle correlate e Campi disponibili in altre tabelle. Nella prima categoria sono incluse tutte le tabelle per le quali è stata definita una relazione con la tabella che si sta utilizzando. Nella seconda categoria vengono elencate tutte le tabelle non correlate a quella in uso.

Quando nel riquadro Elenco campi si fa clic sul segno più (+) accanto a un nome di tabella, viene visualizzato un elenco di tutti i campi disponibili nella tabella. Per aggiungere un campo alla tabella in uso, trascinare il campo desiderato dal riquadro Elenco campi alla tabella aperta in visualizzazione Foglio dati.

Aggiungere un campo e creare una relazione utilizzando il riquadro Elenco campi

  1. In Campi disponibili in altre tabelle nel riquadro Elenco campi fare clic sul segno più (+) accanto a un nome di tabella per visualizzare l'elenco dei campi della tabella.
  2. Trascinare il campo desiderato dal riquadro Elenco campi nella tabella aperta in visualizzazione Foglio dati.
  3. Quando viene visualizzata la riga di inserimento, rilasciare il campo nella posizione indicata.

Verrà avviata la Ricerca guidata.

  1. Seguire le istruzioni per completare la Ricerca guidata.

Il campo verrà visualizzato nella tabella in visualizzazione Foglio dati.

Quando si trascina un campo da un'altra tabella, ovvero da una tabella non correlata, e si completa la Ricerca guidata, viene creata automaticamente una nuova relazione uno-a-molti tra la tabella indicata in Elenco campi e la tabella nella quale è stato trascinato il campo. A tale relazione, creata da Access, non viene applicata l'integrità referenziale per impostazione predefinita. Per applicare l'integrità referenziale, sarà necessario modificare la relazione. Per ulteriori informazioni, vedere la sezione Modificare una relazione tra tabelle.

Torna all'inizio Torna all'inizio

Eliminare una relazione tra tabelle

Per rimuovere una relazione tra tabelle, è necessario eliminare la linea di relazione nella finestra Relazioni. Posizionare con attenzione il cursore sulla linea di relazione e quindi fare clic sulla linea. Quando è selezionata, la linea di relazione risulta più spessa. Con la linea di relazione selezionata, premere CANC. Si noti che la rimozione di una relazione comporta anche la rimozione del supporto dell'integrità referenziale per tale relazione, nel caso sia stata attivata. Dopo l'eliminazione della relazione, Access non impedirà più la creazione di record orfani sul lato "molti" della relazione.

  1. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.

Verrà visualizzata la finestra Relazioni. Se non è ancora stata definita alcuna relazione ed è la prima volta che si apre la finestra Relazioni, verrà visualizzata la finestra di dialogo Mostra tabella. In questo caso, fare clic su Chiudi.

  1. Nel gruppo Relazioni della scheda Struttura fare clic su Tutte le relazioni.

Verranno visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione.

  1. Fare clic sulla linea di relazione relativa alla relazione da eliminare. Quando è selezionata, la linea di relazione risulta più spessa.
  2. Premere CANC.

–oppure–

Fare clic con il pulsante destro del mouse e quindi scegliere Elimina.

  1. È possibile che in Access venga visualizzato il messaggio Eliminare definitivamente la relazione selezionata dal database?. Se viene visualizzato questo messaggio di conferma, fare clic su .

 Nota   Se una delle tabelle utilizzate nella relazione tra tabelle è in uso da parte di un altro utente o processo oppure in un oggetto di database aperto, ad esempio una maschera, non sarà possibile eliminare la relazione. Prima di poter rimuovere la relazione, sarà necessario chiudere gli eventuali oggetti aperti che utilizzano tali tabelle.

Torna all'inizio Torna all'inizio

Modificare una relazione tra tabelle

È possibile modificare una relazione tra tabelle selezionando la relazione nella finestra Relazioni e quindi modificandola. Posizionare con attenzione il cursore sulla linea di relazione e quindi fare clic sulla linea. Quando è selezionata, la linea di relazione risulta più spessa. Con la linea di relazione selezionata, fare doppio clic oppure fare clic su Modifica relazioni nel gruppo Strumenti della scheda Progettazione. Verrà visualizzata la finestra di dialogo Modifica relazioni.

Apportare le modifiche desiderate nella finestra di dialogo Modifica relazioni

  1. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.

Verrà visualizzata la finestra Relazioni. Se non è ancora stata definita alcuna relazione ed è la prima volta che si apre la finestra Relazioni, verrà visualizzata la finestra di dialogo Mostra tabella. In questo caso, fare clic su Chiudi.

  • Nel gruppo Relazioni della scheda Struttura fare clic su Tutte le relazioni.
  1. Verranno visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione.
  2. Fare clic sulla linea di relazione relativa alla relazione che si desidera modificare. Quando è selezionata, la linea di relazione risulta più spessa.
  3. Fare doppio clic sulla linea di relazione.
  4. Apportare le modifiche desiderate e quindi fare clic su OK.

Nella finestra di dialogo Modifica relazioni è possibile modificare una relazione tra tabelle. In particolare è possibile modificare le tabelle o le query, nonché i campi, su entrambi i lati della relazione. È inoltre possibile impostare il tipo di join oppure applicare l'integrità referenziale e scegliere un'opzione di correlazione a catena. Per ulteriori informazioni sul tipo di join e la relativa impostazione, vedere la sezione Impostare il tipo di join. Per ulteriori informazioni su come applicare l'integrità referenziale e scegliere un'opzione di correlazione a catena, vedere la sezione Applicare l'integrità referenziale.

Impostare il tipo di join

Quando si definisce una relazione tra tabelle, i fatti relativi alla relazione determinano la struttura della query. Ad esempio, se si definisce una relazione tra due tabelle e quindi si crea una query che utilizza tali tabelle, Access seleziona automaticamente i campi collegati predefiniti in base ai campi specificati nella relazione. È possibile ignorare tali valori iniziali predefiniti nella query anche se i valori forniti dalla relazione sono in genere quelli corretti. Poiché la definizione dei collegamenti e la raccolta dei dati da più tabelle sono operazioni frequenti per tutti i database ad eccezione di quelli più semplici, l'impostazione di valori predefiniti mediante la creazione di relazioni può rappresentare un vantaggio e consentire di risparmiare tempo.

Una query a più tabelle consente di unire le informazioni di diverse tabelle collegando i valori nei campi comuni. L'operazione che consente di collegare e combinare i campi è denominata join. Si supponga, ad esempio, che si desideri visualizzare gli ordini dei clienti. A tale scopo, è possibile creare una query che esegua il join tra la tabella Clienti e la tabella Ordini nel campo ID cliente. Il risultato della query conterrà le informazioni sul cliente e sull'ordine solo per le righe in cui è stata trovata una corrispondenza.

Uno dei valori che è possibile specificare per ogni relazione è il tipo di join. Il tipo di join indica ad Access quali record includere nel risultato di una query. Ad esempio, si consideri di nuovo una query che collega con join la tabella Clienti e la tabella Ordini nei campi comuni che rappresentano l'ID cliente. Utilizzando il tipo di join predefinito, denominato inner join, la query restituisce sole le righe Cliente e le righe Ordine in cui i campi comuni, denominati anche campi collegati, sono uguali.

Si supponga tuttavia che si desideri includere tutti i clienti, anche quelli che non hanno ancora effettuato un ordine. A tale scopo, è necessario modificare il tipo di join da inner join a left outer join. Un left outer join restituisce tutte le righe della tabella sul lato sinistro della relazione e solo le righe della tabella a destra per le quali viene individuata una corrispondenza. Un right outer join restituisce tutte le righe della tabella sul lato destro della relazione e solo le righe della tabella a sinistra per le quali viene individuata una corrispondenza.

 Nota   In questo caso, i termini per indicare la posizione sinistra e destra non fanno riferimento alla posizione delle tabelle nella finestra Relazioni, bensì a quella nella finestra Modifica relazioni.

È consigliabile valutare il risultato che si desidera ottenere da una query che esegue il join tra le tabelle in questa relazione e impostare di conseguenza il tipo di join.

Impostare il tipo di join

  1. Nella finestra di dialogo Modifica relazioni fare clic su Tipo join.

Verrà visualizzata la finestra di dialogo Proprietà join.

  1. Selezionare l'opzione desiderata e quindi fare clic su OK.

Nella tabella seguente vengono utilizzate le tabelle Clienti e Ordini per illustrare le tre opzioni disponibili nella finestra di dialogo Proprietà join, il tipo di join utilizzato e il modo in cui vengono inclusi i risultati per ogni tabella, ovvero tutte le righe oppure solo le righe corrispondenti.

Opzione Join relazionale Tabella sinistra Tabella destra
1. Includi solo le righe in cui i campi collegati da entrambe le tabelle sono uguali. Inner join Righe corrispondenti Righe corrispondenti
2. Includi tutti i record di 'Clienti' e solo i record di 'Ordini' in cui i campi collegati sono uguali. Left outer join Tutte le righe Righe corrispondenti
3. Includi tutti i record di 'Ordini' e solo i record di 'Clienti' in cui i campi collegati sono uguali. Right outer join Righe corrispondenti Tutte le righe

Quando si sceglie l'opzione 2 o 3, sulla linea della relazione viene visualizzata una freccia che punta verso il lato della relazione che visualizza solo le righe corrispondenti.

Apportare modifiche nella finestra di dialogo Proprietà join

  1. Nel gruppo Relazioni della scheda Strumenti database fare clic su Relazioni.

Verrà visualizzata la finestra Relazioni. Se non è ancora stata definita alcuna relazione ed è la prima volta che si apre la finestra Relazioni, verrà visualizzata la finestra di dialogo Mostra tabella. In questo caso, fare clic su Chiudi.

  • Nel gruppo Relazioni della scheda Struttura fare clic su Tutte le relazioni.

Verranno visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione.

  1. Fare clic sulla linea di relazione relativa alla relazione che si desidera modificare. Quando è selezionata, la linea di relazione risulta più spessa.
  2. Fare doppio clic sulla linea di relazione.

Verrà visualizzata la finestra di dialogo Modifica relazioni.

  1. Fare clic su Tipo join
  2. Nella finestra di dialogo Proprietà join fare clic su un'opzione e quindi su OK.
  3. Apportare eventuali altre modifiche alla relazione e quindi fare clic su OK.

Torna all'inizio Torna all'inizio

Applicare l'integrità referenziale

Scopo dell'integrità referenziale è di impedire la presenza di record orfani e mantenere sincronizzati i riferimenti, in modo che non vi siano record che facciano riferimento a record non più esistenti. È possibile applicare l'integrità referenziale attivandola per una relazione tra tabelle. Dopo l'applicazione dell'integrità referenziale, Access rifiuta le operazioni che comporterebbero la violazione dell'integrità referenziale per quella determinata relazione. Verranno automaticamente rifiutati gli aggiornamenti che determinano la modifica della destinazione di un riferimento e le eliminazioni che determinano la rimozione della destinazione di un riferimento. Per fare in modo che gli aggiornamenti e le eliminazioni referenziali vengano propagati da Access in modo che tutte le righe correlate vengano modificate di conseguenza, vedere la sezione Impostare le opzioni di correlazione a catena.

Attivare o disattivare l'integrità referenziale

  1. Nella finestra Relazioni fare clic sulla linea di relazione relativa alla relazione che si desidera modificare. Quando è selezionata, la linea di relazione risulta più spessa.
  2. Fare doppio clic sulla linea di relazione.

Verrà visualizzata la finestra di dialogo Modifica relazioni.

  1. Selezionare la casella di controllo Applica integrità referenziale.
  2. Apportare eventuali altre modifiche alla relazione e quindi fare clic su OK.

Dopo aver applicato l'integrità referenziale, sono valide le regole seguenti:

  • In un campo chiave esterna di una tabella correlata non è possibile immettere valori che non siano presenti nel campo chiave primaria della tabella primaria, poiché in tal caso verrebbero creati record orfani.
  • Non è possibile eliminare un record da una tabella primaria se esistono record corrispondenti in una tabella correlata. Non è ad esempio possibile eliminare il record di un dipendente da una tabella Dipendenti se nella tabella Ordini sono presenti ordini assegnati a tale dipendente. È tuttavia possibile scegliere di eliminare un record primario e tutti i record correlati in un'unica operazione selezionando la casella di controllo Elimina record correlati a catena.
  • Non è possibile modificare un valore di chiave primaria nella tabella primaria, poiché in tal modo verrebbero creati record orfani. Non è ad esempio possibile modificare un numero di ordine nella tabella Ordini se nella tabella Dettagli sugli ordini vi sono voci assegnate a tale ordine. È tuttavia possibile scegliere di aggiornare un record primario e tutti i record correlati in un'unica operazione selezionando la casella di controllo Aggiorna campi correlati a catena.

 Note 

Se si incontrano difficoltà nell'applicazione dell'integrità referenziale, tenere presente che per l'applicazione dell'integrità referenziale sono necessarie le condizioni seguenti:

  • Il campo comune della tabella primaria deve essere una chiave primaria o disporre di un indice univoco.
  • I dati contenuti nei campi comuni devono essere dello stesso tipo. L'unica eccezione è che un campo di tipo Numerazione automatica può essere correlato a un campo numerico la cui proprietà Dimensione campo sia impostata su Intero lungo.
  • Entrambe le tabelle devono essere nello stesso database di Access. L'integrità referenziale non può essere applicata a tabelle collegate. Se le tabelle di origine sono in formato Access, sarà tuttavia possibile aprire il database in cui sono memorizzate le tabelle e attivare l'integrità referenziale in tale database.

Impostare le opzioni di correlazione a catena

È possibile che si verifichino situazioni in cui si abbia effettivamente la necessità di modificare il valore sul lato "uno" di una relazione. In tal caso, sarà necessario fare in modo che Access aggiorni automaticamente tutte le righe interessate mediante una singola operazione. In questo modo, l'aggiornamento verrà interamente completato, garantendo che il database non venga lasciato in uno stato incoerente, ovvero con alcune righe aggiornate e altre no. Per evitare che il problema si verifichi, è possibile utilizzare l'opzione Aggiorna campi correlati a catena disponibile in Access. Se si applica l'integrità referenziale e si seleziona l'opzione Aggiorna campi correlati a catena, quando si aggiorna una chiave primaria, tutti i campi che fanno riferimento alla chiave primaria vengono aggiornati automaticamente.

Potrebbe inoltre essere necessario eliminare una riga e tutti i record correlati, ad esempio il record di un corriere e tutti gli ordini correlati a tale corriere. A tale scopo, in Access è presente l'opzione Elimina record correlati a catena. Se si applica l'integrità referenziale e si seleziona l'opzione Elimina record correlati a catena, quando si elimina il record che contiene la chiave primaria, tutti i record che fanno riferimento alla chiave primaria vengono eliminati automaticamente.

Attivare o disattivare le opzioni di aggiornamento e/o eliminazione a catena

  1. Nella finestra Relazioni fare clic sulla linea di relazione relativa alla relazione che si desidera modificare. Quando è selezionata, la linea di relazione risulta più spessa.
  2. Fare doppio clic sulla linea di relazione.

Verrà visualizzata la finestra di dialogo Modifica relazioni.

  1. Selezionare la casella di controllo Applica integrità referenziale.
  2. Selezionare la casella di controllo Aggiorna campi correlati a catena o Elimina campi correlati a catena oppure selezionarle entrambe.
  3. Apportare eventuali altre modifiche alla relazione e quindi fare clic su OK.

 Nota   Se la chiave primaria è un campo di tipo Numerazione automatica, la selezione della casella di controllo Aggiorna campi correlati a catena non avrà alcun effetto, poiché non è possibile modificare il valore di un campo di tipo Numerazione automatica.

Torna all'inizio Torna all'inizio

 
 
Si applica a:
Access 2010