Salve, sono Gianni Marzaloni, sviluppatore C# per HTML.it. Se pensiamo ad una comune rubrica telefonica abbiamo un semplice esempio di database. Ma che cos'è un database? Per database si intende quello che in parole semplici definiamo banca-dati o più letteralmente base di dati. Un database è quindi un archivio in cui possono essere effettuate operazioni per la lettura o l'aggiornamento di informazioni.
La memorizzazione dei dati avviene seguendo diverse tipologie di schema. Ad esempio i documenti XML seguono una struttura Gerarchica, meglio conosciuta come ad albero. Mentre database come Microsoft Sql Server o Oracle possono definirsi Relazionali.
In un database Relazionale i dati presenti vengono archiviati all'interno di Tabelle. Le colonne di ogni tabella vengono identificate come Campi ed ogni campo serve a memorizzare un certo tipo di dato, ad esempio il nome, il numero di telefono… . Le righe invece si dicono record, nel nostro esempio ogni riga identifica una voce della rubrica, infatti rappresenta tutti i campi relativi ad una singola persona.
Per capire meglio facciamo un esempio: immaginiamo di dover gestire un database per amministrare una piccola azienda. All'interno creeremo una tabella per gestire le informazioni dei clienti ed un'altra per gli ordini. In un database relazionale colleghiamo le due tabelle tramite un campo in comune: l'identificativo del cliente. Questa semplice relazione mostra come i dati, strutturati in questo modo, semplifichino le attività di aggiornamento e ricerca.
Per aggiornare i dati o per ottenere le informazioni, in ogni caso per gestire una base di dati si usa il linguaggio SQL (Structured Query Language), caratterizzato da poche istruzioni molto potenti.
I sistemi di gestione di database, detti DBMS, durante la loro evoluzione hanno integrato il codice SQL con istruzioni proprietarie. Questo per l'esigenza di creare procedure per gestire molte operazioni consecutive, le stored procedure o attivarle in seguito ad eventi particolari, come i trigger.
Utilizzando pienamente queste funzionalità è possibile realizzare database indipendenti dall'utilizzo di software specifici per la gestione dei dati. è molto importante implementare almeno procedure base che lascino coerente la struttura dei dati in caso di manipolazioni manuali sul database.
Se volessimo ad esempio cancellare un cliente dalla tabella di riferimento, la procedura corretta sarebbe quella di cancellare anche tutti gli ordini ad esso collegato per evitare di "sporcare" il database lasciando dati inutilizzati al suo interno. Relazionando le 2 tabelle possiamo indicare cosa fare in caso di cancellazione o aggiornamento dei dati sulla tabella principale.
Altra funzionalità fondamentale dei database è la gestione della sicurezza dei dati. Ogni database adotta diverse funzionalità di protezione. Per ogni utente si definiscono permessi che indicano gli oggetti che può manipolare e le operazioni che può effettuare. Ad esempio è possibile specificare gruppi di utenza abilitati al backup, altri alla lettura dei dati, altri ancora alla programmazione delle procedure.
Finalmente siamo arrivati a definire un database server: un DBMS che risponde alle richieste, interrogazioni (o query) di più utenti simultaneamente, secondo il classico modello client-server.