Come modificare una relazione in Access: tutorial pratico

Per modificare una relazione in Access apri Strumenti database > Relazioni, individua la linea tra le due tabelle e fai doppio clic per aprire Modifica relazioni. Da qui puoi verificare o cambiare i campi collegati e configurare integrità referenziale, aggiornamento a catena ed eliminazione a catena. Prima di intervenire su un database con dati reali crea sempre un backup e controlla che la modifica non renda incoerenti record già presenti.

Indice

  • Quando modificare una relazione
  • Procedura passo passo
  • Cambiare i campi collegati
  • Integrità referenziale
  • Opzioni a catena
  • Controllo tipi dati
  • Query di verifica
  • Troubleshooting
  • FAQ

Che cosa significa modificare una relazione

Una relazione Access collega due campi che rappresentano lo stesso identificatore in tabelle differenti. Il caso classico è Clienti.IDCliente collegato a Ordini.IDCliente. Il primo campo è chiave primaria sul lato uno; il secondo è chiave esterna sul lato molti. Modificare la relazione può significare sostituire uno dei campi, attivare o disattivare l’integrità referenziale oppure cambiare le regole di aggiornamento ed eliminazione a catena.

La relazione non è soltanto una linea grafica. Quando l’integrità è attiva, Access usa quel vincolo per impedire valori figli senza un padre valido e per bloccare operazioni che produrrebbero record orfani. Per questo una modifica deve essere trattata come un intervento sulla struttura del database.

Quando può essere necessario modificarla

Potresti scoprire che Ordini.IDCliente è stato collegato per errore a Clienti.CodiceCliente invece che a Clienti.IDCliente. Oppure potresti aver introdotto una nuova chiave tecnica Autonumerazione e voler spostare la relazione da un vecchio codice testuale al nuovo ID. In altri casi i campi sono corretti, ma vuoi attivare l’integrità referenziale dopo aver pulito i dati esistenti.

Un altro motivo è la revisione delle regole a catena. Per esempio, un database precedente consentiva l’eliminazione a catena tra Clienti e Ordini, ma ora l’azienda vuole conservare lo storico: dovrai disattivare l’opzione mantenendo la relazione e l’integrità.

Procedura passo passo

  1. Esegui un backup del file ACCDB.
  2. Chiudi tabelle, query, maschere e report che usano le tabelle interessate.
  3. Apri Strumenti database > Relazioni.
  4. Usa Tutte le relazioni se il collegamento non è visibile.
  5. Fai doppio clic sulla linea della relazione.
  6. Controlla tabella/query e campo su entrambi i lati.
  7. Modifica i campi o le opzioni necessarie.
  8. Configura Applica integrità referenziale.
  9. Valuta separatamente Aggiorna campi correlati a catena ed Elimina record correlati a catena.
  10. Conferma con OK, salva e testa.

Prima di cambiare i campi: verifica il significato

Due campi possono avere lo stesso tipo dati ma rappresentare concetti diversi. Collegare Prodotti.IDProdotto a DettagliOrdine.IDOrdine solo perché entrambi sono numeri sarebbe tecnicamente assurdo. La prima verifica deve quindi essere semantica: i due campi rappresentano davvero lo stesso identificatore?

Usa nomi chiari come IDCliente, IDOrdine e IDProdotto. Evita campi generici chiamati ID senza contesto quando il database contiene molte tabelle. Una nomenclatura coerente rende più difficile creare relazioni sbagliate.

Compatibilità dei tipi dati

Microsoft richiede tipi compatibili per applicare l’integrità. La combinazione più comune è chiave primaria Autonumerazione e chiave esterna Numero con Dimensione campo Intero lungo. Un campo Testo breve contenente “123” non equivale a un Numero 123. Se i campi sono incompatibili, devi correggere la struttura prima di creare il vincolo.

Non convertire tipi su tabelle di produzione senza copia di sicurezza. Una conversione può perdere valori non compatibili, modificare formati o produrre Null. Prima crea una query che identifica valori anomali e testa la conversione su una copia.

Modificare una relazione con dati già presenti

Quando le tabelle sono piene, devi controllare che ogni chiave esterna abbia una corrispondenza nel nuovo campo padre. Se sposti la relazione da CodiceCliente a IDCliente, non basta cambiare la linea: devi prima popolare correttamente Ordini.IDCliente per ogni ordine.

Una query di non corrispondenza aiuta:

