Definizione di relazioni tra tabelle in un database di Microsoft Access

Traduzione articoli Traduzione articoli
Identificativo articolo: 304466 - Visualizza i prodotti a cui si riferisce l?articolo.
Utenti inesperti: Ŕ richiesta la conoscenza dell'interfaccia utente dei computer a utente singolo.

Il contenuto di questo articolo Ŕ applicabile solo ai database di Microsoft Access (file con estensione mdb o accdb).
Per la versione di questo articolo relativa a Microsoft Access 2000, vedere 304467.
Per la versione di questo articolo relativa a Microsoft Access 97, vedere 304468.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene descritto come definire le relazioni in un database di Microsoft Access. Vengono trattati i seguenti argomenti:
  • Relazioni tra tabelle
  • Tipi di relazioni tra tabelle
    • Relazioni uno-a-molti
    • Relazioni molti-a-molti
    • Relazioni uno-a-uno

  • Definizione di relazioni tra tabelle
    • Definizione di relazioni uno-a-molti o uno-a-uno
    • Definizione di relazioni molti-a-molti

  • IntegritÓ referenziale
  • Aggiornamenti ed eliminazioni a catena
  • Tipi di join

Informazioni

Relazioni tra tabelle

In un database relazionale, le relazioni consentono di impedire la presenza di dati ridondanti. Se ad esempio si sta progettando un database che terrÓ traccia di informazioni relative a libri, si potrebbe creare una tabella detta Titoli che memorizzi le informazioni su ciascuno libro, ad esempio il titolo del libro, la data di pubblicazione e l'editore. Esistono inoltre informazioni che si potrebbe desiderare di memorizzare in relazione all'editore, ad esempio il numero di telefono, l'indirizzo e il codice di avviamento postale dell'editore. Se tutte queste informazioni dovessero essere memorizzate nella tabella dei titoli, il numero di telefono dell'editore verrebbe duplicato per ciascun titolo stampato dall'editore.

Una soluzione migliore consiste nel memorizzare le informazioni sull'editore solo una volta in una tabella distinta detta Editori. Quindi si collocherebbe un puntatore nella tabella Titoli che faccia riferimento a una voce della tabella Editori.

Per assicurarsi che i dati siano sincronizzati, Ŕ possibile applicare l'integritÓ referenziale tra le tabelle Titoli ed Editori. Le relazioni di integritÓ referenziale aiutano ad assicurare che le informazioni di una tabella corrispondano a quelle di un'altra. Ad esempio, ogni titolo nella tabella Titoli deve essere associato a uno specifico editore della tabella Editori. Non Ŕ possibile aggiungere al database un titolo di un editore non presente nel database.

Tipi di relazioni tra tabelle

Una relazione confronta i dati delle colonne chiave, in genere le colonne con lo stesso nome in entrambe le tabelle. Nella maggior parte dei casi la relazione confronta la chiave primaria di una tabella, che fornisce un identificatore univoco per ciascuna riga, con una voce della chiave esterna dell'altra tabella. Ad esempio, le vendite possono essere associate a titoli specifici venduti creando una relazione tra la colonna codice_titolo della tabella Titoli (chiave primaria) e la colonna codice_titolo della tabella Vendite (chiave esterna).

Esistono tre tipi di relazioni tra tabelle. Il tipo di relazione creata dipende da come sono definite le colonne correlate.

Relazioni uno-a-molti

Una relazione uno-a-molti Ŕ il tipo pi¨ comune di relazione. In questo tipo di relazione a una riga della tabella A possono corrispondere molte righe della tabella B, ma a una riga della tabella B pu˛ corrispondere solo una riga della tabella A. Ad esempio, le tabelle Editori e Titoli hanno una relazione uno-a-molti: ogni editore produce molti titoli ma ciascun titolo ha origine da un solo editore.

Una relazione uno-a-molti viene creata se solo una delle colonne correlate Ŕ una chiave primaria o ha un vincolo univoco.

In Access, la parte della chiave primaria di una relazione uno-a-molti Ŕ denotata dal simbolo di una chiave. La parte della chiave esterna di una relazione Ŕ denotata dal simbolo di infinito.

Relazioni molti-a-molti

