Per usare la finestra Relazioni in Microsoft Access apri il database e vai su Strumenti database > Relazioni. Da qui puoi visualizzare, creare e modificare i collegamenti tra tabelle, controllare cardinalità, integrità referenziale e opzioni a catena. È uno degli strumenti più importanti di Access perché offre una vista grafica del modello dati e rende molto più semplice capire come le informazioni sono collegate.
Indice
- A cosa serve la finestra Relazioni
- Come aprirla
- Come leggere tabelle e linee
- Come aggiungere e rimuovere tabelle dalla vista
- Come creare relazioni
- Come modificare e cancellare relazioni
- Come leggere 1 e ∞
- Relazioni dirette e tutte le relazioni
- Integrità referenziale e cascata
- Relazioni e join
- Layout e documentazione
- Troubleshooting e FAQ
A cosa serve davvero la finestra Relazioni
La finestra Relazioni non è un semplice disegno. Le relazioni definite qui rappresentano regole persistenti fra tabelle e possono influenzare il modo in cui Access propone automaticamente i join nelle query. In un database ordini, per esempio, puoi definire che Clienti.IDCliente è collegato a Ordini.IDCliente e che Ordini.IDOrdine è collegato a DettagliOrdine.IDOrdine.
Quando applichi l’integrità referenziale, Access impedisce l’inserimento di chiavi esterne inesistenti e protegge la coerenza fra padre e figlio. La finestra diventa quindi sia uno strumento di progettazione sia una mappa utile per manutenzione e troubleshooting.
Come aprire la finestra Relazioni
- Apri il file ACCDB in Access.
- Seleziona la scheda Strumenti database.
- Nel gruppo Relazioni fai clic su Relazioni.
- Se la vista è vuota, usa Aggiungi tabelle.
- Se vuoi ricostruire la vista completa, scegli Tutte le relazioni.
Microsoft documenta questa finestra per Access per Microsoft 365, Access 2024, Access 2021, Access 2019 e Access 2016. L’interfaccia può cambiare leggermente fra build, ma la logica rimane la stessa.
Come leggere i riquadri delle tabelle
Ogni riquadro rappresenta una tabella o, in alcuni contesti, una query. All’interno vedi i campi. La chiave primaria è riconoscibile dall’icona della chiave. Se un riquadro è troppo piccolo, allargalo per vedere tutti i campi. Nei database grandi conviene disporre le tabelle in modo logico anziché lasciarle sovrapposte.
Un buon layout mette le entità principali a sinistra e le tabelle figlie o ponte a destra. Per un gestionale vendite puoi mettere Clienti → Ordini → DettagliOrdine e, sopra o sotto, Prodotti collegata a DettagliOrdine.
Come leggere le linee di relazione
Una linea tra due campi indica una relazione definita. Se l’integrità referenziale è attiva in una relazione uno-a-molti, Access mostra 1 sul lato univoco e ∞ sul lato molti. Questo rende immediatamente visibile la cardinalità.
Se non vedi 1 e ∞ non significa necessariamente che la linea sia sbagliata: può trattarsi di una relazione senza integrità referenziale applicata. Apri Modifica relazioni e controlla le impostazioni.
Come aggiungere tabelle alla finestra
Usa Progettazione relazioni > Aggiungi tabelle, seleziona uno o più oggetti e fai clic su Aggiungi. L’aggiunta del riquadro è un’operazione di visualizzazione: non crea automaticamente il vincolo. Dopo aver aggiunto le tabelle, trascina il campo corretto da una all’altra per creare la relazione.
Se devi lavorare su Clienti e Ordini non è necessario mostrare cento tabelle. Un sottoinsieme rende il diagramma più leggibile. Successivamente puoi usare Tutte le relazioni per tornare alla vista completa.
Rimuovere una tabella dalla vista non la elimina
Questo punto evita molti errori. Se selezioni un riquadro nella finestra Relazioni e lo rimuovi dalla disposizione, non stai cancellando la tabella dal database. Analogamente, nascondere una tabella dalla vista non equivale a cancellare una relazione già esistente. Sono operazioni diverse.
Come creare una relazione
Il metodo classico è trascinare la chiave primaria del padre sulla foreign key del figlio. Per esempio trascina Clienti.IDCliente su Ordini.IDCliente. Access apre Modifica relazioni. Verifica i campi e seleziona Applica integrità referenziale quando il legame deve essere protetto.
Se Clienti.IDCliente è Autonumerazione, Ordini.IDCliente deve normalmente essere Numero con Dimensione campo Intero lungo. I nomi dei campi possono essere diversi, ma i tipi devono essere compatibili e il significato deve essere lo stesso.
Come modificare una relazione
Seleziona con precisione la linea e fai doppio clic, oppure usa il comando Modifica relazioni. Da qui puoi cambiare campi, opzioni di integrità, aggiornamento a catena, eliminazione a catena e proprietà del join predefinito.
Prima di modificare una relazione su un database operativo crea un backup, soprattutto se cambierai chiavi o opzioni a catena. Una modifica apparentemente semplice può influenzare query, maschere, report e VBA.
Come eliminare una relazione
Seleziona la linea e scegli Elimina. Questa operazione rimuove il vincolo fra le tabelle ma non cancella i dati. Tuttavia, dopo la rimozione, Access non proteggerà più il collegamento con l’integrità referenziale. Prima di cancellare una relazione verifica perché esiste e quali oggetti la usano.
Tutte le relazioni e relazioni dirette
Il comando Tutte le relazioni mostra l’insieme dei collegamenti definiti. Il comando Relazioni dirette è invece utile quando vuoi concentrarti su una sola tabella e vedere soltanto ciò che la coinvolge. Nei database con molte decine di tabelle questa distinzione accelera enormemente l’analisi.
Se una relazione non compare perché una tabella è nascosta, controlla le opzioni del riquadro di spostamento e la visualizzazione degli oggetti nascosti.
Come interpretare uno-a-molti
In una relazione uno-a-molti il campo del lato uno è univoco, tipicamente una chiave primaria. La foreign key del lato molti può ripetersi. Se un cliente ha dieci ordini, Ordini.IDCliente contiene dieci volte lo stesso ID ed è perfettamente corretto.
Non impostare per errore un indice univoco sulla foreign key se deve ripetersi. Potresti trasformare la cardinalità pratica in uno-a-uno e impedire l’inserimento del secondo figlio.
Come interpretare uno-a-uno
Per una relazione uno-a-uno entrambi i campi collegati devono essere univoci. È meno comune. Si usa quando un’entità è stata separata in due tabelle ma ogni riga di una corrisponde al massimo a una riga dell’altra.
Prima di creare una uno-a-uno chiediti se la separazione ha un motivo reale: sicurezza, campi opzionali molto specifici o separazione di un sottotipo. Se non c’è una ragione, una sola tabella può essere più semplice.
Molti-a-molti e tabella ponte
Access non rappresenta una molti-a-molti con una singola relazione diretta. Devi creare una tabella ponte. Ordini e Prodotti, per esempio, sono collegati tramite DettagliOrdine, che contiene IDOrdine e IDProdotto più attributi della relazione come Quantità e PrezzoUnitario.
Nella finestra Relazioni vedrai due uno-a-molti: Ordini 1→∞ DettagliOrdine e Prodotti 1→∞ DettagliOrdine.
Integrità referenziale
Quando la applichi, Access impedisce che una foreign key non Null faccia riferimento a un padre inesistente. È una protezione fondamentale. Se il database contiene già dati incoerenti, Access può rifiutare il vincolo: devi prima correggere orfani, duplicati sul lato uno o tipi incompatibili.
Aggiornamento a catena
L’aggiornamento a catena propaga il cambiamento della chiave primaria ai figli. Con una primaria Autonumerazione normalmente non serve, perché l’ID non viene cambiato. È più rilevante con chiavi naturali modificabili.
Eliminazione a catena
L’eliminazione a catena cancella i record figli quando elimini il padre. Usala con prudenza. Per storico ordini e fatture è spesso meglio impedire la cancellazione del cliente e archiviare l’anagrafica, invece di distruggere la storia.
Relazioni e join non sono la stessa cosa
La relazione è una regola persistente del modello. Il join è la modalità con cui una query combina i record. Quando aggiungi a una query due tabelle già correlate, Access può creare automaticamente un join basato sulla relazione, ma puoi modificarlo nella singola query senza cambiare necessariamente il vincolo globale.
Questo spiega perché la finestra Relazioni e la parte superiore della Progettazione Query si assomigliano: mostrano linee fra campi, ma rappresentano due livelli diversi.
INNER JOIN e OUTER JOIN
Un INNER JOIN restituisce solo le righe con corrispondenza. Un LEFT JOIN può mantenere tutti i record della tabella sinistra anche quando non c’è match. Per esempio:
SELECT Clienti.RagioneSociale, Ordini.IDOrdine FROM Clienti LEFT JOIN Ordini ON Clienti.IDCliente = Ordini.IDCliente;
Questa query è utile per trovare clienti senza ordini. Il modello relazionale non cambia: cambia il modo in cui la query legge i dati.
Come organizzare il layout
Una finestra disordinata rende difficile riconoscere errori. Posiziona le tabelle per flusso: anagrafiche a sinistra, transazioni al centro, dettagli e tabelle ponte a destra. Raggruppa logicamente vendite, magazzino, assistenza e amministrazione. Riduci le linee incrociate.
Nelle build Microsoft 365 più recenti sono disponibili anche miglioramenti di usabilità della finestra, come il ridimensionamento automatico dei riquadri e la selezione di sottoinsiemi. Non dipendere però da una funzione specifica se il database deve essere manutenuto con versioni diverse.
Stampare o documentare il diagramma
Access può generare un Relationship Report per documentare il diagramma. Prima organizza la vista, mostra le relazioni pertinenti e controlla che i campi siano leggibili. Nei database grandi è meglio produrre più diagrammi tematici che un’unica pagina illeggibile.
Finestra Relazioni e database diviso
Se l’applicazione è divisa in front-end e back-end Access, ricorda che i vincoli fra tabelle Access devono essere definiti nel file back-end che contiene fisicamente i dati. Nel front-end puoi vedere tabelle collegate e usare join, ma la protezione dei dati deve risiedere dove sono archiviate le tabelle.
Se il back-end è SQL Server, le foreign key vanno definite sul server. La finestra Relazioni può aiutare a capire la logica, ma non sostituisce i vincoli del DBMS.
Access Microsoft 365, Access 2024 e Runtime
La procedura riguarda Access desktop per Windows, inclusi Microsoft 365 e Access 2024. 32 e 64 bit non cambiano la logica delle relazioni. Access Runtime è destinato all’esecuzione di applicazioni già progettate e non è l’ambiente principale per modificare lo schema.
Non esiste una versione desktop nativa equivalente di Access per macOS e non bisogna confondere Access con una soluzione Web/browser moderna.
Scenario pratico di revisione
Immagina di ricevere un database con venti tabelle. Prima apri Tutte le relazioni e identifica le entità centrali. Se trovi Clienti, Ordini, DettagliOrdine e Prodotti, verifica che i collegamenti seguano un percorso coerente. Se vedi una relazione diretta Ordini→Prodotti e anche una tabella DettagliOrdine, chiediti se il collegamento diretto è ridondante o residuo di una vecchia versione.
Annota ogni relazione dubbia prima di cancellarla. Cerca query che usano i campi coinvolti e verifica il VBA. La finestra Relazioni è una mappa, ma il database completo include anche dipendenze negli altri oggetti.
Controllare record orfani
Prima di attivare l’integrità su tabelle esistenti usa una LEFT JOIN:
SELECT Ordini.IDOrdine, Ordini.IDCliente FROM Ordini LEFT JOIN Clienti ON Ordini.IDCliente = Clienti.IDCliente WHERE Clienti.IDCliente IS NULL AND Ordini.IDCliente IS NOT NULL;
Ogni riga restituita indica un riferimento che deve essere analizzato. Non cancellare in automatico: potrebbe servire un mapping o un ripristino del padre.
Tipi dati compatibili
Una delle cause più comuni di errore è il tipo incompatibile. Con Autonumerazione nel padre usa normalmente Numero/Intero lungo nel figlio. Se entrambi sono Numero controlla Dimensione campo. Se sono Testo breve, verifica che il dato rappresenti davvero lo stesso dominio.
Prestazioni e indici
Le chiavi primarie sono indicizzate. Le foreign key usate spesso nei join possono beneficiare di un indice che ammette duplicati. Non creare indici univoci sul lato molti senza una regola precisa.
Modifiche strutturali e backup
Prima di cambiare relazioni, tipi o cascata crea una copia completa del database. In multiutente pianifica manutenzione con utenti disconnessi. Dopo la modifica testa query, maschere, report, esportazioni e codice VBA.
Maschere e sottomaschere
Le maschere devono rispettare il modello. Una combo può mostrare il nome cliente ma salvare l’IDCliente. Una sottomaschera DettagliOrdine deve essere collegata tramite IDOrdine. Se le proprietà Link Master Fields e Link Child Fields sono corrette, Access inserisce automaticamente la foreign key nei nuovi dettagli.
Importazioni
Per importare da Excel o CSV usa tabelle di staging. Pulisci codici, spazi e tipi prima di accodare nelle tabelle definitive. Questo riduce il rischio che l’integrità referenziale blocchi l’importazione a metà o che dati errati entrino nel sistema.
Documentazione professionale
Non limitarti al diagramma. Per ogni relazione annota significato, cardinalità, obbligatorietà, cascata e chiavi. Esempio: “Ogni ordine appartiene a un cliente; un cliente può avere molti ordini; la cancellazione del cliente è bloccata se esistono ordini”. Questa frase è preziosa per chi manterrà il database in futuro.
Troubleshooting: non vedo una tabella
Usa Aggiungi tabelle, verifica gli oggetti nascosti e controlla di essere nel file corretto. In un database diviso potresti guardare il front-end invece del back-end.
Troubleshooting: non riesco a creare la relazione
Controlla primaria o indice univoco sul lato uno, compatibilità dei tipi, record orfani e duplicati. Assicurati inoltre che le tabelle siano chiuse se la modifica strutturale richiede accesso esclusivo.
Troubleshooting: vedo una relazione uno-a-uno inattesa
Controlla l’indice della foreign key. Se è impostato su Sì (Duplicati non ammessi), Access può interpretare il rapporto come uno-a-uno. In una uno-a-molti il lato molti deve poter ripetere la foreign key.
Checklist
- Vista aggiornata con le tabelle pertinenti.
- Primarie e foreign key riconoscibili.
- Cardinalità coerenti.
- Integrità applicata dove serve.
- Cascata valutata consapevolmente.
- Zero orfani inattesi.
- Layout leggibile.
- Backup prima delle modifiche.
- Query e maschere testate.
- Documentazione aggiornata.
FAQ
Rimuovere un riquadro elimina la tabella?
No. Modifica soltanto la vista nella finestra.
Posso creare una relazione tra campi con nomi diversi?
Sì, se rappresentano lo stesso dato e sono tecnicamente compatibili.
Perché non vedo 1 e ∞?
Spesso perché l’integrità referenziale non è applicata o la relazione non ha la cardinalità prevista.
Le relazioni cambiano tra 32 e 64 bit?
No.
Posso usare Runtime per progettare?
Runtime è pensato per eseguire applicazioni già predisposte; per progettazione usa Access completo.
Link utili
Consulta la categoria Guide Access, creare relazioni tra tabelle, integrità referenziale e modificare una relazione.
Fonti ufficiali: Microsoft Support – Relationships window, creare, modificare o eliminare relazioni e guida alle relazioni.
Conclusione
Usare bene la finestra Relazioni in Microsoft Access significa trasformarla da semplice diagramma in strumento di progettazione e controllo. Con un layout leggibile, chiavi coerenti, integrità referenziale e documentazione aggiornata puoi capire rapidamente la struttura del database e ridurre errori che altrimenti emergerebbero soltanto nelle query o nei report.