SELECT Ordini.IDOrdine, Ordini.IDCliente FROM Ordini LEFT JOIN Clienti ON Ordini.IDCliente = Clienti.IDCliente WHERE Clienti.IDCliente IS NULL;

Se restituisce righe, correggi quei record prima di attivare l’integrità.

Verificare l’unicità del lato uno

Il campo sul lato uno deve essere chiave primaria o avere un indice univoco. Se stai usando un codice aziendale, controlla duplicati:

SELECT CodiceCliente, Count(*) AS Quanti FROM Clienti GROUP BY CodiceCliente HAVING Count(*) > 1;

La presenza di duplicati significa che il campo non può identificare univocamente il record. Devi deduplicare oppure scegliere una chiave diversa.

Attivare o disattivare l’integrità referenziale

Nella finestra Modifica relazioni trovi Applica integrità referenziale. Quando è selezionata, Access impedisce inserimenti di chiavi esterne inesistenti, cancellazioni del padre che lascerebbero figli orfani e modifiche della chiave primaria che romperebbero i collegamenti.

Disattivarla può essere necessario temporaneamente in un processo di migrazione controllato, ma non dovrebbe diventare una soluzione permanente a dati incoerenti. Se Access rifiuta il vincolo, identifica prima la causa.

Aggiornamento a catena

Aggiorna campi correlati a catena serve quando una chiave primaria modificabile può cambiare. Access aggiorna automaticamente i valori corrispondenti nelle tabelle figlie. Se la primaria è Autonumerazione, Microsoft indica che l’opzione non ha effetto pratico perché il valore non viene modificato.

Se una chiave naturale cambia spesso, considera di sostituirla con un ID Autonumerazione stabile. Il codice aziendale può restare un campo separato con indice univoco.

Eliminazione a catena

Elimina record correlati a catena cancella i figli quando elimini il padre. È molto più rischiosa. Può essere corretta per dati tecnici dipendenti, ma spesso non lo è per ordini, fatture, pagamenti o movimenti storici. Valuta sempre la conservazione dei dati e crea un backup.

Non attivare le due opzioni a catena come pacchetto. Sono regole diverse e devono corrispondere a esigenze diverse.

Esempio: correggere Clienti e Ordini

Supponiamo che Ordini.CodiceCliente sia collegato a Clienti.CodiceCliente. L’azienda decide di introdurre Clienti.IDCliente Autonumerazione. Prima aggiungi Ordini.IDCliente Numero/Intero lungo. Poi aggiorna il nuovo campo usando una query che associa il vecchio codice al nuovo ID. Verifica che non esistano Null o mancati abbinamenti.

Solo dopo puoi rimuovere la vecchia relazione e creare Clienti.IDCliente 1→∞ Ordini.IDCliente con integrità referenziale. Quando tutte le query, maschere e report usano il nuovo ID, puoi valutare se mantenere il vecchio codice come attributo descrittivo.

Non eliminare la relazione per aggirare un errore

Se una cancellazione viene bloccata dall’integrità, eliminare la relazione per eseguire l’operazione è quasi sempre un errore. Il blocco sta segnalando che esistono record figli. Devi decidere se conservarli, eliminarli in modo controllato o usare una regola a catena appropriata.

Rimuovendo il vincolo senza correggere il processo, renderai possibile creare nuovi record orfani e il problema si manifesterà più avanti.

Relazione e join sono diversi

Una relazione salvata descrive il modello persistente; un join in una query decide come combinare dati in quella interrogazione. Modificare il tipo di join di una query non equivale a cambiare l’integrità referenziale. Una query può usare INNER JOIN o LEFT JOIN indipendentemente dalla presenza di un vincolo.

Access spesso propone automaticamente i join in base alle relazioni salvate. Dopo una modifica, controlla le query esistenti per verificare che usino ancora i campi corretti.

Controllare le dipendenze degli oggetti

Prima di rinominare o sostituire un campo usa il riquadro Dipendenze oggetti. Una tabella può alimentare decine di query, maschere e report. Una relazione corretta non impedisce a un oggetto applicativo di rompersi se cerca un campo che hai rimosso.

Documenta le dipendenze principali e modifica gli oggetti in modo coordinato. Per progetti importanti esegui un test di regressione dopo ogni cambiamento strutturale.

Database multiutente e front-end/back-end