In una relazione molti-a-molti, una riga della tabella A corrisponde a molte righe della tabella B e viceversa. Questa relazione viene creata definendo una terza tabella, detta tabella di collegamento, la cui chiave primaria Ŕ costituita dalle chiavi esterne delle tabelle A e B. Ad esempio, la tabella Autori e la tabella Titoli hanno una relazione molti-a-molti definita da una relazione uno-a-molti di ciascuna di tali tabelle con la tabella AutoriTitoli. La chiave primaria della tabella AutoriTitoli Ŕ la combinazione della colonna codice_autore (la chiave primaria della tabella Autori) e della colonna codice_titolo (la chiave primaria della tabella Titoli).

Relazioni uno-a-uno

In una relazione uno-a-uno, una riga della tabella A non pu˛ corrispondere a pi¨ di una riga della tabella B e viceversa. Una relazione uno-a-uno viene creata se entrambe le colonne correlate sono chiavi primarie o hanno vincoli univoci.

Questo tipo di relazione non Ŕ comune perchÚ la maggior parte delle informazioni correlate in questo modo si troverebbe interamente in una sola tabella. Si utilizza una relazione uno-a-uno per:
  • Dividere una tabella con molte colonne.
  • Isolare una parte di una tabella per motivi di sicurezza.
  • Memorizzare dati a breve termine che potrebbero essere facilmente eliminati con la semplice eliminazione della tabella.
  • Memorizzare informazioni pertinenti solo a un sottoinsieme della tabella principale.
In Access, la parte della chiave primaria di una relazione uno-a-uno Ŕ denotata dal simbolo di una chiave. Anche la parte della chiave esterna Ŕ denotata dal simbolo di una chiave.

Definizione di relazioni tra tabelle

Quando si crea una relazione tra tabelle, non Ŕ necessario che i campi correlati abbiano gli stessi nomi. Tuttavia, i campi correlati devono presentare lo stesso tipo di dati se il campo della chiave primaria non Ŕ un campo di tipo Contatore. ╚ possibile confrontare un campo di tipo Contatore con un campo di tipo Numerico solo se la proprietÓ DimensioneCampo di entrambi i campi Ŕ la stessa. Ad esempio Ŕ possibile confrontare un campo di tipo Contatore con un campo di tipo Numerico se la proprietÓ DimensioneCampo di entrambi i campi Ŕ Intero lungo. Anche se entrambi i campi sono di tipo Numerico, devono avere la stessa impostazione per la proprietÓ DimensioneCampo.

Definizione di relazioni uno-a-molti o uno-a-uno

Per creare una relazione uno-a-molti o uno-a-uno, attenersi alla seguente procedura:
  1. Chiudere tutte le tabelle eventualmente aperte. Non Ŕ possibile creare o modificare relazioni tra tabelle aperte.
  2. In Access 2002 o in Access 2003, attenersi alla seguente procedura:
    1. Premere F11 per passare alla finestra Database.
    2. Scegliere Relazioni dal menu Strumenti.
    In Access 2007, scegliere Relazioni nel gruppo Mostra/Nascondi della scheda Strumenti di database.
  3. Se ancora non sono state definite relazioni nel database, viene visualizzata automaticamente la finestra di dialogo Mostra tabella. Se si desidera aggiungere le tabelle da correlare ma la finestra di dialogo Mostra tabella non viene visualizzata, scegliere Mostra tabella dal menu Relazioni.
  4. Fare doppio clic sui nomi delle tabelle da correlare, quindi chiudere la finestra di dialogo Mostra tabella. Per creare una relazione tra una tabella e se stessa, aggiungere tale tabella due volte.
  5. Trascinare il campo da correlare di una tabella al campo correlato dell'altra tabella. Per trascinare pi¨ campi, premere CTRL, fare clic su ciascun campo e quindi trascinarli.

    Nella maggior parte dei casi si trascina il campo della chiave primaria (visualizzato in grassetto) di una tabella su un campo simile (spesso con lo stesso nome) dell'altra tabella detto chiave esterna.
  6. Viene visualizzata la finestra di dialogo Modifica relazioni. Assicurarsi che i nomi dei campi visualizzati nelle due colonne siano corretti. Se necessario Ŕ possibile modificarli.

    Impostare le opzioni della relazione, se necessario. Se occorrono informazioni su un elemento particolare della finestra di dialogo Modifica relazioni, fare clic sul pulsante con il punto interrogativo e quindi sull'elemento. Queste opzioni verranno spiegate in dettaglio pi¨ avanti in questo articolo.
  7. Fare clic su Crea per creare la relazione.
  8. Ripetere i passaggi da 5 a 8 per ogni coppia di tabelle da correlare.

    Quando si chiude la finestra di dialogo Modifica relazioni, viene chiesto se si desidera salvare il layout. Che si salvi o meno il layout, le relazioni create vengono salvate nel database.

    NOTA: Ŕ possibile creare relazioni nelle query oltre che nelle tabelle. Tuttavia nelle query non viene applicata l'integritÓ referenziale.

