Conoscere i database.
Mauro Goretti |
Conoscere i database.
Una collezione di dati.
Che cos'è un database? Se ne
potrebbero dare diverse definizioni, utilizzando concetti matematici
o
categorie astratte, eleganti ma di
difficile comprensione, che non aiuterebbero l'utente a cogliere
l'essenza di uno strumento fondamentale
nell'economia moderna. Tutto ruota attorno ai dati: una volta
ottenuti, come conservarli, ordinarli e gestirli? Un esempio
classico, di utilizzo quotidiano, è
la più semplice delle rubriche
telefoniche, un foglio nel quale inserire i nominativi di cui si
intende
mantenere i contatti, in una forma
qualsiasi:
Rossi
Mario Via degli Orti 15 20100 Milano 02-xxx
Baldi
Andrea Piazza Dante 1 27029 Vigevano 0381-xxx
Netti
Carlo Strada Larga 3 40128 Bologna 05-xxx
Ogni
riga è una singola registrazione (record), un insieme di dati
coerente che individua un elemento significativo. Infatti, ogni riga
contiene tutto quello che serve per individuare i dati che
ci
interessano per ogni singola persona di cui vogliamo tenere i
contatti. Questa è una lista di
informazioni
che, nella sua semplicità, già consente di mantenere i dati che ci
servono e di recuperarli senza troppe difficoltà. Nella sua
semplicità, però, già si nota qualche piccola smagliatura: gli
elementi sono stati scritti senza alcun ordine, il che rende lento e
laborioso scorrere
l'elenco
per ritrovare una precisa registrazione. Il tutto diventa più
semplice riordinando le righe:
Baldi
Andrea Piazza Dante 1 27029 Vigevano 0381-xxx
Netti
Carlo Strada Larga 40128 Bologna 05-yyy
Rossi
Mario Via degli Orti 15 20100 Milano 02-zzz
In
questo modo scorrere le righe è intuitivamente più semplice:
volendo trovare Netti Carlo, basterà
posizionarsi
dopo Baldi Andrea e prima di Rossi Mario, seguendo l'ordine
alfabetico dei cognomi.
Cosa
è successo? Semplicemente, si è data una forma ai dati, che
iniziano a presentare una elementare strutturazione. Già così,
come si può facilmente vedere, i dati sono più facilmente fruibili.
Andiamo oltre:
A
.
. .
B
Baldi
Andrea Piazza Dante 1 27029 Vigevano 0381-xxx
.
. .
N
Netti
Carlo Strada Larga 3 40128 Bologna 05-yyy
.
. .
R
Rossi
Mario Via degli Orti 15 20100 Milano 02-zzz
.
. .
Abbiamo
aggiunto e formalizzato un indice dei dati introducendo un metadato,
ovvero un dato che
a sua
volta serve a descrivere i dati veri e propri. Di per sé, l'indice
non porta alcuna informazione specifica rispetto ai record che
individua, ma è fondamentale proprio perché fornisce una
descrizione di un metodo di accesso che velocizza la gestione dei
dati veri e propri. A questo punto,
però,
ci ritroviamo con una serie di dati, ordinati, individuati da righe
successive, ma di per sé
monolitici
e intrattabili. Sappiamo che Baldi Andrea abita in Piazza Dante 1,
ma non possiamo
andare
molto oltre. Aggiungiamo un nuovo nominativo:
Baldi
Andrea Piazza Dante 1 27029 Vigevano 0381-xxx
Gando
Landi Via Settala 4 27029 Vigevano 0381-aaa
Netti
Carlo Strada Larga 3 40128 Bologna 05-yyy
Rossi
Mario Via degli Orti 15 20100 Milano 02-zzz
A
colpo d'occhio risalta una semplice relazione tra Baldi Andrea e
Gando Landi: abitano entrambi a
Vigevano.
Nello stesso tempo, però, si evidenzia un limite notevole del
nostro insieme di dati: non
è in
grado di esprimere questa relazione. Intuitivamente sembrerebbe il
contrario, ma basta immaginare una lista di 30.000 nominativi per
chiarire il problema: in tutta questa messe di dati l'unità
significativa è la riga e al suo interno si trova un insieme
arbitrario di dati non qualificati.
Questo
significa che, per capire se due persone abitano a Vigevano,
bisognerà scorrere tutte e
30.000
le righe e leggere al loro interno tutti i caratteri, fino a quando
non se ne incontri un sotto
insieme
significativo. Si tratta, in definitiva, di aumentare la risoluzione
delle informazioni memorizzate, di atomizzare i dati in
maniera che diventino maggiormente significativi.
Un
approccio interessante potrebbe essere la scrittura delle
informazioni, qualificando gli elementi
costitutivi
mediante elementi di separazione convenzionali e attribuendo loro una
precisa identità
tramite
l'istituzione di una prima riga informativa:
Cognome, Nome,
Indirizzo, Cap, Città, N. Telefono
Baldi,
Andrea, Piazza Dante 1, 27029, Vigevano, 0381-xxx
Gando,
Landi, Via Settala 4 , 27029 , Vigevano, 0381-aaa
Netti,
Carlo, Strada Larga 3, 40128 , Bologna , 05-yyy
Rossi
, Mario , Via degli Orti 15, 20100 , Milano, 02-zzz
Rispetto
all'elenco visto in precedenza, non vi sono dati in più; cambia
invece la descrizione degli stessi, ovvero i metadati utilizzati per
descrivere i contenuti. Sono state utilizzate delle virgole per
separare
i contenuti in campi differenti, che ora sono qualificati
dagli attributi presenti nell'intestazione, semplici “etichette”
che rendono più agevole identificare i dati che si stanno cercando.
In questo modo diventa più semplice, per esempio, capire se due
nominativi hanno una città in comune: basta scorrere la colonna
delle città per capirlo. Colonna? In effetti, il formato
appena
usato per descrivere i contenuti è nient'altro che il classico csv
(comma separated values),
leggibile
da un qualsiasi foglio elettronico, in cui i campi sono separati da
un segno di interpunzione
e le
righe da un a capo. In definitiva, le stesse informazioni potrebbero
essere rappresentate come
nella
seguente tabella.
Cognome Nome Indirizzo Cap Città
N. Telefono
Baldi
Andrea Piazza 27029 Vigevano
0381-xxx
Dante
1
Gando
Landi Via 27029
Vigevano 0381-aaa
Settala
4
Netti
Carlo Strada 40128 Bologna
051-yyy
Larga
3
Rossi
Mario Via degli 20100 Milano
02-zzz
Orti
15
Chi
abbia una qualche familiarità con database quali MySQL o SQL Server
avrà notato una disposizione dei dati abbastanza usuale. Si tratta
della classica tabella di un database relazionale.
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à.