Introduzione ai database

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.

// analogia
Pensa a un database come a un archivio cartaceo molto organizzato: ogni cassetto è una tabella, ogni cartella è un record, ogni foglio è un campo. Il DBMS è l’archivista che sa esattamente dove trovare ogni documento.

Tipi di database

Esistono diversi modelli di database — ognuno adatto a casi d’uso specifici:

TipoCome organizza i datiEsempioQuando usarlo
RelazionaleTabelle con righe e colonneSQLite, MySQL, PostgreSQLDati strutturati con relazioni
DocumentDocumenti JSON/BSONMongoDBDati flessibili, API REST
Key-ValueCoppie chiave → valoreRedisCache, sessioni, real-time
GraphNodi e archiNeo4jReti 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

idnomecognomeclasseemail
1MarcoRossi3Am.rossi@scuola.it
2GiuliaBianchi3Bg.bianchi@scuola.it
3LucaVerdi3Al.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.

// zero setup
Nessun server da installare o configurare — il database è un file .db
// incluso in Python
Il modulo sqlite3 è nella libreria standard — nessun pip install
// SQL standard
Le query SQL imparate qui funzionano su MySQL, PostgreSQL e tutti i DB relazionali

Setup 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.x

Se 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.

// download
Vai su sqlitebrowser.org → clicca Download → scegli il pacchetto per il tuo sistema operativo (Windows Installer, macOS DMG, Linux AppImage).

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-03

Step 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:

  1. Apri DB Browser → clicca “Apri database”
  2. Naviga fino alla cartella database-corso → seleziona database.db
  3. Tab “Struttura database” → vedrai la tabella studenti con i suoi campi
  4. Tab “Sfoglia dati” → vedrai i 2 record inseriti
  5. Tab “Esegui SQL” → scrivi SELECT * FROM studenti; → clicca ▶ per eseguire
// workflow consigliato
Usa Python per creare e popolare il database da codice. Usa DB Browser per ispezionare visivamente i risultati e testare query SQL al volo. I due strumenti si completano perfettamente.

I 4 tipi di dato fondamentali in SQLite

Tipo SQLiteCosa memorizzaEsempio
INTEGERNumeri interi1, 42, -7
REALNumeri decimali3.14, 9.99
TEXTStringhe di testo‘Marco’, ‘Rossi’
BLOBDati binariimmagini, 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 sqlite3 nella 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

Lascia un commento