Guida alle relazioni tra tabelle
Applies ToAccess per Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Uno degli obiettivi della progettazione di un buon database consiste nella rimozione della ridondanza dei dati (dati duplicati). Per raggiungere questo obiettivo, dividere i dati in più tabelle in base all'argomento in modo che ogni dato sia rappresentato a una sola volta. Fornire quindi Access un modo per visualizzare le informazioni suddivise nuovamente tutte insieme. A tale scopo, inserire i campi comuni nelle tabelle correlate. Per eseguire questo passaggio correttamente, tuttavia è necessario comprendere le relazioni tra tabelle e quindi specificare le relazioni del database.

Contenuto dell'articolo

Introduzione

Dopo aver creato una tabella per ogni argomento del database, è necessario fornire ad 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

1. Le informazioni nella maschera provengono dalla tabella Clienti...

2. ...dalla tabella Ordini...

3. ...dalla tabella Prodotti...

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 usato come chiave primaria nella tabella Dipendenti e come chiave esterna nella tabella Ordini.

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

2. ...e come chiave esterna.

Inizio pagina

Tipi di relazioni tra tabelle

In Access esistono tre tipi di relazioni tra tabelle.

  • Relazione uno-a-molti

    Utilizziamo un database contenente una tabella Clienti e una tabella Ordini come esempio. Un cliente può effettuare un qualsiasi numero di ordini. Ne consegue che per ogni cliente rappresentato nella tabella Clienti, potrebbero essere rappresentati più ordini nella tabella Ordini. La relazione tra la tabella Clienti e la tabella Ordini è 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

    Osserviamo ora la relazione tra una tabella Prodotti e una tabella Ordini. Un singolo ordine può includere più prodotti. D'altra parte, un singolo prodotto può comparire in molti ordini. Di conseguenza, per ogni record nella tabella Ordini, possono esistere molti record nella tabella Prodotti. Inoltre, per ogni record nella tabella Prodotti, possono esistere molti record nella tabella Ordini. Si tratta dunque di una relazione molti-a-molti. Si noti che 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. Questa 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.

Inizio pagina

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 decidere come 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. È importante assicurarsi che i riferimenti chiave esterna-chiave primaria rimangano sincronizzati. L'integrità referenziale, che dipende dalle relazioni tra le tabelle, consente di garantire la sincronizzazione dei riferimenti.

Inizio pagina

Informazioni sull'integrità referenziale

Quando si crea un database, si suddividono le informazioni del database 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. Una volta applicata, Access rifiuta le operazioni che comporterebbero la violazione dell'integrità referenziale per quella determinata relazione tra tabelle. 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. È possibile che si abbia l'esigenza modificare la chiave primaria di un corriere che presenta degli ordini nella tabella Ordini. In questi casi, sarà necessario fare in modo che Access aggiorni automaticamente tutte le righe interessate mediante una singola operazione. In tal modo, Access assicura che 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 questo motivo Access supporta 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 in Access.

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

Inizio pagina

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 state definite relazioni tra le tabelle e la finestra Relazioni viene aperta per la prima volta, in Access verrà richiesto di aggiungere una tabella o query alla finestra.

Aprire la finestra Relazioni

  1. Fare clic su File, su Apri e quindi selezionare e aprire il database.

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

  3. Nel gruppo Relazioni della scheda Struttura relazioni 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 si seleziona 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 relazioni:

  • 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 Struttura relazioni:

  • Aggiungi tabelle    Consente di visualizzare la selezione delle tabelle 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.

Inizio pagina

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.