Le Basi Dati
Le Basi Dati
Occorre capire come si possono organizzare le informazioni su un computer
e come possono essere ritrovate in momenti successivi.
Le Basi Dati
-
La memorizzazione dei dati
Il file system e la sua organizzazione
File sequenziali
Basi di dati gerarchiche e relazionali
Ipertesti e ipermedia
Il file system
Il File System è la prima forma di
archiviazione dei dati strutturata
con cui abbiamo a che fare. E’
tipicamente gerarchico e la sua
organizzazione serve a dare una
divisione logica ai contenuti di un
disco, siano essi dati o
programmi.
In Unix esistono anche
convenzioni sui nomi.
File sequenziali
L’elemento di archiviazione
atomico di un file system è il file.
Per sua natura è una sequenza di
codici da 0 a 255, memorizzati in
forma di byte.
Gli archivi
I programmi che vengono utilizzati
per la creazione degli archivi sono
normalmente chiamati programmi di
DataBase e per utilizzare una figura
sufficientemente esplicativa
potremmo dire che questi programmi
consentono il passaggio dalla scheda
d'archivio cartacea alla scheda
elettronica.
Gli archivi
I topolini hanno, come sempre,
perso qualche informazione al
gruviera.
Un gestore di database
permette di organizzare
archivi secondo le strutture
che preferiamo e riempirli di
informazioni.
Il successivo reperimento di
tali informazioni diviene
un'operazione assai
semplice, sempre che si sia
adottata una struttura
giusta.
Gli archivi
Semplificando (e parecchio)
potremmo cominciare col dire
che il concetto alla base dei
database è quello di
organizzare le informazioni più
o meno come si fa in un
dizionario.
Gli archivi
Supponiamo, come esempio, di volere
realizzare proprio un dizionario
utilizzando il nostro computer, magari un
dizionario bilingue. Se lo scrivessimo in
forma di testo lineare, le nostre ricerche
sarebbero disastrose. Infatti, cercando la
congiunzione “e”, il programma di ricerca
standard si fermerebbe ad ogni “e” che
trovasse nel testo!!
L'esigenza è quindi quella di strutturare
correttamente le informazioni. Nel
nostro caso potremmo tentare con:
blemma
b descrizione
b traduzione
Gli archivi
La struttura centrale di questi
programmi è il record (che può
essere paragonato alla vecchia
scheda) e i field (campi, che
contengono ben distinti tra loro, gli
elementi che sono contenuti nei vari
record). Così una base di dati
bibliografica sarà costituita di record
che contengono informazioni sui vari
volumi e ogni record sarà (per
esempio) composto di un campoautore, di un campo-titolo, di un
campo-data, di un campo-editore, di
un campo-luogo-di-edizione.
Gli archivi
Record Number
Autore
Titolo
Editore
Luogo Edizione
1
Ripellino, Angelo Maria
Praga magica
Giulio Einaudi Editore
Torino
1973
Definita questa Data
struttura fondamentale il programma per la gestione di
una base di dati deve fornire una serie di funzioni elementari. Chi usa
un DBase deve, ovviamente, essere in grado di: 1) creare un archivio;
2) definire la struttura di un record; 3) inserire dati nell'archivio;
4) ritrovare ed elaborare questi dati; 5) eliminare i dati indesiderati;
6) distruggere l'archivio.
Gli archivi
Definendo la struttura appena vista abbiamo descritto
l'elemento minimo del nostro
database/vocabolario/catalogo: il RECORD. In
sostanza si tratta di una scheda elettronica con i campi
predefiniti.
Manca ancora di dare l'indicazione di quali siano le
parti del record su cui intendiamo effettuare le nostre
ricerche. Nel caso del nostro dizionario saranno
lemma e traduzione, nel caso della base di dati
bibliografica, per es., autore, titolo, editore…
Queste saranno cioè le chiavi possibili del nostro
database.
Gli archivi
A questo punto potremo inserire tutte le
schede che vogliamo, ma ogni volta che
ne cercassimo una dovremmo:
dichiarare che chiave usare
dire quale valore della chiave cerchiamo
In questo modo se cercassimo la
congiunzione “e”, il sistema ci restituirebbe
solo la scheda che avesse come valore
della chiave il valore “e”.
Gli archivi 9
In gergo computerese, interessandoci di
database, incontreremo un certo numero di
termini che è opportuno chiarire subito:
indice: contiene l'elenco di tutte le chiavi;
sortare: orrendo neologismo per dire ordinare.
Ci si riferisce all'opportunità di ordinare
alfabeticamente (o in altro modo) le schede di
un database;
cancellazione logica: indica che una certa
scheda è segnata come cancellata, ma
ancora, fisicamente, esiste;
report: significa semplicemente stampa,
organizzata, del database.
Su molti di questi termini e concetti torneremo
più avanti.
Due metodi di ricerca
Poniamo di voler trovare un nome in un file. Le
operazioni da compiere sono: aprire il file,
leggere il file fino a che non si trova il nome
cercato, fare ciò che vogliamo fare del nome
ritrovato.
Dopo di che immaginiamo di cercare con
questo metodo un nome sull'elenco del
telefono…
Se il cognome e il nome dell'abbonato ricercato
cominciano per A faremo certo presto,
altrimenti impiegheremo un tempo impossibile
e rinunceremo.
Due metodi di ricerca
Non ci vuole, però, molto a capire
che mai e poi mai ci sogneremmo
di scorrere l'elenco del telefono
dall'inizio alla fine. Stiamo cercando
un nome che inizia con la lettera
G?
Bene, apriremo l'elenco più o meno
dove ci sembra che debba stare la
G, controlleremo se abbiamo
aperto il volume prima o dopo il
punto desiderato e per
approssimazioni successive
arriveremo al punto giusto.
Due metodi di ricerca
Ritroviamo questi due metodi di ricerca nel
campo della gestione delle basi di dati e
anche qui con prestazioni diverse. Possiamo
certo cercare un'informazione dopo l'altra in
modo sequenziale nel file (e alcune volte,
per esempio utilizzando dati non ordinati, non
si avrà altra strada), ma in questo caso
dovremo rassegnarci ad aspettare tutto il
tempo necessario alla laboriosa operazione e,
soprattutto, abituarci all'idea di un tempo che
cresce in maniera esponenziale col crescere
della quantità delle informazioni contenute
nell'archivio.
I file indice
Molto meglio se ci preoccupiamo di ordinare i dati (per
esempio in ordine alfabetico) oppure se ci curiamo di
costruire un file che contenga un elemento del record
ordinato e che sia collegato al file di dati per mezzo di
un puntatore (nel nostro caso potremmo utilizzare il
numero di record). Il file di servizio potrebbe essere
così organizzato:
Autore
Record Number
Ripellino, Angelo Maria
1
Il record numero 1 del nostro file di servizio, ordinato
alfabeticamente, verrebbe quindi posto dopo il record
(magari numero 1000) che contiene il nome: CALVINO,
Italo. Questo file si chiama file indice o (più all'antica)
inverted file.
La ricerca binaria
Dopo esserci costruiti una simile struttura di supporto
sarà possibile viaggiare molto più spediti nella ricerca.
Se, per ipotesi, il nostro file contenesse 10 record sarà
sufficiente saltare la prima volta al record 5 o 6 (la
metà), se non abbiamo centrato l'argomento della
ricerca allora dobbiamo: controllare se l'elemento
cercato si trova prima o dopo il punto in cui ci siamo
posizionati, buttare la metà che non ci serve e saltare a
metà della metà rimasta (poniamo 3). Di nuovo se non
abbiamo beccato l'argomento della ricerca dobbiamo
fare di nuovo il controllo: prima o dopo? e saltare a
metà della metà della metà (poniamo 2). A questo
punto delle due l'una o siamo sull'elemento cercato
oppure l'elemento cercato si trova nel record numero
1.
La ricerca binaria
Questo metodo di ricerca è detto metodo
di ricerca binaria e ha il gran vantaggio di
non vedere sensibilmente aumentare il
tempo di ricerca col crescere dei dati.
Basti riflettere sul fatto che nel nostro
esempio abbiamo scartato al primo colpo
5 record che rappresentavano il 50%
dell'intera base di dati, se il nostro
archivio fosse stato composto di 1000
record avremmo potuto ugualmente
scartare al primo colpo il 50% dell'intero
archivio solo che questa volta avremmo
eliminato 500 record. Al secondo colpo
saremmo potuti saltare alla metà di 500
ed escludere così 250 record e così via.
Gli operatori logici
Le funzioni di ricerca, fondamentali in
ogni query language, vengono
enormemente potenziate con
l'utilizzazione degli operatori logici and,
or, xor, not che consentono di
incrociare le informazioni contenute
nell'archivio e di sottoporre a condizioni
più complesse la ricerca. Così se nel
nostro archivio composto, per ora, di
un solo record cercassimo RIPELLINO
and Mario la ricerca fallirebbe e non
troveremmo nulla.
Un nuovo record
Un'ultima riflessione ci viene suggerita dallo
sdoppiamento subito dal nostro archivio (file
di dati e file indice) nel momento in cui
abbiamo cercato di migliorare le prestazioni
della nostra base di dati. Poniamo di voler
aggiungere un nuovo record al nostro
archivio:
Record Number
Autore
Titolo
Editore
Luogo Edizione
Data
2
Ripellino, Angelo Maria
Notizie dal diluvio
Giulio Einaudi Editore
Torino
1969
Un nuovo file indice
Appare evidente che una serie di
informazioni contenute in questo
record sono ridondanti: per esempio
il nome dell'autore (ma anche editore
e luogo edizione). Potremmo quindi
immaginare una struttura in cui vari
file vengano posti in relazione tra loro
consentendo una più razionale
gestione delle informazioni. Il nostro
file indice potrebbe allora forse
trasformarsi così
Autore
Record Number
Ripellino, Angelo Maria
1-2
Un nuovo file dati
Mentre il file con i titoli conterrebbe
semplicemente:
Record Number
Titolo
Editore
Luogo Edizione
Data
Record Number
Titolo
Editore
Luogo Edizione
Data
1
Praga Magica
Giulio Einaudi Editore
Torino
1973
2
Notizie dal diluvio
Giulio Einaudi Editore
Torino
1969
La basi di dati relazionali
Il file autori, in questo caso, sarebbe
messo in relazione con un file
titoli per mezzo del campo record
number.
L'operazione potrebbe poi essere
ripetuta per i campi editore, luogo
edizione e data per ottenere una base
di dati relazionale più efficiente e
meglio strutturata della base di dati
gerarchica dalla quale eravamo partiti.
Le basi di dati relazionali
Per costruire una base di dati
relazionale è quindi necessario
identificare gli elementi che
costituiscono il nostro archivio
(nell'esempio il campo autore) e
gli attributi di questi elementi
(titolo, editore, data, luogo). Sarà
necessario, inoltre, identificare la
relazione che collega elementi e
attributi (nel nostro caso
responsabilità intellettuale authorship).
Le basi di dati relazionali
Nella maggior parte dei DBMS
non è richiesta la denominazione
delle relazioni, ma l'esercizio che
si fa nella loro individuazione ci
garantirà sulla ragionevolezza
delle relazioni immaginate e
tornerà utile se affronteremo due
settori dell'informatica con cui la
teoria delle basi di dati confina
tendendo a confonderisi: il
problema dell'intelligenza
artificiale e della
rappresentazione della
conoscenza.
Ipertesti e ipermedia
In realtà considerando ipetesti e
ipermedia passiamo già ad una
applicazione dei database,
applicazione che può anche
essere realizzata in modi diversi.
Il concetto importante, in questo
caso, è la possibilità di
organizzare secondo relazioni
implicite o esplicite, dati di natura
eterogenea: testi, immagini,
suoni e video. Al limite
organizzandoli secondo lo
schema concettuale che li
accomuna nella nostra mente.