Un database può contenere milioni di record e restare inutilizzabile se le informazioni sono duplicate, ambigue o difficili da collegare. Il data modeling serve proprio a dare una struttura ai dati, chiarendo che cosa rappresentano, come sono relazionati e quale formato devono avere. In questa guida spiego i tre livelli della modellazione, il processo pratico, un esempio concreto e gli errori che possono compromettere database, report e analisi.
La modellazione dei dati trasforma informazioni sparse in una struttura affidabile
- Definizione La modellazione dei dati descrive entità, attributi, relazioni e regole di un sistema informativo.
- Tre livelli Il percorso passa dal modello concettuale a quello logico e infine a quello fisico.
- Obiettivo Ridurre duplicazioni, errori e incoerenze, rendendo i dati più facili da usare.
- Esempio pratico Un negozio online può collegare clienti, ordini, prodotti e pagamenti con relazioni precise.
- Scelta del modello Database relazionali, dimensionali, documentali e a grafo rispondono a esigenze diverse.
Che cos’è davvero la modellazione dei dati
La modellazione dei dati è il processo con cui si rappresenta la struttura delle informazioni di un’azienda o di un’applicazione. In pratica, definisce quali dati devono essere conservati, quali proprietà hanno e come possono essere collegati tra loro.
Io la considero una sorta di mappa prima della costruzione. Prima di creare tabelle, colonne o pipeline, bisogna capire concetti molto concreti: che cosa significa “cliente”, quando nasce un ordine, se un prodotto può appartenere a più categorie e chi è autorizzato a modificare un dato.
Un modello ben progettato non descrive soltanto i dati, ma anche le regole del business. Per esempio, un ordine deve appartenere a un cliente, una riga d’ordine deve riferirsi a un prodotto e una fattura non dovrebbe essere associata a un pagamento inesistente.
Questo lavoro è utile in diversi scenari:
- progettazione di un nuovo database;
- integrazione di dati provenienti da più sistemi;
- creazione di un data warehouse per la business intelligence;
- organizzazione di dati in formato CSV, JSON o Parquet;
- miglioramento della qualità e della governance dei dati.
Il risultato non è sempre un semplice diagramma. Può comprendere anche tipi di dato, chiavi, vincoli, definizioni aziendali e regole di trasformazione. Il livello di dettaglio cambia in base allo scopo del progetto.