Definizione di relazioni molti-a-molti

Per creare una relazione molti-a-molti, attenersi alla seguente procedura:
  1. Creare due tabelle con una relazione molti-a-molti.
  2. Creare una terza tabella, detta tabella di collegamento, e aggiungervi nuovi campi con le stesse definizioni dei campi di chiave primaria di ciascuna delle altre due tabelle. Nella tabella di collegamento i campi di chiave primaria fungono da chiavi esterne. ╚ possibile aggiungere altri campi alla tabella di collegamento come per qualsiasi altra tabella.
  3. Nella tabella di collegamento impostare la chiave primaria per includervi i campi di chiave primaria delle altre due tabelle. Ad esempio, in una tabella di collegamento AutoriTitoli la chiave primaria sarebbe costituita dai campi IDOrdine e IDProdotto.

    NOTA: Per creare una chiave primaria, attenersi alla seguente procedura:
    1. Aprire una tabella in visualizzazione Struttura.
    2. Selezionare il campo o i campi da definire come chiave primaria. Per selezionare un campo, fare clic sul selettore di riga relativo al campo desiderato.

      Per selezionare pi¨ campi, tenere premuto CTRL e fare clic sul selettore di riga relativo a ciascun campo.
    3. In Access 2002 o in Access 2003, fare clic su Chiave primaria sulla barra degli strumenti.

      In Access 2007, fare clic su Chiave primaria nel gruppo Strumenti della scheda Struttura.

      Nota Se si desidera che l'ordine dei campi di una chiave primaria costituita da pi¨ campi sia diverso da quelli di tali campi della tabella, fare clic su Indici sulla barra degli strumenti per visualizzare la finestra di dialogo Indici, quindi riordinare i nomi dei campi per l'indice denominato ChiavePrimaria.
  4. Definire una relazione uno-a-molti tra ciascuna delle due tabelle primarie e la tabella di collegamento.

IntegritÓ referenziale

L'integritÓ referenziale Ŕ un sistema di regole utilizzato in Microsoft Access per assicurare che le relazioni tra i record di tabelle correlate siano valide e che i dati correlati non vengano eliminati o modificati accidentalmente. ╚ possibile impostare l'integritÓ referenziale quando vengono rispettate tutte le condizioni seguenti:
  • Il campo corrispondente della tabella primaria Ŕ una chiave primaria o ha un indice univoco.
  • I campi correlati presentano lo stesso tipo di dati. Vi sono due eccezioni. Un campo di tipo Contatore pu˛ essere correlato a un campo di tipo Numerico con la proprietÓ DimensioneCampo impostata su Intero lungo, e un campo di tipo Contatore la cui proprietÓ DimensioneCampo Ŕ impostata su ID replica pu˛ essere correlato a un campo di tipo Numerico con la proprietÓ DimensioneCampo impostata su ID replica.
  • Entrambe le tabelle appartengono allo stesso database di Microsoft Access. Se le tabelle sono collegate, devono essere nel formato di Microsoft Access. Inoltre, per impostare l'integritÓ referenziale, deve essere aperto il database in cui sono memorizzate. L'integritÓ referenziale non pu˛ essere applicata alle tabelle collegate di database in altri formati.
