Le relazioni, MySQL.

Mauro Goretti

Le relazioni, MySQL.

Mettere il relazione è l'elemento più qualificante di un database relazionale, e questo appare fin anche ovvio. Cosa e come mettere in relazione, invece, non è così intuitivo. Ciò che rende interessante un modello relazionale è la sua capacità di proiettare le connessioni al di fuori delle
singole tabelle per stabilire dei legami all'interno di un database. Più tabelle possono essere quindi
messe in relazione, potenziando l'espressività dei singoli dati. Ma quali titpi di relazione possono
essere stabiliti tra differenti tabelle?

Uno a uno – One to one.

Due tabelle si dicono in relazione uno a uno quando a ogni riga di una corrisponde una sola riga dell'altra e viceversa. Riprendendo la precedente tabella, si intende qualificare maggiormente ogni
contatto aggiungendo alcune informazioni riguardanti il tipo di relazione che si ha con ciascun nominativo, ossia se la persona è stata incontrata e se è raggiungibile online. Il primo passo consiste nell'identificare un elemento che qualifichi univocamente ogni riga della prima tabella.
Nell'esempio si è provveduto ad aggiungere un campo contenente un identificativo numerico progressivo e quindi unico per ogni riga.

Tabella 1.2 qualificata con il campo ID.
ID Cognome Nome Indirizzo Cap Città N. Telefono
1 Baldi Andrea Piazza 27029 Vigevano 0381 -xxx
Dante 1
2 Gando Landi Via 27029 Vigevano 0381 -aaa
Settala 4
3 Netti Carlo Strada 40128 Bologna 051 -yyy
Larga 3
4 Rossi Mario Via degli 20100 Milano 02 -zzz
Orti 15

A questo punto, rimane da creare una seconda tabella contenente i dati aggiuntivi sui singoli contatti.

Tabella 1.3 in relazione tramite il campo ID.
ID Relazione Di persona Online
1 Amico Sì No
2 Conoscente No Sì
3 Parente Sì Sì
4 Collega No No

Ogni riga di questa seconda tabella contiene i dati necessari a estendere le informazioni della prima,
ma come unire le informazioni della prima tabella con quelle della seconda? Tramite il campo ID,
univoco per ogni riga, sia nella prima sia nella seconda tabella: agganciando le due tabelle tramite il campo ID si può facilmente notare come a una riga della prima corrisponde una e una sola riga della seconda, entrambe qualificate tramite il campo ID. Ecco quindi, che di Baldi Andrea si saprà che è un amico, che lo si è incontrato di persona, ma che non si può contattare su Internet, e tutto questo semplicemente unendo le informazioni di due tabelle mediante una chiave univoca, tramite la quale instaurare la relazione. È da notare, comunque, che questo tipo di relazione non è molto
frequente all'interno di un database relazionale per molti motivi, soprattutto legati al decremento in
prestazioni che questo meccanismo comporta, dato il proliferare di tabelle che il modello uno a uno
comporta.

Uno a molti – One to many.

Molto più comune è il modello di relazione uno a molti, nel quale più righe di una tabella possono
avere relazioni con più righe di un'altra tabella. Per esempio, si potrebbero espandere i dati geografici relativi a ogni contatto, per includere informazioni quali il numero degli abitanti della città in cui ognuno risiede e il codice Istat. A questo punto, si può cogliere l'occasione per semplificare la prima tabella e ridistribuire le informazioni.

Tabella 1.4 semplificata eliminando la colonna Città e semplificando la colonna N. Telefono.
Cognome Nome Indirizzo Cap N. Telefono
Baldi Andrea Piazza 27029 xxx
Dante 1
Gando Landi Via Settala 4 27029 aaa
Netti Carlo Strada 40128 yyy
Larga 3
Rossi Mario Via degli 20100 zzz
Orti 15
Tabella 1.5 aggiuntiva, messa in relazione tramite il campo Cap.
Cap Città Abitanti Prefisso Codice Istat
20100 Milano 1.182.693 02 015146
27029 Vigevano 54.672 0381 018177
40128 Bologna 369.955 051 037006
A colpo d'occhio le due tabelle hanno qualcosa a che fare l'una con l'altra. Da una parte la prima tabella è una semplificazione della tabella che abbiamo visto nell'articolo precedente, mentre la seconda di questo articolo sembra espanderne l'espressività. Quindi, da un lato si hanno due tabelle
che singolarmente sono meno complesse di quella originaria, mentre nel contempo veicolano più
informazioni. Ma come ricostruire un'unità espressiva, come mettere insieme i dati delle due tabelle? Semplicemente, utilizzando come elemento di raccordo il campo Cap: le due tabelle presentano lo stesso campo e le loro informazioni possono essere unite (join) facendo perno sulle informazioni che questo campo consente di articolare. Per esempio, la Tabella 1.4 consente di sapere che Baldi Andrea abita in Piazza Dante 1, che ha un determinato numero di telefono e che il Cap della città è 27029. Prendendo proprio questo ultimo dato, si può scorrere il campo Cap della
Tabella 1.5 e individuare il medesimo valore. Si saprà quindi, che al Cap 27029 corrisponde la città
di Vigevano, che ha 54.672 abitanti, 0381 come prefisso telefonico e 018177 come codice Istat.
Questo è un tipico caso di relazione uno a molti, dove a una singola riga della Tabella 1.5 corrispondono più righe nella Tabella 1.4._



Commenti

Post popolari in questo blog

INSTAFETCH - Android -

I pesci abissali. Zoologia marina.

La Centrale Idroelettrica.