In un database condiviso, le relazioni tra tabelle Access vanno definite nel back-end che contiene fisicamente i dati. Ogni utente dovrebbe lavorare con un front-end locale. Prima di modificare le relazioni, assicurati che nessun utente abbia aperto oggetti che bloccano la struttura.

Esegui la manutenzione in una finestra pianificata, crea backup e aggiorna i collegamenti dei front-end se la posizione del back-end cambia.

Access Microsoft 365 e Access 2024

Microsoft documenta la finestra Relazioni e la modifica dei collegamenti per Access per Microsoft 365, Access 2024 e le versioni desktop precedenti indicate nelle pagine di supporto. L’interfaccia può variare leggermente per lingua e aggiornamenti, ma i concetti restano identici.

La scelta 32 o 64 bit non cambia cardinalità e integrità; riguarda soprattutto driver, componenti, API e memoria. Access Runtime non è l’ambiente completo per progettare la struttura.

Test dopo la modifica

Crea un record padre e alcuni figli. Prova inserimento, modifica e cancellazione. Verifica che Access impedisca chiavi esterne inesistenti. Se hai attivato aggiornamento a catena, modifica una chiave di prova. Se hai attivato eliminazione a catena, esegui la prova esclusivamente su una copia.

Apri poi le query principali, le maschere e i report. Controlla combo box e sottomaschere, perché spesso salvano l’ID mentre mostrano una descrizione.

Prestazioni e indici

Le chiavi primarie sono indicizzate. Le chiavi esterne usate frequentemente nei join possono beneficiare di un indice, soprattutto su tabelle grandi. Non indicizzare ogni campo senza motivo: gli indici migliorano letture ma aggiungono lavoro a inserimenti e aggiornamenti.

Se il volume o il numero di utenti cresce molto, valuta un back-end server. Un modello relazionale ben progettato facilita la migrazione perché chiavi e cardinalità sono già definite correttamente.

Importazioni da Excel

Se il database nasce da Excel, controlla attentamente tipi e duplicati. Excel può contenere codici misti, celle vuote e valori apparentemente numerici memorizzati come testo. Prima di creare relazioni, separa le entità e assegna chiavi stabili.

Una buona migrazione trasforma un elenco piatto in Clienti, Ordini, Prodotti e DettagliOrdine. Le relazioni diventano il risultato della normalizzazione, non un’aggiunta grafica finale.

Troubleshooting

Se non puoi salvare la modifica, chiudi gli oggetti aperti. Se non puoi attivare integrità, verifica chiave univoca, tipi dati e record orfani. Se la relazione sembra sparita, usa Tutte le relazioni. Se lavori con tabelle collegate, modifica i vincoli nel database sorgente appropriato.

Se dopo il cambiamento compaiono duplicati nelle query, controlla cardinalità e join. Se maschere o report mostrano errori, verifica i campi rinominati e le origini record.

Errori comuni

Non cambiare contemporaneamente campi, tipi e regole a catena senza una sequenza di test. Non usare nomi descrittivi come chiavi soltanto perché sono leggibili. Non disattivare l’integrità per importare dati sporchi e poi dimenticare di riattivarla. Non modificare direttamente il file di produzione senza backup.

Ogni modifica dovrebbe avere una motivazione documentata e un test che dimostri il risultato atteso.

FAQ

Posso cambiare i campi di una relazione?

Sì, ma i nuovi campi devono rappresentare lo stesso identificatore e avere tipi compatibili.

Eliminare la relazione cancella i dati?

No, rimuove il vincolo. I dati restano, ma perdi la protezione di integrità.

Devo attivare sempre la cascata?

No. Aggiornamento ed eliminazione a catena vanno valutati separatamente.

Autonumerazione può collegarsi a Numero?

Sì, normalmente a Numero con Dimensione Intero lungo.

Posso modificare relazioni su Mac?

Access desktop non è disponibile nativamente per macOS; la procedura riguarda Windows.

Link utili

Consulta la categoria Guide Access, come creare relazioni, integrità referenziale e tabella ponte.

Fonti ufficiali: Microsoft Support: creare, modificare o eliminare una relazione e guida Microsoft alle relazioni.

Conclusione

Per modificare una relazione in Access lavora dalla finestra Relazioni, controlla prima i dati e cambia un elemento alla volta. Chiavi stabili, tipi compatibili, integrità referenziale e test su copia sono ciò che rende la modifica sicura. La linea grafica è solo la rappresentazione di una regola che protegge l’intero database.

Lascia un commento