Premessa
Portale di appartenenza: Basi di dati.
Cosa troverai in questa nota:
- Un’introduzione ai concetti di database e di DBMS.
- Il significato intrinseco dei termini dato e informazione e la loro differenza.
- Una presentazione dei vari tipi di modelli (concettuale, logico e fisico) con i quali si può progettare un database.
Prerequisiti: per comprendere pienamente il contenuto di questa nota, oltre le conoscenze minime che do per scontato che tu sappia già, ti consiglio di aver letto in precedenza queste altre note:
Buona lettura! ☝️🤓
Viviamo in un’epoca in cui i dati sono diventati una risorsa fondamentale. Aziende, istituzioni e applicazioni personali devono archiviare e recuperare informazioni in modo efficiente per assicurare la loro operatività. Si potrebbe addirittura dire che, in una società come quella moderna, le informazioni sono diventate la nuova ricchezza: ecco perché ultimamente si parla di infocrazie. Proprio per questo, essendo pervasi da una mole incalcolabile di dati, se questi non sono organizzati correttamente, anche il sistema più avanzato diventa inutilizzabile. Pensa a un motore di ricerca che impiega minuti per trovare una semplice pagina web o a una banca che perde traccia dei movimenti di un conto corrente.
Ecco perché esistono le basi di dati. Le basi di dati sono ovunque: ogni volta che prenoti un biglietto aereo, acquisti un prodotto online, guardi una serie in streaming o semplicemente invii un messaggio su WhatsApp, in realtà stai interagendo con una base di dati.
Diamo quindi una definizione formale di base di dati.
Definizione: base di dati
Una base di dati (in inglese database) è una collezione strutturata di dati immagazzinati e accessibili per via elettronica, in grado di favorire la gestione dei dati in modo efficiente e sicuro.
Osservazione: uso del termine database
Nel linguaggio comune e informale, il termine database tende a essere utilizzato impropriamente con varie sfumature di significato, ma in realtà il database vero e proprio è rappresentato solo dal sistema fisico e/o virtuale su cui vengono immagazzinati i dati (come un semplice file testuale, un file CSV o un foglio Excel).
1 - Differenza tra dato e informazione
Ma cos’è esattamente un’informazione? E cosa rappresenta invece il termine dato? Sebbene vengano usati spesso in maniera intercambiabile, i termini dato e informazione hanno significati ben distinti.
Definizione: dato
Un dato è una rappresentazione elementare (numerica, testuale, visiva, ecc.) di un fenomeno della realtà che si vuole rappresentare. È grezzo e privo di significato di per sé e senza un contesto o un’interpretazione non ha valore informativo e non ci dice nulla.
I dati, però, se aggregati, possono rappresentare un’informazione.
Definizione: informazione
Un’informazione è il risultato dell’interpretazione e della correlazione di uno o più dati inquadrati in un determinato contesto.
Esempio di differenza tra dato e informazione
Immaginiamo di avere come dati la scritta
Mario Rossi
e il numero741
scritti su un foglio di carta. Da soli, questi elementi non hanno un significato chiaro; tuttavia, se sappiamo che il foglio risponde alla domanda “chi è il responsabile del Dipartimento di Informatica e qual è la sua matricola?”, allora possiamo interpretare i dati e ottenere l’informazione che Mario Rossi è il responsabile del Dipartimento di Informatica e il suo numero di telefono è 741.
In sintesi, i dati diventano informazioni quando vengono elaborati, contestualizzati e resi comprensibili per un determinato scopo.
2 - Il DBMS
Senza un DBMS, dovremmo gestire i dati manualmente con file di testo o fogli di calcolo, con tutti i problemi che ne derivano: ridondanza, inconsistenza, difficoltà di ricerca e modifiche complesse. Un DBMS risolve questi problemi offrendo:
- Organizzazione strutturata: i dati vengono archiviati in tabelle, documenti o grafi in modo ordinato e ben strutturato.
- Efficienza: i DBMS ottimizzano la memorizzazione e l’accesso ai dati, riducendo i tempi di risposta.
- Sicurezza e controllo degli accessi: gli utenti possono avere permessi differenti per leggere o modificare i dati.
- Concorrente accesso ai dati: più utenti possono lavorare sullo stesso database senza interferenze.
- Integrità dei dati: il DBMS applica delle regole per evitare errori e duplicazioni.
- Backup e ripristino: protezione contro la perdita accidentale di dati.
Un concetto strettamente legato ai database è il DBMS.
Definizione: DBMS
Il DBMS (DataBase Management System) è il software necessario all’interfacciamento con la base di dati, grazie al quale è possibile crearla, gestirla e chiederle dati in modo efficiente e sicuro. Il suo compito è fornire agli utenti e alle applicazioni un’interfaccia comoda che eviti di dover gestire direttamente i dettagli interni di archiviazione e accesso ai dati.
Esempi di DBMS
Alcuni esempi di DBMS sono MySQL, MariaDB (nato dallo stesso creatore di MySQL dopo che quest’ultimo era stato acquisito dalla Sun Microsystems) e PostgreSQL.
Le operazioni effettuate su una base di dati per mezzo di un DBMS vengono dette interrogazioni.
Definizione: interrogazione
Le operazioni che si possono effettuare tramite un’interrogazione a un database sono notate con l’acronimo CRUD.
Definizione: operazioni CRUD
Osservazione: differenza tra i termini aggiornamento e modifica
Nel contesto delle basi di dati, i termini aggiornamento e modifica sono spesso usati come sinonimi, ma tecnicamente c’è una distinzione concettuale tra i due:
- Il termine aggiornamento indica un’operazione che sostituisce un valore già esistente con un nuovo valore e rappresenta l’operazione di update nelle operazioni CRUD.
- Il termine modifica indica qualsiasi cambiamento ai dati nel database e si riferisce a quelle operazioni CRUD che alterano i dati (cioè create, update e delete).
Si può notare quindi come l’aggiornamento è solo un caso particolare della modifica.
2.2 - Architettura ANSI/SPARC a tre livelli per DBMS (1975)
L’ANSI/SPARC (acronimo di American National Standards Institute / Standards Planning And Requirements Committee), un ente statunitense per la standardizzazione, nel 1975 ha proposto e definito un modello a tre livelli per la progettazione e gestione dei database. Questa architettura è stata sviluppata per separare la rappresentazione fisica dei dati dalla loro vista logica, migliorando così flessibilità, sicurezza e indipendenza dei dati.
I tre livelli dell’architettura sono:
- Livello interno (fisico): è il livello più basso e definisce come i dati sono effettivamente memorizzati nel sistema. A questo livello si definiscono la struttura dei file, gli indici, l’organizzazione della memoria e le tecniche di accesso ai dati. È gestito direttamente dal DBMS e non è visibile agli utenti finali o agli sviluppatori. Il suo obiettivo principale è ottimizzare lo spazio di archiviazione e le prestazioni di accesso ai dati. Ad esempio, un database potrebbe essere memorizzato in file binari.
- Livello logico: rappresenta l’intera struttura del database indipendentemente dalla sua organizzazione fisica. A questo livello viene definito come i dati vengono organizzati in strutture dati per poter essere facilmente elaborati.
- Livello esterno: fornisce una rappresentazione personalizzata dei dati in base alle esigenze degli utenti o delle applicazioni. Ogni utente può avere una propria vista sui dati, che può includere solo alcune tabelle o campi, escludendo informazioni non necessarie o sensibili. Questo livello garantisce sia un accesso semplificato ai dati sia una maggiore sicurezza, poiché gli utenti possono interagire solo con le informazioni a loro concesse. Ad esempio, un professore potrebbe accedere solo ai nomi e ai corsi degli studenti, senza visualizzare altre informazioni personali.
I principali vantaggi dell’architettura a tre livelli dei DBMS sono:
- Indipendenza fisica dei dati: le modifiche al livello fisico (ad esempio, il modo in cui i dati sono memorizzati) non influenzano il livello logico o le viste utente.
- Indipendenza logica dei dati: lo schema concettuale può essere modificato senza impattare le viste esterne degli utenti.
- Maggiore sicurezza: gli utenti vedono solo i dati a cui hanno accesso, grazie alle viste personalizzate.
- Maggiore flessibilità: permette di adattare il database a diversi utenti senza modificare la struttura interna.
- Migliore gestione delle prestazioni: il livello fisico può essere ottimizzato senza modificare la logica del database.
- Separazione dei ruoli: sviluppatori, amministratori e utenti finali possono interagire con il database a livelli diversi senza interferenze.
3 - Modellazione dei dati
Definizione: modellazione dei dati
La modellazione dei dati nei database è il processo di definizione della struttura logica dei dati e delle relazioni tra di essi, con l’obiettivo di garantire una rappresentazione coerente, efficiente e scalabile delle informazioni.
Modellare i dati significa costruire una rappresentazione semplificata della realtà osservata di un problema, individuandone gli elementi caratterizzanti e i legami intercorrenti tra essi. I modelli vengono divisi in tre categorie, ciascuno con un ruolo specifico nella progettazione e implementazione del sistema: modelli concettuali, modelli logici e modelli fisici.
3.1 - Modelli concettuali
Definizione: modello concettuale
Il modello concettuale è una rappresentazione ad alto livello della struttura dei dati di un sistema, utilizzata nella fase iniziale della progettazione di un database per evitare errori nella fase di implementazione. Il suo scopo principale è descrivere i dati in modo indipendente dalle scelte di implementazione e dal DBMS che verrà utilizzato attraverso uno schema ed un linguaggio più simile e vicino all’uomo.
Il modello concettuale attualmente più diffuso è il modello E-R (Entity-Relationship) che rappresenta i dati attraverso entità (oggetti o concetti del mondo reale), attributi (proprietà o caratteristiche delle entità) e relazioni (associazioni tra entità). Un’altra valida alternativa è il modello UML, usato per applicare il paradigma della programmazione orientata agli oggetti ai database tramite l’implementazione di oggetti con un proprio stato e comportamento, delle classi che raggruppano gli oggetti con caratteristiche comuni e concetti di ereditarietà per il riutilizzo di strutture dati.
3.2 - Modelli logici
Definizione: modello logico
Il modello logico è una traduzione del modello concettuale in una struttura più dettagliata, specifica per un determinato tipo di database.
In particolare, i dati rappresentati attraverso il modello concettuale E-R vengono tradotti nel modello logico relazionale “adattandoli” al database di tipo relazionale tramite:
- La trasformazione delle relazioni in tabelle in cui le righe corrispondono alle istanze delle entità e le colonne ai loro attributi.
- L’aggiunta di chiavi primarie e chiavi esterne.
- L’applicazione dei concetti di normalizzazione, cioè tecniche usate per ridurre la ridondanza dei dati e migliorare la coerenza delle informazioni.
Sebbene possano sembrare la stessa cosa, in realtà c’è differenza tra i modelli concettuali e i modelli logici: mentre i primi sono usati per descrivere i dati in modo indipendente dalla loro implementazione nei DBMS, senza preoccuparsi di come i dati verranno archiviati o gestiti, i secondi definiscono la struttura dei dati in un formato più dettagliato e specifico, preparandoli per l’effettiva implementazione nel DBMS scelto.
Il modello relazionale è stato proposto in ambito di ricerca all’inizio degli anni ‘70, ma ha ottenuto popolarità solo a partire dagli anni ‘80, fino a divenire il modello più diffuso al giorno d’oggi. Oltre al modello relazionale, sono stati definiti altri tipi di modelli, tra cui:
- Il modello a oggetti, che rappresenta la traduzione in modello logico del modello UML.
- Il modello gerarchico, basato sull’uso di strutture ad albero (e gerarchie, da cui il nome), definito durante la prima fase di sviluppo dei DBMS (negli anni ‘60), ma ancora utilizzato in molti sistemi, principalmente per motivi di continuità.
- Il modello reticolare (noto anche come modello CODASYL, dal nome della Conference on Data Systems Languages che ne ha dato una definizione precisa), basato sull’uso di grafi, sviluppato nei primi anni ‘70.
3.3 - Modelli fisici
Definizione: modello fisico
Il modello fisico si occupa della concreta registrazione dei dati sulle memorie di massa, definendo modalità e tecniche di archiviazione.
In questa fase di modellazione si stabiliscono dettagli come l’organizzazione dei file, gli indici per velocizzare le ricerche e le strategie di allocazione dello spazio su disco. Questo livello è gestito dal DBMS e influenza direttamente le prestazioni del database, per questo sono cruciali in questo caso l’insieme di tecniche utilizzate per l’ottimizzazione delle operazioni di lettura e scrittura.
Fonti
- 🏫 Lezioni e slide del Prof. Pensa Ruggero Gaetano del corso di Basi di Dati (canale B), Corso di Laurea in Informatica presso l’Università di Torino, A.A. 2024-25:
- 🏫 Appunti di Luca Barra del corso di Basi di Dati, Corso di Laurea in Informatica presso l’Università di Torino, A.A. 2022-23 (caricati sul repository GitHub del Collettivo Studentesco Informatica).