Creare, modificare o eliminare una relazione
Applies ToAccess per Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Una relazione in Access consente di combinare i dati di due tabelle diverse. Ogni relazione è costituita da campi contenuti in due tabelle. Un campo IDProdotto può ad esempio essere presente sia in una tabella Prodotti che in una tabella DettagliOrdine. Per ogni record nella tabella DettagliOrdine è presente un IDProdotto che corrisponde a un record nella tabella Prodotti con lo stesso IDProdotto.

Quando si usano tabelle correlate in una query, la relazione consente ad Access di determinare quali record di ogni tabella devono essere combinati nel set di risultati. Una relazione consente inoltre di evitare la perdita di dati, mantenendo sincronizzati i dati eliminati e tale comportamento è definito integrità referenziale.

Prima di usare le relazioni, assicurarsi di aver compreso i concetti di base. Per altre informazioni, vedere Guida alle relazioni tra tabelle e Introduzione alle relazioni tra tabelle.

Contenuto dell'articolo

Panoramica

In un database di Access è possibile creare una relazione tra tabella in uno dei modi seguenti:

  • Nella finestra Relazioni aggiungere le tabelle da correlare e quindi trascinare il campo per creare la correlazione da una tabella all'altra.

  • Trascinare un campo in un foglio dati di una tabella 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. I dati contenuti nei campi comuni devono essere dello stesso tipo. Se il campo chiave primaria è un campo di tipo Numerazione automatica, anche 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.

Inizio pagina

Creare una relazione tra le tabelle con la finestra Relazioni

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

  2. Nel gruppo Relazioni della scheda Struttura relazioni fare clic su Aggiungi tabelle.

  3. Selezionare una o più tabelle o query e quindi fare clic su Aggiungi. Dopo aver aggiunto le tabelle o le query alla scheda documento Relazioni, fare clic su Chiudi.

  4. 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. Viene visualizzata la finestra di dialogo Modifica relazioni.Finestra di dialogo Modifica relazioni in Access con i campi di join Clienti e Ordini

  5. Verificare che i nomi di campo visualizzati corrispondano ai campi comuni da usare per la relazione. Se un nome di campo non è corretto, fare clic su di esso e selezionare il campo appropriato dall'elenco. Per applicare l'integrità referenziale per la relazione, selezionare la casella di controllo Applica integrità referenziale. Per altre informazioni sull'integrità referenziale, vedere la sezione Applicare l'integrità referenziale.

  6. Fare clic su Crea.

    Tra le due tabelle verrà tracciata una linea di relazione. Se è stata selezionata la casella di controllo Applica integrità referenziale la linea risulterà più spessa alle estremità. Inoltre, solo se è stata selezionata la casella di controllo Applica integrità referenziale, sul punto di maggior spessore su un lato della linea di relazione viene visualizzato il numero 1 e sul punto di maggior spessore sull'altro lato della linea viene visualizzato il simbolo di infinito (), come illustrato nella figura seguente.Trascinare un campo da una tabella al campo corrispondente in un'altra tabella.

    Note: 

    • Per creare una relazione uno-a-uno    Entrambi i campi comuni, in genere i campi chiave primaria e chiave esterna, devono includere un indice univoco, ovvero la proprietà Indicizzato di tali campi deve essere impostata su (Duplicati non ammessi). Se per entrambi i campi esiste un indice univoco, Access crea una relazione uno-a-uno.

    • Per creare una relazione uno-a-molti    Il campo sul lato uno della relazione, in genere la chiave primaria, deve includere un indice univoco, ovvero la proprietà Indicizzato per questo campo deve essere impostata su (Duplicati non ammessi). Il campo sul lato molti della relazione non deve includere un indice univoco, ovvero può includere un indice che però consenta i duplicati. La proprietà Indicizzato per questo campo può pertanto essere impostata su No o Sì (Duplicati ammessi). Se solo uno dei due campi include un indice univoco, Access crea una relazione uno-a-molti.

Inizio pagina

Creare una relazione tra tabelle usando il riquadro Elenco campi per aggiungere un campo

In una tabella esistente aperta in visualizzazione Foglio dati è possibile aggiungere un campo trascinandolo dal riquadro Elenco campi. Nel riquadro Elenco campi sono visualizzati i campi disponibili nelle tabelle correlate, nonché i campi disponibili nelle altre tabelle del database.

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. Per applicare l'integrità referenziale, è necessario modificare la relazione. Per altre informazioni, vedere la sezione Modificare una relazione.

