Progettazione di un database
Quando si decide di creare un database per rappresentare una realtà aziendale la cosa più importante è la progettazione. E’ la parte più importante perchè questa fase determina le caratteristiche che dovranno avere i dati e guideranno man mano la creazione degli archivi. La progettazione del database viene realizzata dagli “analisti di procedura”, che in genere sono le persone più esperte di un team di sviluppo software, e si divide in tre fasi fondamentali:

1. lo schema Concettuale
2. lo schema Logico
3. lo schema Fisico
La prima fase della progettazione è quella CONCETTUALE. E’ una modellizzazione della realtà che si vuole rappresentare. In questa fase va prodotto un diagramma ed è indipendente dallo strumento software che si intende utilizzare per la creazione del database. Durante la fase concettuale si estrapolano i concetti alla base della realtà da informatizzare e si metteno su carta.
Normalmente questa fase va schematizzata su carta e viene man mano prodotto uno schema chiamato Diagramma Entità-Relazione, se tutto corrisponde a quanto desiderato, si procede con la seconda fase: la progettazione LOGICA. Però spesso, prima di procedere con la fase successiva, va concordata con il committente, in modo da chiarire bene se tutti i punti del progetto da realizzare sono stati correttamente interpretati e rappresentati. Questa sorta di validazione del diagramma è importante perchè eventuali errori in questa fase si ripercuoterebbero sulle fasi successive comportanto una notevole perdita di tempo e risorse.
Una volta completata la fase concettuale, e validato il Diagramma Entità-Relazione, si procede con la seconda fase: la progettazione LOGICA. In questa fase si comincia a dar nome agli archivi, ai campi che ogni archivio deve contenere, a collegare i vari archivi tra loro, ecc. Anche questa fase produrre uno schema: lo schema LOGICO, ed anche questa fase non dipende dal software del DBMS che è stato scelto per realizzare l’ultima fase: la progettazione fisica.
Alla fine della progettazione logica, si deve sceglie il DBMS che si intende utilizzare per la creazione e si passa alla fase finale e cioè alla realizzazione FISICA della base-dati sul calcolatore.
SCHEMA CONCETTUALE
E’ la prima fase e la più importante per la riuscita del nostro progetto. Durante questa fase si cerca di schematizzare una realtà, semplificarla e rappresentare su carta. Il grado di semplificazione dipende dalle scelte che si impone chi sviluppa il modello. Questa fase consiste nel definire l’insieme di dati presenti in natura e che rappresentano la natura stessa delle informazioni che si vogliono archiviare.
I dati devono poi essere individuati in modo che rispondano allo scopo che si intende perseguire. Per questa fase non esistono regole prefissate, l’individuazione dei dati dipende dallo scopo, dalla esperienza dalla fantasia del progettista. A seconda quindi delle scelte che si operano si otterranno modelli concettuali diversi.
Una volta elencati tutti i dati che ci servono per lo sviluppo del nostro database, si devono organizzare o meglio raggruppare secondo l’oggetto a cui appartengono (ad esempio Nome, Cognome, Data_di_nascita, possono appartenere ad un oggetto di tipo Persona). Individuiamo pertanto quali sono gli “oggetti” e quali le “proprietà”. Il tipo di disegno più utilizzato per rappresentare questa fase è chiamato:
Diagramma Entità-Relazione
Si organizzano i dati secondo degli “insiemi” (esempio: tutti i dati appartenenti all’oggetto Studente) ed ogni insieme si definisce Entità e si rappresenta in un rettangolo. Le sue caratteristiche sono chiamate Campi e vengono collegate intorno al rettangolo in piccole ellissi. Facciamo l’esempio dell’entità studente:

