Relazioni tra tabelle

La potenza di un sistema di gestione di Data Base relazionale è determinata dalla sua capacità di ricercare, trovare e raggruppare rapidamente le informazioni memorizzate in tabelle distinte.

Sicché, dopo avere impostato le diverse tabelle per ogni oggetto del Data Base, è necessario indicare il modo per collegare le informazioni. Tale collegamento si realizza stabilendo particolari relazioni tra le tabelle, in virtù delle quali le informazioni contenute in una tabella vengono univocamente correlate con le informazioni contenute in un’altra tabella.

La relazione tra due tabelle si basa sui concetti di chiave primaria e chiave esterna.Una chiave primaria è un campo di una tabella A (che chiameremo tabella primaria) che contiene valori non ripetuti che identificano in maniera univoca ciascun record; una chiave esterna è un campo di una tabella B (che chiameremo tabella secondaria) che ha lo stesso tipo di dati della chiave primaria e che viene utilizzato per legare i dati della tabella B a quelli della tabella A.

I clienti di una certa azienda possono essere associati, per esempio, agli ordini che hanno effettuato creando una relazione tra la tabella Clienti e la tabella Ordini tramite il campo ID Cliente.

ID Cliente = chiave primaria

CLIENTI
ID Cliente Cognome Nome
1 Rossi Mario
2 Verdi Luigi
il campo ID Cliente appare in entrambe le tabelle
TABELLA: ORDINI
ID Ord. ID Cliente Data ord.
10058  22/05/97 
10059  15/06/97 
ID Cliente = chiave esterna

Fig. 4

Esistono tre tipi di relazione tra le tabelle:
Fig. 5 Modifica Relazioni


La relazione uno a molti è il tipo di relazione più frequente in un Data Base relazionale: in questo tipo di relazione ad un record della tabella A possono corrispondere più record della tabella B, mentre ad un record della tabella B corrisponde un solo record della tabella A. Un’esempio di relazione uno a molti è quello visto sopra tra clienti e ordini. Un altro caso di relazione di questo tipo può essere quella esistente tra fornitori e articoli di un’azienda commerciale, nell’ipotesi che ogni prodotto venga fornito da un unico fornitore e che ogni fornitore possa fornire più prodotti:
 
FORNITORI
ID Forn. Nome fornitore Indirizzo
Rossi s.r.l. Via Stella, 21 - Palermo
Bianchi s.p.a. Via Etnea, 18 - Catania
Verdi s.r.l. Via Roma, 42 - Palermo

…..un fornitore……può vendere più prodotti...
 
PRODOTTI
ID Prod. Nome prodotto Categoria ID Forn.
IBM 200 Computer
Laser SWX Lux Stampante
Windows95 Kit Software

…ma ciascun prodotto ha un solo fornitore


In una relazione molti a molti ad un record della tabella A possono corrispondere più record della tabella B e, viceversa, ad un record della tabella B possono corrispondere più record della tabella A. Questo tipo di relazione è possibile solo definendo una terza tabella, chiamata tabella di congiunzione, che dispone di due chiavi esterne, una che punta alla chiave primaria della tabella A, l’altra che punta alla chiave primaria della tabella B. Una relazione molti a molti è quindi in realtà composta da due relazioni uno a molti con una terza tabella. Tale terza tabella può anche essere composta da due soli campi (le due chiavi esterne), se il suo scopo è solo quello di legare le due tabelle primarie. Il più delle volte si cercherà comunque di renderla più significativa, aggiungendo altri campi con informazioni pertinenti.

La tabella Ordini e la tabella Prodotti, ad esempio, hanno una relazione molti a molti definita creando due relazioni uno a molti con la tabella Dettaglio ordini.



In una relazione uno a uno, ad un record della tabella A può corrispondere un solo record della tabella B, e viceversa. Si tratta di relazioni poco usate nella pratica, in quanto nella maggior parte dei casi, le informazioni delle due tabelle possono essere contenute in un’unica tabella. Si possono tuttavia verificare situazioni in cui una relazione uno a uno si rivela utile. Si immagini, per esempio, che la Divisione Personale di un’azienda voglia distinguere tra dati pubblici dei dipendenti e dati privati. Si potrebbe a tale scopo porre i dati pubblici in una tabella alla quale possono accedere tutti, mentre quelli privati in un’altra tabella ad accesso controllato; infine legare le due tabelle con una relazione uno a uno definendo in entrambe le tabella la stessa chiave primaria.

Vediamo adesso come si impostano le relazioni e come si modificano quelle esistenti.

  1. Innanzitutto non è possibile creare o modificare relazioni tra tabelle aperte, pertanto il primo passo è chiudere le tabelle aperte.
  2. Quindi, fare clic sul pulsante Relazioni sulla barra degli strumenti nella finestra del Data Base: se è la prima volta che si definiscono o apportano modifiche alle relazioni del Data Base, la finestra appena aperta è vuota, e appare la finestra di dialogo Aggiungi tabelle o query, dalla quale selezionare le tabelle per le quali si vuole creare una relazione, quindi scegliere Aggiungi.
  3. A questo punto trascinare il campo o i campi che si desidera correlare da una tabella (la tabella primaria) all’altra (la tabella secondaria). Normalmente il campo chiave primaria, visualizzato in grassetto, viene trascinato su un campo che deve condividere con il campo chiave primaria lo stesso tipo di dati e lo stesso genere di informazioni, anche se non necessariamente lo stesso nome.
  4. Una volta visualizzata la finestra di dialogo Relazioni, accertarsi che si siano correlati i campi che si desiderava correlare, altrimenti modificarli.
  5. Fare clic su Crea.
Nella finestra di dialogo Relazioni è inoltre possibile imporre la cosiddetta Integrità referenziale: si tratta di un sistema di regole che assicura che le relazioni appena impostate si mantengano valide e che non si eliminino o si modifichino, per errore, i dati correlati. Per impostare l’integrità referenziale è necessario rispettare le seguenti condizioni: Se si seleziona la casella di controllo Applica integrità referenziale quando si crea una relazione, occorrerà in seguito rispettare alcune regole nell’immissione o nella eliminazione di dati.
  1. Non si può immettere un valore nel campo chiave esterna se quest’ultimo non esiste anche nel campo chiave primaria: ad esempio, quando si aggiunge un prodotto alla tabella Prodotti è necessario che la chiave esterna ID fornitore esista (come chiave primaria, naturalmente) nella tabella Fornitori.
  2. Inoltre, non si può cancellare un record da una tabella primaria (il record relativo ad un fornitore, per tornare all’esempio precedente), se esistono record corrispondenti in una tabella correlata (cioè prodotti venduti da quel fornitore).
  3. Infine, non è possibile modificare un valore chiave primaria se il record corrispondente dispone di record correlati.
Attivare quindi la casella Applica Integrità referenziale della maschera di Fig. 5 significa rendere valide queste regole.
Ogni forzatura che si cercherà di fare verrà in questo caso evidenziata da un messaggio di avvertimento. Tuttavia Access, permette, sempre comunque mantenendo l'integrità referenziale, anche ignorando alcune regole, in particolare quelle sulla restrizione sulla modifica e eliminazione dei record correlati. Queste operazioni vengono compiute rispettivamente attivando la seconda e terza opzione di Fig. 5: Aggiorna campi correlati a catena e Elimina record correlati a catena.

Continua - Sommario - Introduzione