Panoramica sui database

advertisement
PANORAMICA SUI DATABASE
Prima di affrontare il linguaggio SQL cerchiamo di capire come funzionano i database.
Una base di dati, in inglese database, e' una collezione di dati integrata memorizzata in un
sistema
di
elaborazione
utilizzata
per
mantenere,
ed
estrarre
quando
necessario,
informazioni utili. I dati contenuti nel database possono essere consultati, aggiornati o
eliminati a seconda delle esigenze degli utenti. Un sistema per la gestione di basi di dati ( in
inglese Database Management system, abbreviato con DBMS) è un insieme di programmi
che consentono di organizzare una base di dati e di utilizzarla proficuamente. Il DBMS, in
pratica, è un software che fa da tramite fra i dati e l’utente; il suo scopo è quello di fornire
una rappresentazione logica dei dati. L’utilizzo di questo software consente di sviluppare
applicazione indipendenti dal modo in cui vengono memorizzate fisicamente le informazioni.
Segue uno schema che visualizza come interagiscono le applicazioni utente con il DBMS e il
database.
Il tipo di rappresentazione logica fornita dal DBMS ne individua la tipologia. I modelli più
comuni di DBMS sono :

Gerarchici

Ad oggetti

Relazionali
Il modello gerarchico ha caratterizzato i primi DBMS sviluppati verso la metà degli anni
settanta, ed è tuttora utilizzato. Il modello gerarchico è basato sugli alberi, ovvero sulle
strutture dati gerarchiche.
Il modello orientato agli oggetti (object-oriented) e' rappresentato da un insieme di classi,
che definiscono le caratteristiche ed il comportamento degli oggetti del database. Un
database orientato agli oggetti differisce dagli altri modelli elencati per il fatto che in questo
tipo di database gli oggetti memorizzati contengono, oltre ai dati, anche delle informazioni
sulle operazioni possibili. Gli altri modelli invece sono solo dei contenitori di dati, e per
manipolarli bisogna necessariamente ricorrere ad applicazioni utente esterne al database
stesso. I database ad oggetti sono particolarmente indicati per le applicazioni che richiedono
dati complessi, come ad esempio immagini o suoni. Purtroppo, ad oggi manca un modello
per gli oggetti universalmente accettato e un linguaggio di interrogazione standard.
Il primo tipo di database, quello gerarchico, appartiene 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
potenzialità espressiva del modello relazionale su cui si basano, nella sua semplicità di
utilizzo.
Il modello relazionale, inventato da Codd nel 1970, ha fatto la sua comparsa nel mondo dei
DBMS commerciali solo agli inizi degli anni ’80. Tuttavia col passare degli anni, il termine
relazionale acquisisce sempre più le caratteristiche di una parola chiave di successo; Il
modello relazionale è basato sul concetto di insieme. I dati sono organizzati in relazionali,
ovvero delle tabelle bidimensionali caratterizzato da un numero fisso di colonne (attributi) e
un numero variabile di righe (dette ennuple). In una relazione non possono esistere righe
duplicate. Ogni relazione è definita da uno schema che è semplicemente il nome della
relazione seguito dall’elenco dei nomi dei suoi attributi. Ciascun attributo assume valori da
un dominio che indica quali valori possono essere memorizzati da una colonna della
relazione e corrisponde ad un tipo elementare. L’istanza di una relazione è l’insieme delle
ennuple della relazione. L’istanza della base di dati è l’insieme delle istanze delle varie
relazioni che lo compongono.
In una relazione ciascuna istanza è un insieme nel senso matematico del termine, cioè una
collezione non ordinata di elementi differenti e viene individuata da una chiave primaria.
Una chiave primaria è un attributo (campo) il cui valore deve essere univoco e non può
avere valore null, in quanto non permetterebbe di individuare un’istanza in maniera
univoca, e quindi verrebbe meno l’integrità dell’entità del database. L’attributo di una tabella
che ha i requisiti per essere la chiave primaria viene detta chiave candidata. In alcuni casi
possono essere individuati anche più attributi per definire la chiave primaria, che in questo
caso prende il nome di chiave composta. Spesso viene utilizzata come chiave primaria di
una tabella un attributo che ha un valori numerici univoci e viene generato dal DBMS;
questo attributo prende il nome di chiave surrogata. Le relazioni fra tabelle di un database
sono stabilite fra gli attributi individuati come chiave primaria. In una tabella, un attributo
che è una chiave primaria in un’altra tabella e che crea una relazione fra le due tabelle viene
detta chiave esterna. I valori delle chiavi esterne devono corrispondere esattamente con un
valore della chiave primaria. Il campo individuato come chiave esterna in una tabella non
può avere un valore che non esiste nel campo individuato come chiave primaria. Questa
caratteristica prende il nome di integrità referenziale.
Per poter manipolare i dati contenuti in un database relazionale si fa uso dei seguenti
operatori, detti appunto, relazionali:

Restrict

Project

Time

Join

Union

Minus

Intersect