Nell'utilizzo dell'integritÓ referenziale valgono le regole seguenti:

  • Non Ŕ possibile immettere un valore nel campo della chiave primaria della tabella correlata inesistente nella chiave primaria della tabella primaria. Tuttavia Ŕ possibile immettere un valore Null nella chiave esterna, specificando che i record non sono correlati. Ad esempio, non Ŕ possibile che un ordine sia associato a un cliente inesistente, ma Ŕ possibile che sia presente un ordine non associato ad alcun cliente immettendo un valore Null nel campo IDCliente.
  • Non Ŕ possibile eliminare un record da una tabella primaria se in una tabella correlata sono presenti record corrispondenti. Ad esempio non Ŕ possibile eliminare il record di un dipendente dalla tabella Dipendenti se a tale dipendente sono associati ordini nella tabella Ordini.
  • Non Ŕ possibile modificare il valore di una chiave primaria della tabella primaria se tale record ha record correlati. Ad esempio non Ŕ possibile modificare l'ID di un dipendente nella tabella Dipendenti se a tale dipendente sono associati ordini nella tabella Ordini.

Aggiornamenti ed eliminazioni a catena

Per le relazioni in cui viene applicata l'integritÓ referenziale, Ŕ possibile specificare se si desidera che Microsoft Access aggiorni o elimini a catena i record correlati. Se si impostano queste opzioni, vengono consentite le operazioni di eliminazione e aggiornamento normalmente impedite dalle regole di integritÓ referenziale. Quando si eliminano i record o si modificano i valori delle chiavi primarie di una tabella primaria, vengono apportate le necessarie modifiche alle tabelle correlate per mantenere l'integritÓ referenziale.

Se, quando si definisce una relazione, si seleziona la casella di controllo Aggiorna campi correlati a catena, ogni volta che si modifica la chiave primaria di un record della tabella primaria la chiave primaria viene automaticamente aggiornata con il nuovo valore in tutti i record correlati. Se ad esempio si modifica l'ID di un cliente nella tabella Clienti, il campo IDCliente della tabella Ordini viene aggiornato automaticamente per tutti gli ordini del cliente, in modo che la relazione non venga infranta. In Microsoft Access gli aggiornamenti a catena vengono eseguiti senza che venga visualizzato alcun messaggio.

NOTA: se la chiave primaria della tabella primaria Ŕ un campo di tipo Contatore, la selezione della casella di controllo Aggiorna campi correlati a catena non sortisce alcun effetto in quanto non Ŕ possibile modificare il valore di un campo di tipo Contatore.

Se, quando si definisce una relazione, si seleziona la casella di controllo Elimina record correlati a catena, ogni volta che si eliminano record nella tabella primaria i record correlati vengono automaticamente eliminati nella tabella correlata. Se ad esempio si elimina il record di un cliente dalla tabella Clienti, tutti gli ordini di tale cliente vengono automaticamente eliminati dalla tabella Ordini (inclusi i record della tabella Dettagli sugli ordini correlati ai record della tabella Ordini). Se si eliminano record da un modulo o da un foglio dati quando Ŕ selezionata la casella di controllo Elimina record correlati a catena, l'utente viene avvertito che verranno eliminati anche i record correlati. Tuttavia, quando si eliminano i record mediante una query di eliminazione, i record delle tabelle correlate vengono eliminati automaticamente senza che venga visualizzato alcun avviso.

Tipi di join

Esistono tre tipi di join:

L'opzione 1 definisce un inner join, ossia un join in cui i record di due tabelle vengono combinati nei risultati di una query solo se i valori dei campi collegati rispettano la condizione specificata. In una query, il join predefinito Ŕ un inner join che seleziona i record solo se i valori dei campi collegati corrispondono.

L'opzione 2 definisce un left outer join, ossia un join nel quale tutti i record a sinistra dell'operazione LEFT JOIN nell'istruzione SQL della query vengono aggiunti ai risultati della query, anche se non esistono valori corrispondenti nel campo collegato della tabella a destra.

L'opzione 3 definisce un right outer join, ossia un join nel quale tutti i record a destra dell'operazione RIGHT JOIN nell'istruzione SQL della query vengono aggiunti ai risultati della query, anche se non esistono valori corrispondenti nel campo collegato della tabella a sinistra.

ProprietÓ

Identificativo articolo: 304466 - Ultima modifica: martedý 16 luglio 2013 - Revisione: 5.3
Le informazioni in questo articolo si applicano a:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Chiavi:á
kbdesign kbdatabase kbhowto KB304466
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com