Perchè usare un DBMS
Un DBMS permette di accedere in modo semplice e efficiente ad una base di dati mantenendone la consistenza, la privatezza e l'affidabilità. Il vantaggio dell'uso di un DBMS sono i seguenti:
- Accesso ai dati tramite un linguaggio universale. Ogni DBMS di una certa tipologia mette a disposizione un linguaggio di interrogazione (SQL nel caso relazionale). Tale linguaggio permette la creazione delle strutture che contengono i dati, l'inserimento, la cancellazione, l'aggiornamento dei dati e il recupero delle informazioni dalla base di dati.
- Accesso efficiente ai dati. Un DBMS ha molti modi per ottimizzare l'accesso all'informazione. La base di dati è solitamente memorizzata in memoria secondaria (disco rigido). Un DBMS permette di creare dei file ausiliari (indici) che permettono l'accesso veloce ai dati su disco. Inoltre spesso un DBMS mantiene porzioni della base di dati in memoria centrale velocizzando in questo modo l'accesso ai dati. Infine ogni interrogazione prima di essere eseguita viene ottimizzata scegliendo un piano efficiente di esecuzione sulla base degli indici esistenti.
- Indipendenza dei dati. Un DBMS mantiene diversi livelli di astrazione dei dati. Il livello più basso è detto fisico (o interno) e descrive come i dati sono fisicamente archiviati. Il livello immediatamente superiore è detto logico e descrive quali dati sono archiviati e quali vincoli di integrità essi devono soddisfare. Un DBMS permette di accedere ai dati logici indipendentemente dalla loro rappresentazione fisica. Quest'ultima può cambiare senza che i metodi di accesso ai dati logici debbano essere modificati. Si parla di indipendenza fisica dei dati.
Non sempre l'intera base di dati deve essere visibile a tutti gli utenti. Il livello esterno descrive porzioni della base di dati (viste) accessibili da particolari gruppi di utenti.
- Controllo della ridondanza dei dati. Ogni dato logico dovrebbe essere memorizzato in un solo posto nella base di dati. Avere più copie della stessa informazione ha i seguenti svantaggi:
- vi è un maggior uso di memoria;
- le modifiche della stessa informazione debbono essere effettuate diverse volte;
- ci possono essere fenomeni di inconsistenza dei dati qualora gli aggiornamenti dei dati vengano eseguiti in modo indipendente. Dunque la stessa informazione potrebbe assumere valori diversi.
Talvolta viene consentita una forma di ridondanza controllata in un DBMS allo scopo di migliorare le prestazioni delle interrogazioni. Il DBMS stesso controlla che tale ridondanza non generi inconsistenze.
- Imposizione di vincoli di integrità sui dati. Un DBMS permette di specificare diversi tipi di vincoli per mantenere l'integrità dei dati e controlla che tali vincoli siamo soddisfatti quando la base di dati cambia. Ad esempio, il vincolo che un voto di un esame universitario sia un intero tra 18 e 30 o il vincolo che i valori del codice fiscale di un una persona siano univoci.
- Atomicità delle operazioni. Un DBMS permette di effettuare sequenze di operazioni (transazioni) in modo atomico. Ciò significa che l'intera sequenza di operazioni viene eseguita con successo oppure nessuna di queste operazioni ha alcun effetto sui dati della base. L'atomicità delle transazioni permette di mantenere una stato della base di dati consistente con la realtà modellata. Si pensi ad esempio ad un bonifico da un conto A ad un conto B. Se la transazione non fosse atomica, potrebbe accadere che dopo aver prelevato dal conto A il sistema per qualche motivo fallisca senza aver accreditato il conto B.
- Accesso concorrente ai dati. Un DBMS permetta a più utenti di accedere contemporaneamente alla base di dati. Più utenti possono accedere nello stesso istante a dati diversi. Inoltre, un DBMS fa in modo che l'accesso concorrente agli stessi dati non generi anomalie, cioè inconsistenza nello stato della base di dati rispetto alla realtà modellata. Si pensi ad esempio a due utenti A e B che vogliono prelevare rispettivamente 100 e 200 Euro dallo stesso conto che ha un saldo di 1000 Euro. Una possibile anomalia avviene se entrambi gli utenti leggono lo stesso saldo (1000). Successivamente l'utente A preleva 100 e aggiorna il saldo a 900 (1000 - 100). Infine l'utente B preleva 200 e aggiorna il saldo a 800 (1000 - 200). Il saldo reale è invece 700 (1000 - 100 - 200).
- Privatezza dei dati. Un DBMS permette un accesso protetto ai dati. Utenti diversi possono avere accesso a diverse porzioni della base di dati e possono essere abilitati a diverse operazioni sui di esse. Ad esempio, alcuni utenti possono essere impediti a leggere dei dati sensibili oppure possono leggere ma non modificare certi dati.
- Affidabilità dei dati. Un DBMS offre del metodi per salvare copie dei dati (backup) e per ripristinare lo stato della base di dati in caso di guasti software e hardware (recovery).