DATABASE

Un database e' una collezione di dati che viene gestita e organizzata da un software specifico, il DBMS (DataBase Management System, Sistema di Gestione di DataBase).

Un DBMS e' sostanzialmente uno strato software che si frappone fra l'utente ed i dati veri e propri.

Grazie a questo strato intermedio l'utente e le applicazioni non accedono ai dati cosi' come sono memorizzati effettivamente, cioe' alla loro rappresentazione fisica, ma ne vedono solamente una rappresentazione logica.

Cio' permette un elevato grado di indipendenza fra le applicazioni e la memorizzazione fisica dei dati.

L'amministratore del database, se ne sente la necessita', puo' decidere di memorizzare i dati in maniera differente o anche di cambiare il DBMS senza che le applicazioni, e quindi gli utenti, ne risentano.

La cosa importante e' che non venga cambiata la rappresentazione logica di quei dati, che e' la sola cosa che i loro utilizzatori conoscono. Questa rappresentazione logica viene chiamata 'Schema del database' ed e' la forma di rappresentazione dei dati piu' a basso livello a cui un utente del database puo' accedere. La caratteristica pricipale secondo cui i DBMS vengono normalmente classificati e' appunto la rappresentazione logica dei dati che essi mostrano ai loro utilizzatori. Nel corso degli anni sono stati adottati numerosi modelli per i dati, a fronte dei quali esistono quindi vari tipi di database. I tipi piu' comuni sono:

  1. Database gerarchici: i dati vengono organizzati in insiemi legati fra loro da relazioni di "possesso", in cui un insieme di dati puo' possedere altri insiemi di dati, ma un insieme puo' appartenere solo ad un altro insieme. La struttura risultante e' un albero di insiemi di dati.
  2. Database reticolari: il modello reticolare e' molto simile a quello gerarchico, ed infatti nasce come estensione di quest'ultimo. Anche in questo modello insiemi di dati sono legati da relazioni di possesso, ma ogni insieme di dati puo' appartenere a uno o piu' insiemi. La struttura risultante e' una rete di insiemi di dati.
  3. Database relazionali: i database appartenenti a questa categoria si basano sul modello relazionale la cui struttura principale e' la relazione, cioe' una tabella bidimensionale composta da righe e colonne. Ciascuna riga, che in terminologia relazionale viene chiamata tupla, rappresenta un'entita' che noi vogliamo memorizzare nel database. Le caratteristiche di ciascuna entita' sono definite invece dalle colonne delle relazioni, che vengono chiamate attributi. Entita' con caratteristiche comuni, cioe' descritti dallo stesso insieme di attributi, faranno parte della stessa relazione.
  4. Database ad oggetti (object-oriented): lo schema di un database ad oggetti e' rappresentato da un insieme di classi, che definiscono le caratteristiche ed il comportamento degli oggetti che popoleranno il database.

La principale differenza con i modelli esaminati finora e' la non passivita' dei dati. Infatti con un database tradizionale (intendendo con questo termine qualunque database non ad oggetti) le operazioni che devono essere effettuate sui dati vengono demandate alle applicazioni che li utilizzano. Con un database object-oriented, al contrario, gli oggetti memorizzati nel database contengono sia i dati che le operazioni possibili su tali dati. In un certo senso potremmo pensare agli oggetti come a dati a cui e' stata fatta una iniezione di intelligenza, che gli permette di sapere come comportarsi, senza doversi appoggiare ad applicazioni esterne.

I primi due tipi di database, quelli gerarchici e reticolari, quasi appartengono ormai alla storia dell'informatica.
La maggior parte dei database attualmente utilizzati appartiene alla categoria dei database relazionali. I motivi di questo successo (anche commerciale) vanno ricercati nella rigorosita' matematica e nella potenzialita' espressiva del modello relazionale su cui si basano, nella sua semplicita' di utilizzo e, ultima ma non meno importante, nella disponibilita' di un linguaggio di interrogazione standard, l'SQL, che, almeno potenzialmente, permette di sviluppare applicazioni independenti dal particolare DBMS relazionale utilizzato.
I database ad oggetti sono la nuova frontiera nella ricerca sui database, infatti le loro caratteristiche di estendibilita', derivanti dalla possibilita' di definire nuovi tipi di dati e comportamenti, li rendono particolarmente appetibili per tutte quelle applicazioni che richiedono dati complessi, come ad esempio immagini, suoni o coordinate. Purtroppo la mancanza di un modello per gli oggetti universalmente accettato e la non disponibilita' di un linguaggio di interrogazione standard fanno si' che ogni produttore implementi la propria visione specifica, di solito assolutamente incompatibile con tutte le altre. Di recente sono apparsi sul mercato alcuni database, definiti object-relational, che cercano di introdurre nel modello relazionale le caratteristiche di estendibilita' proprie dei database object-oriented.

Indipendentemente dal tipo di database, le funzionalita' principali che ci si deve aspettare da un DBMS sono quelle di:


consentire l'accesso ai dati attraverso uno schema concettuale, invece che attraverso uno schema fisico;
permettere la condivisione e l'integrazione dei dati fra applicazioni differenti;
controllare l'accesso concorrente ai dati;
assicurare la sicurezza e l'integrita' dei dati.
Grazie a queste caratteristiche le applicazioni che vengono sviluppate possono contare su una sorgente dati sicura, affidabile e generalmente scalabile. Tali proprieta' sono auspicabili per applicazioni che usano la rete Internet come infrastruttura e che hanno quindi evidenti problemi di sicurezza e scalabilita'.