Cos’è un database?
Un database è una raccolta organizzata di dati strutturati, memorizzata e gestita attraverso un software chiamato DBMS (Database Management System). L’obiettivo è semplice: archiviare informazioni in modo che possano essere recuperate, modificate e interrogate in modo efficiente.
Prima dei database, i dati venivano salvati in file di testo o fogli di calcolo — approccio che diventa rapidamente ingestibile quando i dati crescono o quando più utenti devono accedervi contemporaneamente.
Tipi di database
Esistono diversi modelli di database — ognuno adatto a casi d’uso specifici:
| Tipo | Come organizza i dati | Esempio | Quando usarlo |
|---|---|---|---|
| Relazionale | Tabelle con righe e colonne | SQLite, MySQL, PostgreSQL | Dati strutturati con relazioni |
| Document | Documenti JSON/BSON | MongoDB | Dati flessibili, API REST |
| Key-Value | Coppie chiave → valore | Redis | Cache, sessioni, real-time |
| Graph | Nodi e archi | Neo4j | Reti sociali, raccomandazioni |
In questo corso utilizzeremo i database relazionali — il tipo più diffuso in ambito professionale e il punto di partenza ideale per capire come funzionano i database.
Il modello relazionale — concetti chiave
In un database relazionale i dati sono organizzati in tabelle. Ogni tabella rappresenta un’entità del mondo reale (es. Studenti, Corsi, Professori).
Struttura di una tabella
| id | nome | cognome | classe | |
|---|---|---|---|---|
| 1 | Marco | Rossi | 3A | m.rossi@scuola.it |
| 2 | Giulia | Bianchi | 3B | g.bianchi@scuola.it |
| 3 | Luca | Verdi | 3A | l.verdi@scuola.it |
- Tabella — l’insieme dei dati (es. “Studenti”)
- Colonna / Campo — un attributo dell’entità (es. “nome”, “cognome”)
- Riga / Record — un’istanza concreta (es. lo studente Marco Rossi)
- Primary Key — identificatore univoco di ogni riga (colonna
id) — non può essere duplicato né vuoto - Foreign Key — un campo che fa riferimento alla Primary Key di un’altra tabella, creando una relazione tra tabelle
Perché SQLite con Python?
SQLite è un database relazionale embedded — non richiede un server separato, l’intero database vive in un singolo file .db sul tuo disco. È perfetto per imparare, prototipare e sviluppare applicazioni leggere.
sqlite3 è nella libreria standard — nessun pip installSetup dell’ambiente di lavoro
Utilizzeremo due strumenti in parallelo — Python per scrivere codice e DB Browser for SQLite come interfaccia grafica per visualizzare e interrogare il database visivamente.
Step 1 — Verifica Python
Apri il terminale e verifica che Python sia installato:
# Windows (PowerShell o CMD)
python --version
# Output atteso
Python 3.x.xSe Python non è installato scaricalo da python.org → versione 3.10 o superiore.
Step 2 — Installa DB Browser for SQLite
DB Browser for SQLite è un’applicazione gratuita che ti permette di aprire file .db, vedere le tabelle, eseguire query SQL e modificare dati senza scrivere codice.
Dopo l’installazione apri DB Browser — vedrai questa interfaccia principale:
- Database Structure — mostra le tabelle e i loro campi
- Browse Data — visualizza i record come un foglio di calcolo
- Execute SQL — pannello per scrivere ed eseguire query SQL manualmente
Step 3 — Crea la cartella di lavoro
Crea una cartella dedicata per i progetti database — terrà tutto organizzato:
# Crea la struttura cartelle
mkdir database-corso
cd database-corso
mkdir lab-01 lab-02 lab-03Step 4 — Primo database con Python
Apri VS Code (o il tuo editor preferito) nella cartella database-corso e crea il file primo_db.py:
import sqlite3
# Crea (o apre) il file database.db nella cartella corrente
conn = sqlite3.connect('database.db')
# Il cursore è lo strumento per eseguire comandi SQL
cursor = conn.cursor()
# Crea la prima tabella
cursor.execute('''
CREATE TABLE IF NOT EXISTS studenti (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
cognome TEXT NOT NULL,
classe TEXT,
email TEXT UNIQUE
)
''')
# Inserisci qualche record di prova
cursor.execute("INSERT INTO studenti (nome, cognome, classe, email) VALUES (?, ?, ?, ?)",
('Marco', 'Rossi', '3A', 'm.rossi@scuola.it'))
cursor.execute("INSERT INTO studenti (nome, cognome, classe, email) VALUES (?, ?, ?, ?)",
('Giulia', 'Bianchi', '3B', 'g.bianchi@scuola.it'))
# Salva le modifiche
conn.commit()
# Leggi e stampa tutti i record
cursor.execute("SELECT * FROM studenti")
righe = cursor.fetchall()
for riga in righe:
print(riga)
# Chiudi la connessione
conn.close()
print("Database creato correttamente!")Esegui lo script:
python primo_db.py
# Output atteso:
(1, 'Marco', 'Rossi', '3A', 'm.rossi@scuola.it')
(2, 'Giulia', 'Bianchi', '3B', 'g.bianchi@scuola.it')
Database creato correttamente!Step 5 — Apri il database in DB Browser
Ora apri DB Browser for SQLite e verifica visivamente ciò che hai creato:
- Apri DB Browser → clicca “Apri database”
- Naviga fino alla cartella
database-corso→ selezionadatabase.db - Tab “Struttura database” → vedrai la tabella
studenticon i suoi campi - Tab “Sfoglia dati” → vedrai i 2 record inseriti
- Tab “Esegui SQL” → scrivi
SELECT * FROM studenti;→ clicca ▶ per eseguire
I 4 tipi di dato fondamentali in SQLite
| Tipo SQLite | Cosa memorizza | Esempio |
|---|---|---|
INTEGER | Numeri interi | 1, 42, -7 |
REAL | Numeri decimali | 3.14, 9.99 |
TEXT | Stringhe di testo | ‘Marco’, ‘Rossi’ |
BLOB | Dati binari | immagini, file |
Riepilogo
- Un database è una raccolta organizzata di dati gestita da un DBMS
- I database relazionali organizzano i dati in tabelle con righe e colonne
- Ogni tabella ha una Primary Key — identificatore univoco per ogni record
- SQLite è un database embedded — nessun server, tutto in un file
.db - Python include il modulo
sqlite3nella libreria standard — zero installazioni - DB Browser for SQLite è lo strumento visivo per esplorare e interrogare il database
- Il workflow: Python crea e popola → DB Browser ispeziona e testa