I tre livelli del data modeling
La distinzione più importante è quella tra modello concettuale, logico e fisico. Non sono tre database diversi, ma tre prospettive della stessa struttura, con un livello di dettaglio crescente.
| Livello | Che cosa descrive | A chi serve soprattutto |
|---|---|---|
| Concettuale | Entità principali e relazioni del dominio | Stakeholder, analisti, responsabili di processo |
| Logico | Attributi, chiavi, cardinalità e regole | Data architect, analisti e sviluppatori |
| Fisico | Tabelle, colonne, indici e implementazione tecnica | Database administrator e team engineering |
Il modello concettuale
Il modello concettuale rappresenta la realtà aziendale senza dipendere da uno specifico software. Un’entità può essere “Cliente”, “Ordine” o “Prodotto”, mentre una relazione può indicare che un cliente effettua molti ordini.
In questa fase non mi preoccupo ancora di scegliere tra PostgreSQL, SQL Server o MongoDB. Mi concentro sul significato dei dati e sulle domande a cui il sistema dovrà rispondere. È il momento migliore per correggere ambiguità come la differenza tra cliente, contatto e account.
Il modello logico
Il modello logico aggiunge dettagli come attributi, chiavi primarie, chiavi esterne e cardinalità. La cardinalità indica quante istanze di un’entità possono essere associate a un’altra, per esempio un cliente con molti ordini oppure un prodotto presente in molte righe d’ordine.
In un database relazionale, il modello logico porta normalmente alla definizione di tabelle collegate. In questa fase si lavora anche sulla normalizzazione, cioè sulla riduzione delle duplicazioni e delle anomalie di aggiornamento.
Leggi anche: Operatori logici SQL - AND, OR, NOT e NULL senza errori
Il modello fisico
Il modello fisico descrive come la struttura sarà implementata in una tecnologia concreta. Qui entrano in gioco tipi SQL, indici, partizioni, vincoli, naming convention e strategie di prestazione.
Un indice può rendere più veloce una ricerca, ma occupa spazio e rallenta alcune operazioni di scrittura. Per questo la progettazione fisica non consiste nel creare il maggior numero possibile di indici: richiede un compromesso tra velocità, costi e volume dei dati.
Come si costruisce un modello utile
La modellazione efficace parte dai requisiti, non dalle tabelle che qualcuno ha già in mente. Io seguo un percorso semplice, che permette di coinvolgere sia chi conosce il business sia chi dovrà implementare la soluzione.
- Definire le domande Bisogna chiarire quali decisioni dovranno supportare i dati e quali report o processi saranno necessari.
- Individuare le entità Si elencano gli oggetti importanti del dominio, come clienti, ordini, prodotti, dipendenti o transazioni.
- Descrivere gli attributi Per ogni entità si stabiliscono campi, significato, formato, obbligatorietà e livello di precisione.
- Stabilire le relazioni Si definiscono collegamenti, cardinalità e casi particolari, inclusi i rapporti molti-a-molti.
- Controllare la qualità Si verificano duplicati, valori mancanti, unità di misura diverse e definizioni incoerenti.
- Tradurre il modello La struttura viene trasformata in tabelle, documenti, file o viste adatte alla piattaforma scelta.
- Testare con dati reali Il modello va provato con casi normali, eccezioni e volumi realistici prima del rilascio.
Il passaggio più sottovalutato è il primo. Se il team non concorda sul significato di “vendita”, “cliente attivo” o “margine”, anche il database tecnicamente perfetto produrrà analisi discutibili.
La documentazione deve restare aggiornata. Un catalogo dati con definizioni, proprietari e regole di aggiornamento evita che ogni analista interpreti lo stesso campo a modo proprio.
Un esempio concreto con un negozio online
Immaginiamo un e-commerce che voglia analizzare vendite e comportamento dei clienti. Nel modello concettuale individuiamo almeno quattro entità: Cliente, Ordine, Prodotto e Pagamento.
| Entità | Attributi possibili | Relazione principale |
|---|---|---|
| Cliente | Identificativo, nome, email, data di registrazione | Può effettuare molti ordini |
| Ordine | Numero, data, stato, totale | Appartiene a un cliente |
| Prodotto | Codice, descrizione, categoria, prezzo | Può comparire in molti ordini |
| Pagamento | Metodo, importo, stato, data | È associato a uno o più eventi di pagamento |
Nel modello logico, la relazione tra Ordine e Prodotto diventa una tabella intermedia, spesso chiamata RigaOrdine. Qui possiamo registrare quantità, prezzo applicato e sconto, senza ripetere gli stessi dati in ogni record dell’ordine.
Questa scelta evita un errore frequente. Se il prezzo attuale del prodotto venisse usato per ricostruire tutte le vendite passate, una variazione di listino falserebbe i ricavi storici. Il prezzo praticato deve essere salvato nella riga dell’ordine come fotografia della transazione.
Per un sistema operativo può essere preferibile un modello normalizzato, che riduce ridondanze e protegge l’integrità. Per un data warehouse destinato a dashboard e aggregazioni, invece, può funzionare meglio un modello dimensionale con una tabella dei fatti, come Vendite, e dimensioni come Data, Cliente e Prodotto.
Modelli relazionali, dimensionali e NoSQL a confronto
Non esiste un modello migliore in assoluto. La scelta dipende dal tipo di dati, dalle query, dal volume, dalla frequenza degli aggiornamenti e dal livello di flessibilità richiesto.
| Approccio | Punti di forza | Quando usarlo | Limite principale |
|---|---|---|---|
| Relazionale | Integrità, transazioni e relazioni precise | ERP, CRM, e-commerce e applicazioni operative | Richiede maggiore progettazione iniziale |
| Dimensionale | Query analitiche semplici e veloci | Data warehouse, KPI e business intelligence | Può duplicare alcuni dati |
| Documentale | Flessibilità e gestione di strutture variabili | Cataloghi, contenuti e applicazioni con JSON | Le relazioni complesse sono meno immediate |
| A grafo | Analisi di connessioni e percorsi | Raccomandazioni, reti e frodi | Non è ideale per ogni tipo di interrogazione |
Anche il formato di origine influenza il lavoro. Il CSV è semplice e diffuso, ma spesso perde informazioni sui tipi di dato; il JSON conserva strutture annidate, ma può essere incoerente tra un record e l’altro; Parquet è più adatto a grandi dataset analitici perché è colonnare e compresso.
Un errore comune consiste nel confondere il formato con il modello. Un file JSON può contenere dati organizzati bene oppure una struttura caotica. Il formato indica come i dati sono serializzati, mentre il modello chiarisce che cosa significano e come si collegano.
Gli errori che rendono fragile un database
Il primo errore è partire direttamente dalla tecnologia. Scegliere il DBMS prima di capire i processi porta spesso a strutture costruite intorno ai limiti dello strumento, invece che alle esigenze dell’organizzazione.
Un altro problema è usare campi generici come “testo libero” per informazioni che richiederebbero regole precise. Date, valute, codici fiscali e stati degli ordini devono avere formati e valori ammessi chiaramente definiti.
- duplicare lo stesso cliente in più tabelle senza una chiave affidabile;
- salvare numeri come testo, rendendo difficili somme e ordinamenti;
- mescolare euro, dollari e centesimi senza indicare l’unità;
- ignorare valori nulli e casi eccezionali;
- creare relazioni molti-a-molti senza una tabella di collegamento;
- normalizzare tutto anche nei sistemi analitici, sacrificando inutilmente le prestazioni;
- modificare lo schema senza verificare pipeline, dashboard e applicazioni dipendenti.
Secondo la mia esperienza, il problema più costoso non è quasi mai una query lenta. È un dato apparentemente corretto ma interpretato male. Una dashboard può caricarsi in pochi secondi e mostrare comunque un margine sbagliato se costi, sconti e resi non sono stati modellati con precisione.
Perché il data modeling conta nella business intelligence
Un modello coerente migliora il lavoro di analisti e decision maker perché rende le metriche ripetibili. Se il fatturato viene calcolato una volta includendo i resi e una volta escludendoli, il problema non è di visualizzazione, ma di definizione e struttura del dato.
Nel data warehouse la modellazione aiuta a separare eventi misurabili, come vendite o accessi, dagli elementi descrittivi, come prodotto, area geografica e periodo. Questa distinzione rende più semplice analizzare le stesse misure da prospettive diverse.
La modellazione è utile anche nei data lake, ma con un approccio spesso più flessibile. I dati possono arrivare in forma grezza e venire trasformati in livelli successivi, purché siano presenti metadati, controlli di qualità e una chiara tracciabilità delle trasformazioni.
Non serve progettare un sistema gigantesco per ottenere benefici. Per un piccolo progetto bastano spesso un diagramma essenziale, un dizionario dei dati e alcune regole condivise. La complessità va aggiunta quando il volume, il numero di utenti o i requisiti di integrazione lo rendono necessario.
La domanda giusta da porsi prima di creare una tabella
Capire che cos’è il data modeling significa soprattutto capire che i dati non sono un ammasso di colonne, ma una rappresentazione della realtà. Prima di aggiungere un campo, chiediamoci quale decisione supporta, chi lo aggiorna, quale formato deve avere e con quali altri dati potrà essere confrontato.
Un buon modello è abbastanza rigoroso da proteggere la qualità, ma non così rigido da bloccare l’evoluzione del progetto. Se mantiene chiari significati, relazioni e responsabilità, diventa una base solida per database, dashboard e applicazioni di analisi.
La mia regola pratica è semplice: modellare prima ciò che conta davvero, testarlo con esempi reali e documentare le scelte che potrebbero creare dubbi in futuro. È questo che trasforma una struttura tecnica in dati realmente utili al business.