Divide
l’operatore Restrict applicato ad una tabella restituisce le sole informazioni che hanno
determinati requisiti.
l’operatore Project applicato ad una tabella ne restituisce una contenente solo alcuni dei
campi della prima tabella.
l’operatore Time esegue il prodotto cartesiano di due tabelle. Ogni record della prima tabella
viene concatenato con ogni record della seconda tabella.
l’operatore Join concatena i record di due tabelle in base al valore dei campi scelti
l’operatore Union opera su due tabelle, che devono avere lo stesso numero di campi e i
campi devono essere dello stesso tipo, e restituisce una contenente i record di entrambe le
tabelle.
l’operatore Minus opera su due tabelle, che devono essere compatibili, e restituisce una
tabella contente i record che esistono soltanto nella prima tabella.
l’operatore Intersect opera su due tabelle compatibili e restituisce una tabella contenente i
record che esistono in entrambe le tabelle.
l’operatore Divide può essere applicato a tabelle che abbiano alcuni campi in comune e
restituisce una tabella contenente tutti i record della prima tabella i cui campi corrispondono
con quelli della seconda tabella.
Il DBMS, indipendentemente dal modello logico del databse, è composto dai seguenti
componenti software:

Il gestore della memoria fisica, che gestisce l’allocazione dei dati nella memoria di
massa e la definizione dei cammini di accesso ai dati;

Il gestore degli accessi, che traduce le operazioni elementari di accesso ai dati in
opportune chiamate a procedure del gestore della memoria fisica;

Il processore di interrogazioni, che traduce istruzioni di linguaggi usati per
manipolare i dati in operazioni elementari sui dati. Questo programma svolge anche
la funzione di ottimizzazione delle interrogazioni, che consiste nella ricerca del
miglior metodo per l’accesso ai dati;

Il pre-compilatore del linguaggio ospite, che analizza le istruzioni del linguaggio
utilizzato per manipolare i dati e ne ricava le chiamate alle specifiche procedure del
DBMS. Il codice estratto dal pre-compilatore viene passato al processore di
interrogazioni;

Il compilatore delle definizioni dei dati, che riceve istruzioni dal linguaggio utilizzato
per definire la tipologia dei dati contenuti nel database e genera il Dizionario dei dati.

L’interfaccia utenti, che consente ad un utente di interagire il database.
Le funzioni svolte dal DBMS sono sostanzialmente le seguenti :

controllo dell’intero sistema di dati; evita la ridondanza dei dati e la potenziale
inconsistenza che ne deriva.

gestisce l’accesso alla base dei dati attraverso uno schema concettuale ( uno
schema concettuale è una particolare realtà d’interesse), cioè una visione
particolare dei dati indipendente dalla organizzazione fisica dei dati.