Aprire una tabella in visualizzazione Foglio dati

  • Nel riquadro di spostamento fare doppio clic sulla tabella.

Aprire il riquadro Elenco campi

  • Premere ALT+F8. Verrà visualizzato il riquadro Elenco campi.

    Riquadro Elenco campi

Nel riquadro Elenco campi vengono visualizzate tutte le altre tabelle incluse nel database raggruppate in categorie. Quando si usa una tabella in visualizzazione Foglio dati, Access visualizza i campi 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 usando. 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. Con la tabella aperta in visualizzazione Foglio dati, premere ALT+F8. Viene visualizzato il riquadro Elenco campi.

  2. In Campi disponibili in altre tabelle fare clic sul segno più (+) accanto a un nome di tabella per visualizzare l'elenco dei campi della tabella.

  3. Trascinare il campo desiderato dal riquadro Elenco campi nella tabella aperta in visualizzazione Foglio dati.

  4. Quando viene visualizzata la riga di inserimento, rilasciare il campo nella posizione desiderata.

    Verrà avviata la Ricerca guidata.

  5. 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. Per impostazione predefinita, a tale relazione creata da Access non viene applicata l'integrità referenziale. Per applicare l'integrità referenziale, è necessario modificare la relazione. Per altre informazioni, vedere la sezione Modificare una relazione.

Inizio pagina

Modificare una relazione

Per modificare una relazione, è possibile selezionarla nella finestra Relazioni e quindi modificarla.

  1. Posizionare con attenzione il cursore sulla linea di relazione e quindi fare clic sulla linea per selezionarla.

    Quando è selezionata, la linea di relazione risulta più spessa.

  2. Con la linea di relazione selezionata, fare doppio clic su di essa.

    oppure

    Nel gruppo Strumenti della scheda Progettazione relazioni fare clic su Modifica relazioni.

Viene visualizzata la finestra di dialogo Modifica relazioni.

Aprire la finestra di dialogo Modifica relazioni

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

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

    Vengono visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione. 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.

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

  4. Fare doppio clic sulla linea di relazione.

    -oppure-

    Nel gruppo Strumenti della scheda Progettazione relazioni fare clic su Modifica relazioni.

    Verrà visualizzata la finestra di dialogo Modifica relazioni.

    Finestra di dialogo Modifica relazioni in Access con i campi di join Clienti e Ordini

  5. 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 propagazione a catena. Per altre informazioni sul tipo di join e la relativa impostazione, vedere la sezione Impostare il tipo di join. Per altre informazioni su come applicare l'integrità referenziale e scegliere un'opzione di propagazione 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. Se ad esempio si definisce una relazione tra due tabelle e quindi si crea una query che usa le due 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, di voler 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 questo 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.Finestra di dialogo Proprietà join in Access visualizzata con tre opzioni di join. viene selezionata la prima opzione che indica di includere solo le righe in cui i campi collegati di entrambe le tabelle sono uguali.

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

Nella tabella seguente vengono utilizzate le tabelle Clienti e Ordini per illustrare le tre scelte visualizzate nella finestra di dialogo Proprietà join, il tipo di join utilizzato e il modo in cui vengono restituiti 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.

  2. Nel gruppo Relazioni della scheda Struttura relazioni fare clic su Tutte le relazioni. Vengono visualizzate tutte le tabelle con relazioni, con le relative linee di relazione. 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.

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

  4. Fare doppio clic sulla linea di relazione. Verrà visualizzata la finestra di dialogo Modifica relazioni.

  5. Fare clic su Tipo join.

  6. Nella finestra di dialogo Proprietà join selezionare un'opzione e quindi fare clic su OK.Finestra di dialogo Proprietà join in Access visualizzata con tre opzioni di join. viene selezionata la prima opzione che indica di includere solo le righe in cui i campi collegati di entrambe le tabelle sono uguali.

  7. Apportare eventuali altre modifiche alla relazione e quindi fare clic su OK.

Inizio pagina

Applicare l'integrità referenziale

