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.