Tra questi campi bisognerà scegliere quello (o quelli) che individua univocamente una istanza (un esemplare) dell’entità che si sta disegnando. Se tra i campi che noi abbiamo a nostra disposizione esiste uno in grado di identificare un esemplare, allora quel campo verrà rappresentato con una doppia ellisse oppure verrà sottolineato e viene definito chiave primaria (si pensi come esempio un codice fiscale per le persone, una targa per gli autoveicoli, ecc.).
Se un campo con questa caratteristica di univocità non esiste allora si ricorre ad aggiungere un ulteriore campo, in genere un progressivo numerico (si pensi come esempio al codice a barra aggiunto dal supermercato ai prodotti in vendita). Nel nostro esempio il progettista ha scelto come chiave primaria, per l’entità Studente, due campi: il cognome e nome. In questo caso diciamo che la chiave primaria è una chiave composta.
Dopo aver identificato gli insiemi di dati da archiviare, ossia le nostre entità, si definiscono i legami esistenti tra essi: le relazioni. Una relazione rappresenta i legami o dipendenze o associazioni di interesse informativo che esistono tra le entità che compongono il DataBase. Tali legami sono definiti in base alla natura stessa delle entità e verranno pertanto definiti tramite lo studio stesso dei dati.
Le relazioni prendono in genere un nome, che cerca di far capire a chi legge il progetto di che relazione si tratta, e una cardinalità:
– relazioni uno ad uno ( 1 : 1 )
– relazioni uno a molti ( 1 : M )
– relazioni molti a molti ( M : M )
Un esempio di relazione uno-a-uno può essere quella tra le entità Studente e Carriera_scolastica:

Un esempio di relazione uno-a-molti può essere quella tra le entità Studente e Classe:

Un esempio di relazione molti-a-molti può essere quella tra lo Studente e la Materia_didattica:

SCHEMA LOGICO
Nel modello logico dei dati si cominciamo a strutturare i dati del diagramma E-R in forma di liste o tabelle dando loro un nome che poi sarà utilizzato nella creazione vera e propria degli archivi. Le Entità diventano archivi (tabelle) aventi ognuna un elenco di campi, le Relazioni diventano i collegamenti tra due archivi. In questa fase prendono nome gli archivi, vengono decisi i criteri di accesso, vengono scelti i campi chiave primaria, vengono aggiunti i campi che servono per collegare le entità (foreign-key), e vengono aggiuntae eventuali tabelle per implementare le relazioni molti-a-molti. Anche questa fase non dipende dal DBMS che si intende utilizzare.
Nella realizzazione dello schema LOGICO, in particolare, si applicano le seguenti regole:
- Ogni entità dello schema concettuale, diventa tabella
- Ogni relazione dello schema concettuale diventa:
- una chiave esterna (foreign-key): cioè un campo aggiuntivo di una delle due tabelle che sono in relazione (questo per le relazioni 1-a-1 e 1-a-N);
- diventa una nuova tabella con la sua chiave primaria e i suoi campi (nel caso di relazione N-a-M).
Esempio, se volessimo creare lo schema logico del diagramma E-R della relazione 1-a-M di cui sopra (quella rappresentante l’alunno che appartiene alla classe), scriveremmo il seguente schema:
ALUNNO ( matricola, nome, cognome, codiceRef.Classe )
CLASSE ( codice, anno, sezione, indirizzo )
SCHEMA FISICO
La progettazione FISICA è la vera e propria implementazione del database con il DBMS scelto. La traduzione dal modello logico a quello fisico consiste nella creazione delle tabelle contenenti i campi elencati tra le parentesi.
In questa fase bisogna creare una tabella per ogni entità ed una colonna per ogni attributo. Bisogna assegnare ad ogni campo una adeguata tipologia e dimensione: numeri, testo, date, ecc. Bisogna fare attenzione a che i campi chiavi esterne abbiano la stessa tipologia dei campi a cui si riferiscono (che sono chiavi primarie in altre tabelle).
La modalità di creazione dipende fortemente dal DBMS utilizzato: può avvenire tramite una interfaccia grafica, si pensi ad ACCESS della Microsoft oppure tramite istruzioni DDL online.
Esempio, se volessimo creare la tabella CLASSE dello schema logico di cui sopra tramite il linguaggio SQL potremmo scrivere come segue:
create table classe ( codice primary key, anno integer, sezione char(4), indirizzo char(100) )