Scopo dell'integrità referenziale è impedire la creazione di record orfani, ovvero record che fanno riferimento a record non più esistenti. È possibile applicare l'integrità referenziale abilitandola 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. Di conseguenza, Access rifiuterà sia gli aggiornamenti che determinano la modifica della destinazione di un riferimento, sia le eliminazioni che determinano la rimozione della destinazione di un riferimento. Per fare in modo che Access propaghi gli aggiornamenti e le eliminazioni referenziali e che tutte le righe correlate vengano modificate di conseguenza, vedere la sezione Impostare le opzioni di propagazione a catena.

Attivare o disattivare l'integrità referenziale

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

  2. Nel gruppo Relazioni della scheda Struttura relazioni fare clic su Tutte le relazioni. Verranno visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione. 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.

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

  4. Fare doppio clic sulla linea di relazione. Viene visualizzata la finestra di dialogo Modifica relazioni.

  5. Selezionare o deselezionare Applica integrità referenziale.

  6. Apportare eventuali altre modifiche alla relazione e quindi fare clic su OK.

Se si applica 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. È però 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, perché in questo modo verrebbero creati record orfani. Non è ad esempio possibile modificare un numero di ordine nella tabella Ordini se nella tabella DettagliOrdine sono presenti voci assegnate a tale ordine. È però 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 presenti nello stesso database di Access. L'integrità referenziale non può essere applicata a tabelle collegate. Se le tabelle di origine sono in formato Access, è tuttavia possibile aprire il database in cui sono archiviate le tabelle e abilitare l'integrità referenziale in tale database.

Impostare le opzioni di propagazione a catena

Possono verificarsi situazioni in cui è realmente necessario modificare il valore sul lato "uno" di una relazione. In tal caso, è necessario fare in modo che Access aggiorni automaticamente tutte le righe interessate in 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 usare 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, Access aggiorna automaticamente tutti i campi che fanno riferimento alla chiave primaria.

Può inoltre essere necessario eliminare una riga e tutti i record correlati, ad esempio un record Corriere e tutti gli ordini correlati a tale corriere. A questo scopo, Access supporta 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, Access elimina automaticamente tutti i record che fanno riferimento alla chiave primaria.

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

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

  2. Nel gruppo Relazioni della scheda Struttura relazioni fare clic su Tutte le relazioni. Verranno visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione. 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.

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

  4. Fare doppio clic sulla linea di relazione. Viene visualizzata la finestra di dialogo Modifica relazioni.

  5. Selezionare la casella di controllo Applica integrità referenziale.

  6. Selezionare la casella di controllo Aggiorna campi correlati a catena o Elimina record correlati a catena oppure selezionarle entrambe.

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

Inizio pagina

Eliminare una relazione tra tabelle

Importante: Quando si rimuove una relazione, viene rimosso anche il supporto dell'integrità referenziale, se abilitato. Di conseguenza, Access non impedisce più automaticamente la creazione di record orfani sul lato "molti" della relazione.

Per rimuovere una relazione tra tabelle, è necessario eliminare la linea di relazione nella finestra Relazioni. Posizionare il cursore sulla linea di relazione e quindi fare clic. Quando è selezionata, la linea di relazione risulta più spessa. Con la linea di relazione selezionata, premere CANC.

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

  2. Nel gruppo Relazioni della scheda Struttura relazioni fare clic su Tutte le relazioni. Verranno visualizzate tutte le tabelle per le quali sono state definite relazioni, con le relative linee di relazione. 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.

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

  4. Premere CANC.

  5. È possibile che in Access venga visualizzato il messaggio Eliminare definitivamente la relazione selezionata dal database?. In questo caso, fare clic su .

Nota: Se una delle tabelle impiegate nella relazione tra tabelle viene usata da un altro utente o processo oppure in un oggetto di database aperto, ad esempio una maschera, non sarà possibile eliminare la relazione. Prima di provare a rimuovere la relazione, è necessario chiudere gli eventuali oggetti aperti che usano queste tabelle.

Inizio pagina

Vedere anche

Aggiunta di un campo di ricerca a una tabella

Informazioni sulla finestra Relazioni

Confrontare due tabelle e trovare solo i dati corrispondenti

Serve aiuto?

Vuoi altre opzioni?

Esplorare i vantaggi dell'abbonamento e i corsi di formazione, scoprire come proteggere il dispositivo e molto altro ancora.

Le community aiutano a porre e a rispondere alle domande, a fornire feedback e ad ascoltare gli esperti con approfondite conoscenze.