|
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 |
2 |
22/05/97 |
10059 |
2 |
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 |
1 |
Rossi s.r.l. |
Via Stella, 21 - Palermo |
2 |
Bianchi s.p.a. |
Via Etnea, 18 - Catania |
3 |
Verdi s.r.l. |
Via Roma, 42 - Palermo |
…..un fornitore……può
vendere più prodotti...
PRODOTTI |
ID Prod. |
Nome prodotto |
Categoria |
ID Forn. |
1 |
IBM 200 |
Computer |
1 |
2 |
Laser SWX Lux |
Stampante |
1 |
3 |
Windows95 Kit |
Software |
2 |
…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.
-
Innanzitutto non è possibile creare o modificare relazioni tra tabelle
aperte, pertanto il primo passo è chiudere le tabelle aperte.
-
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.
-
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.
-
Una volta visualizzata la finestra di dialogo Relazioni, accertarsi
che si siano correlati i campi che si desiderava correlare, altrimenti
modificarli.
-
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:
-
Il campo corrispondente della tabella primaria è una chiave primaria
o nel caso non lo fosse, almeno disponga di un indice univoco;
-
I campi correlati contengano lo stesso tipo di dati con due possibili varianti,
un campo Contatore può essere correlato ad un campo Numerico
la
cui proprietà Dimensione campo sia impostata a Intero
lungo e un campo Contatore la cui proprietà Dimensione
campo sia impostata a ID replica può essere correlato
a un campo Numerico la cui proprietà Dimensione campo
sia a sua volta impostata su ID replica;
-
Nel caso in cui si trattasse di tabelle esterne al Data Base (fuori dal
progetto) ma comunque accessibili, per impostare l'integrità referenziale
è necessario che le tabelle siano state create con Access e che
il Data Base in cui sono memorizzate sia aperto; non è possibile
applicare l'integrità referenziale a tabelle correlate di Data Base in altri formati.
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.
-
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.
-
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).
-
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
|