Cos’è il Data Modeling (modellazione dati)
La creazione di modelli dati è il passo iniziale e più importante della progettazione di archivi informatici (basi dati). E’ un’attività necessaria nello sviluppo di qualunque applicazione, dai grandi sistemi aziendali a quelli di livello semi-professionale alle app per i dispositivi mobili. Modellare in modo adeguato le informazioni che il sistema dovrà trattare costituisce infatti un prerequisito fondamentale per l’efficacia e la qualità di ogni sistema.
Dal punto di vista di chi vuole imparare a progettare sistemi informatici, il data modeling è una disciplina basilare: non richiede nessun tipo di competenza tecnologica preliminare, ed insegna a utilizzare i meccanismi di astrazione, di generalizzazione e di associazione, meccanismi fondamentali per tutte le attività di progettazione dei sistemi.
Il data modeling ha basi scientifiche, legate alla matematica degli insiemi (teoria della normalizzazione), ma anche aspetti meno deterministici, per i quali è necessaria esperienza e capacità di analizzare i pro ed i contro delle diverse soluzioni possibili per uno stesso problema.
Livelli di modellazione
Quando si parla di modelli dati, si fa spesso riferimento a termini quali “concettuale”, “logico” e “fisico”. E spesso ci si confonde, in quanto questi termini significano cose diverse per persone diverse, o in strumenti diversi:
- Il livello “concettuale” rappresenta, in modo non necessariamente dettagliato, concetti e relazioni tra concetti. E’ basato esclusivamente sulle relazioni di significato fra i dati.
- Il livello “logico” produce, a partire dal livello concettuale, un modello più dettagliato, con attributi, data type, chiavi primarie ed alternative, regole di integrità. E’ normalizzato, ma è indipendente dalla tecnologia di implementazione.
- Il livello “fisico” è quello in cui il livello logico viene calato in una specifica tecnologia DBMS (Data Base Management System) per gestire gli archivi.
Per la progettazione del livello fisico è essenziale una competenza specialistica sulle tecnologie DBMS, tipica di un progettista DB. Per la definizione dei modelli concettuale e logico, invece, è sufficiente la conoscenza di tecniche di modellazione basate sull’analisi del significato dei dati (Entity-Relationship, normalizzazione).
La tabella seguente sintetizza le differenze tra i livelli:
Livello | Concettuale | Logico | Fisico |
Conoscenza primaria necessaria | Significato dei dati | Significato dei dati | Caratteristiche DBMS |
Ruolo del modello nei progetti | Preliminare | Intermedio | Prodotto finale |
Ottimizzazioni (per performance, contenimento spazio ecc.) | Nessuna | Nessuna | Ottimizzato sulla base delle esigenze funzionali |
Legame con tecnologia DBMS | Nessuno | Nessuno | Sì |
Tecniche di progettazione primarie | Entity-Relationship | Entity-Relationship, normalizzazione | Ad hoc, mirate all’ottimizzazione degli accessi e degli spazi |
Precisione del modello dati logico
Il modello logico è dettagliato, ed è opportuno che raggiunga il massimo livello di precisione possibile. Un modello logico preciso comprende:
- l’elenco completo degli attributi per ogni entità
- l’indicazione esplicita della chiave primaria e di eventuali chiavi alternative di ogni entità
- l’indicazione esplicita di opzionalità o obbligatorietà di ogni attributo
- per ogni attributo, l’indicazione esplicita del data type, che ne specifichi il formato e la lunghezza
- per ogni data type per cui sia possibile farlo (pochi valori stabili, oppure range), l’esplicitazione dei valori ammessi
- l’indicazione della molteplicità minima e massima in entrambe le direzioni delle relationship
- per ogni relationship, l’indicazione delle regole di integrità referenziale applicabili
Insomma il modello logico deve contenere tutte le informazioni necessarie che non sono legate ad aspetti tecnici, ma alla conoscenza dell’ambito applicativo, e quindi del significato dei dati.
Creazione del modello dati (livelli concettuale e logico)
Il modello dati può essere costruito in modo “top-down” o “bottom up”. Il risultato può essere identico, ma le modalità per arrivarci sono diverse.
Un modello è costruito in modo “top-down” se nasce in modo unitario, prescindendo da analisi preventive di porzioni del sistema (“subject area”).
È invece costruito in modo “bottom up” se il modello finale è il frutto dell’aggregazione di più modelli settoriali.
Ad esempio, in un progetto che utilizza i casi d’uso per la specifica dei requisiti, il modello dei dati può essere costruito in due modi alternativi:
- Prima di avere definito in dettaglio i casi d’uso viene creata una versione iniziale del modello. Successivamente, man mano che i singoli casi d’uso vengono dettagliati, il modello viene arricchito e completato con nuovi attributi ed associazioni.
- Per ogni caso d’uso già dettagliato, viene definito un modello dei dati parziale, o “vista locale”. Il modello complessivo verrà derivato passo passo, attraverso l’integrazione progressiva delle viste locali create per ogni caso d’uso.
Tutorial introduttivi
- Introduzione a Entity-Relationship (pdf)
- Introduzione alla Normalizzazione dei dati (pdf)
Bibliografia sul data modeling