Basi di Dati
Dal dato al modello
Dato vs informazione, DBMS, progettazione concettuale e logica, diagrammi E-R, cardinalità e chiavi esterne. Tutto il necessario per capire come funziona davvero un database.
Nel mondo aziendale, e in particolare negli indirizzi AFM e RIM, si sente spesso parlare di dati e informazioni come se fossero la stessa cosa. Non lo sono — e capire la differenza è il punto di partenza di qualunque ragionamento sui database.
| Concetto | Definizione | Esempio |
|---|---|---|
| Dato | Una descrizione elementare, un valore grezzo privo di contesto. | Rossi · 01/01/2025 · 120.50 |
| Informazione | L'incremento di conoscenza che si ottiene interpretando e contestualizzando i dati. | "Il cliente Rossi ha effettuato un ordine di 120,50 € il 01/01/2025" |
L'insieme di valori {Rossi, 01/01/2025, 120.50} è una raccolta di dati grezzi: di per sé non ci dice nulla. Diventa informazione significativa solo quando gli associamo uno schema che ne definisce il significato, ad esempio {Cognome Cliente, Data Ordine, Importo Fattura}.
Ogni base di dati separa nettamente due livelli: la struttura (come sono organizzati i dati) e i valori concreti (i dati effettivi in un dato momento). Questa distinzione si chiama schema vs istanza.
Un'analogia efficace: lo schema è lo stampo per biscotti — definisce la forma. L'istanza sono i biscotti reali — i valori concreti che quella forma produce in un determinato momento. Lo schema cambia raramente; l'istanza cambia continuamente.
Prima dei database, le aziende gestivano le informazioni con archivi cartacei, documenti Word o fogli di calcolo come Excel. Questi strumenti funzionano bene per dati semplici e quantità limitate — ma al crescere della complessità emergono problemi seri.
Un database non è un semplice elenco. È un modello organizzato di una realtà: che si tratti di un'azienda, di un magazzino, di un sistema bancario o di un orario ferroviario, il database ne rappresenta gli elementi rilevanti e le relazioni tra loro in modo strutturato e coerente.
Le sei proprietà fondamentali
Un database da solo è una raccolta passiva di dati. Il DBMS è il software intermediario tra gli utenti (o le applicazioni) e il database fisico: lo gestisce, lo protegge e lo rende interrogabile. Senza DBMS, un database sarebbe solo un insieme di file difficili da coordinare.
Cosa fa il DBMS
- Gestione completa della base di dati a tutti i livelli.
- Persistenza e consistenza dei dati nel tempo.
- Sicurezza e privacy: chi può accedere a cosa e con quali permessi.
- Controllo dell'integrità: le operazioni rispettano sempre i vincoli definiti.
- Gestione delle transazioni: sequenze di operazioni eseguite completamente o per nulla, garantendo le proprietà ACID (vedi sotto).
- Interrogazione (query): estrazione mirata di dati tramite un linguaggio specifico (SQL).
Le proprietà ACID
Una transazione è un insieme di operazioni che devono essere trattate come un'unica unità indivisibile — o vanno tutte a buon fine, o nessuna viene applicata. Il DBMS garantisce che ogni transazione rispetti quattro proprietà fondamentali, dette ACID.
| Proprietà | Significato | Esempio concreto |
|---|---|---|
| A — Atomicità | La transazione è indivisibile: o tutte le operazioni vengono eseguite, o nessuna. | Un bonifico scala 500 € dal conto A e li accredita sul conto B. Se l'accredito fallisce, anche il prelievo viene annullato. Il denaro non sparisce nel nulla. |
| C — Coerenza | La transazione porta il database da uno stato valido a un altro stato valido, rispettando tutti i vincoli definiti. | Un ordine non può essere registrato con un codice cliente inesistente. Il DBMS blocca l'operazione prima che violi l'integrità referenziale. |
| I — Isolamento | Le transazioni concorrenti non si interferiscono: ciascuna vede i dati come se fosse l'unica in esecuzione. | Due cassieri che vendono contemporaneamente l'ultimo articolo in magazzino non possono entrambi "prenotarlo": uno dei due riceverà un errore di disponibilità. |
| D — Durabilità | Una volta confermata (commit), la transazione è permanente anche in caso di guasto hardware o interruzione di corrente. | Se il sistema si spegne dopo la conferma di una fattura, al riavvio la fattura è ancora lì. I dati non vengono persi. |
DBMS più diffusi
| DBMS | Tipo | Utilizzo tipico |
|---|---|---|
| MySQL / MariaDB | Relazionale · Open source | Web, applicazioni PHP, PMI |
| PostgreSQL | Relazionale · Open source | Applicazioni enterprise, analisi dati |
| Microsoft SQL Server | Relazionale · Proprietario | Ambienti Windows, ERP aziendali |
| Oracle Database | Relazionale · Proprietario | Grandi aziende, banche, telco |
| LibreOffice Base | Relazionale · Desktop | Uso didattico, piccoli database locali |
| SQLite | Relazionale · Embedded | App mobile, browser, dispositivi IoT |
Creare un database non è un'attività improvvisata. Si segue un processo ingegneristico strutturato in tre fasi successive, che procedono dal livello più astratto a quello più concreto. L'output di ogni fase è l'input della successiva.
Top-Down o Bottom-Up?
In fase di analisi concettuale esistono due approcci metodologici:
| Approccio | Come funziona | Quando usarlo |
|---|---|---|
| Top-Down | Si parte dalla visione generale del sistema, poi si scende progressivamente nel dettaglio delle singole componenti. | Sistemi nuovi con requisiti chiari fin dall'inizio. |
| Bottom-Up | Si progettano prima le parti individuali nel dettaglio, poi le si collegano per formare il sistema completo. | Sistemi complessi dove le parti sono già note e si vuole integrare componenti esistenti. |
Il modello Entità-Relazione (E-R) è lo strumento grafico usato nella progettazione concettuale per rappresentare la realtà di interesse in modo chiaro e indipendente dalla tecnologia. Si basa su tre concetti fondamentali.
| Concetto | Definizione | Esempio pratico |
|---|---|---|
| Entità | Un "tipo" di oggetto o concetto del mondo reale che deve essere rappresentato nel database. | L'entità Studente rappresenta il concetto generale di studente nel sistema. |
| Istanza di Entità | Un singolo elemento specifico appartenente a un'entità, con i suoi valori concreti. | "Mario Rossi, matricola 12345" è un'istanza di Studente. Viene anche chiamata record. |
| Attributo | Una proprietà o caratteristica che descrive un'entità. Ogni istanza ha un valore per ogni attributo. | Gli attributi di Studente: nome, cognome, matricola, indirizzo, classe. |
Chiave Candidata e Chiave Primaria
La Chiave Primaria (PK) è la chiave candidata scelta dal progettista come identificatore principale. Ogni entità ha una sola chiave primaria.
Tipi di chiave primaria
Esempio:
CodiceFiscale per una persona.Esempio:
CodiceCorso + AnnoAccademico per un'iscrizione.Esempio:
CodiceFiscale, NumeroMatricola.Esempio:
ID_Studente generato dal sistema.
Il diagramma E-R usa simboli grafici standardizzati per rappresentare i vari elementi. Conoscerli è indispensabile per leggere e costruire un modello concettuale.
Le cardinalità: leggere le molteplicità
La cardinalità specifica quante istanze di un'entità possono essere associate a un'istanza dell'altra entità nella relazione. Si esprime come coppia (min, max) e si scrive vicino all'entità a cui si riferisce, sul lato della linea che la connette al rombo.
(min, max) si scrive vicino all'entità a cui si riferisce, non vicino al rombo. Descrive con quante istanze di quella entità partecipa alla relazione. Leggi sempre in entrambe le direzioni: da sinistra a destra e da destra a sinistra.
I tre tipi di relazione
| Tipo | Descrizione | Cardinalità | Esempio |
|---|---|---|---|
| Uno a Uno (1:1) | Ogni istanza di A è associata a al massimo una di B, e viceversa. | (1,1) — (1,1) |
Persona ↔ Passaporto |
| Uno a Molti (1:N) | Un'istanza di A può essere associata a molte di B, ma ogni B è associata a una sola A. | (1,1) — (0,N) |
Dipartimento ↔ Dipendenti |
| Molti a Molti (N:M) | Un'istanza di A può essere associata a molte di B e viceversa. | (0,N) — (0,N) |
Studenti ↔ Corsi |
Entità forti e deboli
Non tutte le entità sono indipendenti. Un'entità è forte se può essere identificata autonomamente. È debole se dipende da un'altra entità per avere significato.
Informazioni ridondanti
Nella progettazione del modello E-R è fondamentale identificare gli attributi ridondanti: dati calcolabili o derivabili da altri elementi già presenti nel modello. Inserirli sarebbe un errore di progettazione.
Media_Esami nello STUDENTE è ridondante: si calcola con una query sulla tabella ESAME. Va eliminato.
Numero_Abitanti nel COMUNE è ridondante: si ottiene contando le istanze di PERSONA associate a quel comune. Va eliminato.Una volta completato il diagramma E-R, si procede con la traduzione al modello logico: uno schema che definisce le tabelle, le colonne, le chiavi primarie e le chiavi esterne, indipendentemente dallo specifico DBMS che verrà usato.
Come si scrive lo schema logico
Ogni tabella si rappresenta con il nome (al plurale) seguito dall'elenco degli attributi tra parentesi tonde, separati da virgole. La chiave primaria è sottolineata; la chiave esterna è preceduta da un asterisco.
PERSONE(CodiceFiscale, Nome, Cognome, DataNascita, Indirizzo)
-- Entità AUTOMOBILE con chiave esterna (FK) verso PERSONE
AUTOMOBILI(Targa, Marca, Modello, Anno, *CodiceFiscale_Proprietario)
-- Tabella associativa per relazione N:M Studenti↔Corsi
ISCRIZIONI(*CodiceStudente, *CodiceCorso, DataIscrizione, Voto)
Le sette regole di traduzione
- 1Ogni entità diventa una tabella. Il nome dell'entità si usa al plurale.
- 2Gli attributi dell'entità diventano le colonne della tabella, ereditandone caratteristiche e vincoli.
- 3La chiave primaria dell'entità diventa la chiave della tabella (sottolineata nello schema logico).
- 4Relazione 1:N: nel lato N si aggiunge una colonna con la chiave primaria del lato 1. Questa è la chiave esterna (FK), indicata con asterisco.
- 5Relazione 1:1: si sceglie su quale delle due tabelle inserire la chiave esterna (solitamente nel lato con partecipazione facoltativa).
- 6Relazione N:M: si crea una terza tabella associativa che contiene le chiavi primarie di entrambe le tabelle. Può avere attributi propri (es. la data di iscrizione).
- 7Gli attributi di associazione (attributi del rombo) diventano colonne della tabella associativa o della tabella che riceve la FK.