l’accesso concorrente ai dati garantendo la correttezza dei dati e senza far
degenerare le prestazioni.
Gli utenti che sviluppano applicazioni alimentate da database relazionali utilizzeranno il
linguaggio SQL, le cui istruzioni verranno interpretate dal DBMS e tradotte in funzioni che
fanno uso degli operatori relazionali.
DATA BASE E DBMS
Per comprendere al meglio cosa sia una base di dati è necessario spiegare cosa s’intende
per Data Base e cosa per DBMS; i due concetti infatti, pur essendo completamente diversi,
vengono spesso confusi.
Un Data Base è un insieme di informazioni strettamente correlate memorizzate su un
supporto di memoria di massa. Queste informazioni, che costituiscono un tutt’uno,
rappresentano la realtà di un particolare soggetto e possono essere manipolate e visionate
da più applicazioni.
I Data Base vengono gestiti via software da particolari programmi, chiamati Data Base
Management System:
Un Data Base Management System (abbreviato come DBMS) è un sistema software per la
gestione delle basi dati, che si occupa dell’aggiornamento, manutenzione e consultazione
delle informazioni registrate su disco.
Appare così evidente la differenza tra Data Base e DBMS: il primo è un insieme di
informazioni, mentre il secondo è il software che le gestisce.
È inoltre bene non confondere il DBMS col file system: i due “strumenti” hanno si dei punti
in comune, ma sono comunque delle cose diverse. Il file system è un insieme di programmi
che gestiscono tutti i file sui dischi, e sono parte integrante del Sistema Operativo. Al
contrario, il DBMS si occupa solamente dei Data Base e sfrutta il file system per gestire le
registrazioni in modo da rendere questa fase del tutto trasparente all’utente.
Come è fatto e cosa fa un DBMS
I programmi che formano il DBMS possono essere raggruppati in diverse categorie a
seconda delle loro funzionalità.
Innanzitutto è da sottolineare il fatto che il gestore delle base dati lavora a due livelli: il
primo e quello più alto, basato sul modello logico dell’archivio, mediante il quale il DBMS si
interfaccia all’utente; il secondo, quello basso, si basa invece sulla struttura reale dei dati
memorizzati sul disco e sfrutta il file system. Mediante questa divisione, l’utente non deve
quindi preoccuparsi di come le informazioni sono memorizzate, bensì di cosa vuole fare e
cosa
vuole
ottenere
da
queste
informazioni.
Questa
struttura
rende
il
sistema
particolarmente potente nelle reti di calcolatori: l’utente, infatti, “vede” gli archivi a livello
logico e come fossero in locale – è il DBMS che si preoccuperà di ricollegare la struttura
logica a quella fisica, andando a ricercare le informazioni da, ad esempio, un computer
remoto piuttosto che sulla stazione sulla quale si lavora.
L’interfacciamento del DBMS con l’utente avviene tramite un apposito sistema di
programmazione a linguaggi; questi ultimi si dividono in tre categorie:
· DDL (Data Description Language) – Definisce la struttura degli archivi;
· DML (Data Manupulation Language) – Si occupa dell’elaborazione e della modifica delle
informazioni registrate;
· QL (Query Language) – Permette di effettuare delle interrogazioni, cioè delle ricerche sugli
archivi.
Alcuni linguaggi includono comunque più di uno di questi insiemi di comandi, come ad
esempio SQL (nato come Query Language) che possiede anche dei comandi DDL.
Come precedentemente detto, l’utente impartisce i comandi al DBMS riferendosi al modello
logico dei dati; tali comandi sono ricevuti dal Language Processor, l’interprete dei comandi,
che si occupa di metterli in relazione con la tabella di descrizione del Data Base, contenente
le specifiche di definizione del modello. A questo punto, i comandi vengono spediti al Data
Base Manager che li traduce dal livello concettuale a comandi operanti a livello fisico, quindi
sui file.
Il DBMS si occupa inoltre di svolgere compiti di controllo accedendo alla tabella di
autorizzazione e a quella per l’accesso concorrente: la prima consente di stabilire se l’utente
che ha espresso la richiesta ha la possibilità di operare sui dati in questione, la seconda
gestisce invece il traffico di rete verso quella particolare porzione di archivio. Vi sono inoltre
dei compiti di sicurezza, come la possibilità di ripristino dei dati in seguito a guasti del
sistema o, nel peggiore dei casi, ad eliminazioni accidentali delle informazioni.
Conclusioni
In base a quanto detto fin ora, è facile capire che la caratteristica principale di un DBMS è
quella di mantenere un modello dei dati, una loro astrazione logica basata sul concetto che
l’utente non deve vedere i dati come record o file, ma come unità informative a carattere
unitario: non esistono cinque o sei file ma solamente un insieme di informazioni.
Nella seconda parte dell’articolo approfondiremo meglio il concetto di astrazione dei dati,
analizzandone i livelli che lo compongono.
Livelli di astrazione
Si è detto che il DBMS ha la funzione di mantenere un modello astratto dei dati;
quest’astrazione è organizzata su più livelli. Vediamoli in dettaglio.
Livello Fisico
Il Livello Fisico di un Data Base è formato dalle strutture di memoria di massa e dai dati che
esse contengono, inclusi quegli elementi che consentono l’accesso ai dati stessi, come indici,
puntatori ecc.
È questo il livello più basso; la sua gestione è del tutto ad opera del DBMS e pertanto risulta
trasparente all’utente.
Livello Concettuale
Il Livello Concettuale corrisponde alla definizione della struttura logica dell’archivio mediante
un modello astratto; quest’ultimo permette di raggruppare le informazioni contenute nei file
in unità coerenti e globali, descritte nel Data Base concettuale.
È il livello mediante il quale il DBMS s’interfaccia all’utente. Il modello è formato da entità,
che rappresentano i soggetti reali descritti nell’archivio; ogni entità possiede degli attributi
che contengono le informazioni relative a quel particolare soggetto. È da notare che il
potenziale informativo di una struttura come questa è molto alto rispetto ad un insieme di
informazioni non correlate.
Durante la progettazione dell’archivio è proprio di questo che ci si deve occupare, della
definizione del modello concettuale, dello schema logico, che non deve essere confuso con
le informazioni effettivamente contenute in esso: lo schema ci interessa in fase di
progettazione mentre il contenuto in fase di utilizzo.
Sempre a livello concettuale, i dati del Data Base possono essere visti come i valori assunti
dagli attributi in un particolare momento: questi valori variano all’interno di un determinato
dominio, cioè il range di possibili valori che l’attributo in questione può assumere; il dominio
è formato da un numero finito di valori.
Livello Esterno
Il Livello Esterno è il livello che consente di avere la sensazione di essere l’unico utilizzatore
dei dati, anche se in realtà non è così.
Il sistema di sicurezza del DBMS permette di attribuire ad ogni utente l’autorizzazione di
accedere all’intera mole di dati oppure solamente ad una parte di essa; questo consente di
creare degli accessi e delle navigazioni personalizzate, che prendono il nome di viste
logiche:
Una vista è l’astrazione di una porzione del Data Base concettuale; essa coinvolge i dati
dell’archivio fisico limitatamente alla porzione interessata o consentita.
Conclusioni
L’astrazione delle informazioni è quindi organizzata su livelli che consentono un’ampia
libertà sia al progettista sia all’utilizzatore finale dell’archivio.
Focalizzate le caratteristiche salienti del Livello Concettuale, nella terza parte dell’articolo
vedremo i principali Modelli che lo sfruttano.
Scarica