Guida alle relazioni tra tabelle
Si applica a
Access 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 riunire nuovamente le informazioni divise, inserendo 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 Access un modo per riunire nuovamente le informazioni quando necessario. 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

Esistono tre tipi di relazioni tra tabelle in Access.

  • Relazione uno-a-molti

    Come esempio, usiamo un database di verifica ordini che include una tabella Clienti e una tabella Ordini. 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. Access quindi possibile usare il numero ID cliente nella tabella Ordini per individuare il cliente corretto per ogni ordine.

  • Relazione molti-a-molti

    Esaminiamo 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. Access usa le relazioni tra tabelle per decidere come unire le tabelle quando è necessario usarle 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. Tuttavia, se è già stata definita una relazione tra le tabelle, Access fornisce il join predefinito, in base alla relazione esistente tra tabelle. Inoltre, se si usa una delle procedure guidate per la query, Access usa le informazioni raccolte dalle relazioni tra tabelle già definite per presentare all'utente scelte informate e prepopolare le impostazioni delle proprietà con i valori predefiniti appropriati.

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

    Quando si progetta una maschera o un report, Access usa le informazioni raccolte dalle relazioni tra tabelle già definite per presentare all'utente scelte informate e prepopolare le impostazioni delle proprietà con i 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 che questi 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. È quindi possibile fornire Access un modo per riunire i dati inserendo i 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 nuovamente i dati, Access accetta 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 tutte le operazioni che violano l'integrità referenziale per la relazione tra tabelle. Ciò significa che Access rifiuterà sia gli aggiornamenti che modificano la destinazione di un riferimento sia le eliminazioni che rimuovono la destinazione di un riferimento. È possibile che tu abbia un'esigenza perfettamente valida di modificare la chiave primaria di un corriere che contiene ordini nella tabella Ordini. In questi casi, ciò di cui hai realmente bisogno è che Access aggiorni automaticamente tutte le righe applicate nell'ambito di una singola operazione. In questo modo, Access assicura che l'aggiornamento venga completato completamente, in modo che il database non venga lasciato in uno stato incoerente, con alcune righe aggiornate e altre no. Per questo motivo Access supporta l'opzione Aggiorna campi correlati a catena . Quando si applica l'integrità referenziale e si sceglie l'opzione Aggiorna campi correlati a catena e quindi si aggiorna una chiave primaria, Access aggiorna automaticamente tutti i campi che fanno riferimento alla chiave primaria.

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. Per questo motivo, Access supporta l'opzione Elimina record correlati a catena . Quando si applica l'integrità referenziale e si sceglie l'opzione Elimina record correlati a catena e quindi si elimina un record sul lato chiave primaria della relazione, Access elimina automaticamente tutti i record che fanno riferimento alla chiave primaria.

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 tabelle e la finestra Relazioni viene aperta per la prima volta, Access chiede di aggiungere una tabella o una 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.