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
Posta un commento
Ciao a tutti voi, sono a chiedervi se avete preferenze per Post di vostro interesse
in modo da dare a tutti voi che mi seguite un aiuto maggiore, grazie per la vostra disponibilità.