Processo di sviluppo di basi di dati
La creazione di una base di dati è un processo complesso articolato in cascata nelle seguenti fasi:
- Raccolta e analisi dei requisiti. Il risultato di questa fase è una descrizione in linguaggio naturale del micro-mondo (universo del discorso) che si vuole modellare. Vanno descritti sia gli aspetti statici (dati) che quelli dinamici (operazioni o transazioni sui dati). Solitamente questa fase avviene a stretto contatto con il cliente del sistema inserendo i progettisti del DBMS nell'ambiente di lavoro in cui l'applicazione dovrà essere realizzata (progettazione contestuale). Inoltre occorre interagire con gli utenti potenziali del sistema raccogliendo le modalità con cui essi intendono usare il sistema. Una volta raccolti i requisiti, occorre analizzarli ottenendo una descrizione sintetica e precisa che isoli le entità essenziali dell'universo del discorso e le relazioni che intercorrono tra di esse.
- Progettazione concettuale della basi di dati. L'obiettivo di questa fase è la formalizzazione dei requisiti della base di dati in uno schema concettuale indipendente sia dal tipo che dallo specifico DBMS che verrà utilizzato. Il modello Entità-Relazione (ER) è solitamento usato durante la progettazione concettuale per definire gli aspetti statici del sistema, cioè i dati. Esso è un modello diagrammatico che descrive le entità da modellare (ad esempio, in un contesto universitario, studente e corso), gli attributi delle entità (ad esempio matricola per lo studente e nome per corso), le relazioni che intercorrono tra le entità (ad esempio la relazione esame che associa studenti a corsi il cui esame è stato superato), e le cardinalità delle relazioni (uno studente può aver superato zero o più corsi e un corso può essere stato superato da zero o più studenti).
Il modello ER non consente la specifica delle transazioni, le quali vengono descritte in termini del loro input, output e comportamento funzionale. Un modello concettuale che permette di specificare in modo integrato gli aspetti statici e dinamici del sistema è Unified Modeling Language (UML).
- Scelta della tipologia della base di dati. Prima di iniziare la progettazione logica occorre scegliere il tipo di base di dati da utilizzare, cioè il modello dei dati che si vuole adottare. La scelta dello specifico DBMS viene effettuata dopo la progettazione logica e prima di quella fisica.
- Progettazione logica della base di dati. Durante questa fase lo schema concettuale (riferito ai dati) viene tradotto in uno schema logico che rispecchia il modello dei dati scelto al passo precedente. Lo schema logico è indipendente dallo specifico DBMS che verrà scelto dopo questa fase. Il modello dei dati delle basi relazionali prende il nome di modello relazionale. Il modello relazione dei dati usa una collezione di tabelle per modellare sia le entità che le relazioni del modello concettuale. Le colonne delle tabelle corrispondono agli attributi delle entità.
Ad esempio, potremmo tradurre l'entità studente in una tabella omonima con, tra le altre, la colonna matricola, l'entità corso in una tabella omonima con, tra le altre, la colonna nome, e la relazione esame in una terza tabella omonima con colonne matricola dello studente, nome del corso, data e voto dell'esame. Inoltre durante la progettazione logica si definiscono gli schemi esterni (viste) per le specifiche applicazioni.
- Scelta di un DBMS. In questa fase occorre scegliere lo specifico DBMS appartenente alla tipologia individuata precedentemente. La scelta di un DBMS è influenzata da fattori tecnici (ad esempio le strutture di memorizzazione e di accesso ai file offerte dal DBMS) e da fattori economici e organizzativi (ad esempio, costo del sistema e assistenza post-vendita).
- Progettazione fisica della base di dati. Durante questa fase lo schema logico della base di dati viene tradotto in uno schema fisico costituito dalle definizioni delle tabelle, dei relativi vincoli e delle eventuali viste in un linguaggio formale (SQL nelle basi relazionali). Inoltre, in questa fase vengono scelte, tra quelle messe a disposizione dal DBMS, le strutture di memorizzazione e di accesso alle tabelle con l'obiettivo di garantire l'efficienza del sistema. Infine, le transazioni vengono implementate in un linguaggio formale (SQL nelle basi relazionali).
- Realizzazione e ottimizzazione del sistema della base di dati. In questa fase vengono fisicamente create le tabelle, i vincoli di integrità sui dati e le viste sfruttando le definizioni dello schema fisico. Le tabelle vengono quindi popolate inserendo i dati veri e propri. A questo punto ha inizio la fase ottimizzazione del sistema (tuning): le transazioni vengono eseguite sui dati e le prestazioni del sistema vengono monitorare, eventualmente modificando i parametri scelti durante la progettazione fisica.
L'esecuzione di queste fasi è teoricamente sequenziale. In realtà, durante lo sviluppo del sistema ci possono essere dei cicli di feedback durante i quali si modifica una fase precedente durante una fase successiva.
E' importante notare che le fasi più importanti sono quelle più generali, cioè quelle iniziali. Infatti un errore in una fase iniziale, ad esempio dimenticarsi una relazione importante tra due entità durante l'analisi dei requisiti, si ripercuote a cascata in tutte le fasi successive. Viceversa un errore in una fase terminale, ad esempio un errore di programmazione in una transazione, si può correggere facilmente senza influenzare le fasi precedenti.