Dati e database
SQL, modellazione, indici, transazioni, NoSQL e qualità dei dati, dal foglio di calcolo in su.
Anagrafiche duplicate: come trovarle e unirle senza perdere dati
Normalizzazione, chiavi di confronto, somiglianza tra stringhe e fusione: un metodo pratico per eliminare i clienti duplicati da un database.
Analisi dei dati con pandas: i primi passi con un caso concreto
Caricare, esplorare, pulire, raggruppare e unire dati con pandas in Python, partendo da un file di vendite e con gli errori da evitare subito.
Backup di un database: dump logici, copie fisiche e ripristino
Perché non basta copiare i file di un database in funzione, differenze tra dump e backup fisici, ripristino a un istante preciso e come provare il restore.
Chiavi primarie naturali o surrogate: come scegliere
Codice fiscale, email o un numero progressivo? Pro e contro delle chiavi naturali e surrogate, con criteri pratici per scegliere la chiave di una tabella.
CTE e viste: scrivere query SQL lunghe che restano leggibili
Come usare le espressioni di tabella comuni (WITH), le viste e le viste materializzate per spezzare query complesse in passi chiari e verificabili.
Date e fusi orari nei database: come non sbagliare gli orari
UTC, ora legale, timestamp con e senza fuso: le regole pratiche per salvare date e orari in un database e mostrarli giusti agli utenti di ogni paese.
Foglio di calcolo o database: quando è il momento di passare
Excel e Google Sheets sono ottimi strumenti, ma hanno limiti precisi. Ecco i segnali concreti che indicano quando i dati meritano un vero database.
Funzioni finestra SQL: classifiche, totali progressivi, confronti
Come usare OVER, PARTITION BY e ORDER BY per classifiche, totali cumulativi, medie mobili e confronti tra righe, senza perdere il dettaglio.
GROUP BY in SQL: sei errori comuni che falsano i totali
WHERE o HAVING, colonne non raggruppate, medie di medie, conteggi gonfiati e date con l'orario: gli errori tipici delle aggregazioni SQL e i rimedi.
Importi in euro nel database: perché DECIMAL e non FLOAT
Perché la virgola mobile sbaglia i conti con i soldi, come usare DECIMAL o i centesimi interi e come gestire arrotondamenti, IVA e valute diverse.
Indici nei database: come funzionano e quando crearli
Cos'è un indice B-tree, perché velocizza le ricerche, quanto costa in scrittura e come scegliere le colonne giuste, anche negli indici composti.
JOIN in SQL spiegate con esempi: INNER, LEFT, RIGHT e FULL
Come funzionano le JOIN in SQL, con due tabelle di esempio e i risultati riga per riga, più gli errori comuni: righe moltiplicate e filtri sbagliati.
Leggere un piano di esecuzione con EXPLAIN senza paura
Come usare EXPLAIN per capire perché una query è lenta: scansioni, indici, stime delle righe e strategie di JOIN, con un esempio commentato.
Livelli di isolamento delle transazioni e anomalie tipiche
Letture sporche, letture non ripetibili, fantasmi e aggiornamenti persi: cosa sono, quale livello di isolamento li evita e come scegliere quello adatto.
Migrazioni dello schema: modificare un database senza fermarlo
Come versionare le modifiche allo schema, scrivere migrazioni sicure e cambiare colonne e tabelle in produzione senza fermi né dati persi per strada.
Normalizzazione del database: le prime tre forme normali
Prima, seconda e terza forma normale spiegate con un esempio di ordini e clienti: quali problemi risolvono e quando ha senso denormalizzare.
Database operativo e data warehouse: OLTP, OLAP e schema a stella
Perché i report pesanti non vanno eseguiti sul database del gestionale, che cos'è un data warehouse e come funziona lo schema a stella con i suoi fatti.
File CSV: i problemi più comuni e come risolverli
Separatori, codifica, zeri iniziali persi, date ambigue e virgolette: come riconoscere e correggere i difetti tipici dei CSV prima dell'import.
Qualità dei dati: sei dimensioni e i controlli per misurarle
Completezza, validità, unicità, coerenza, accuratezza e tempestività: cosa significano in pratica e quali query SQL usare per misurare la qualità dei dati.
Query parametrizzate: la difesa corretta contro la SQL injection
Perché concatenare stringhe nelle query SQL è pericoloso, come funzionano i parametri, cosa non si parametrizza e quali difese aggiungere nel database.
Relazioni tra tabelle: uno a uno, uno a molti e molti a molti
Come rappresentare le relazioni tra entità in un database relazionale: chiavi esterne, tabelle ponte con attributi, gerarchie e azioni in cancellazione.
SQLite: quando un database in un singolo file è la scelta giusta
Come funziona SQLite, perché è più robusto di quanto si pensi, i casi in cui basta e avanza, i limiti di concorrenza e le impostazioni da conoscere subito.
Database NoSQL: documenti, chiave-valore, colonne e grafi
Le quattro famiglie di database NoSQL, come organizzano i dati, per quali problemi sono adatte e quando il relazionale resta la scelta migliore.
Transazioni e proprietà ACID spiegate con un bonifico
Atomicità, coerenza, isolamento e durabilità: cosa garantisce una transazione, come usare BEGIN e COMMIT e quali errori evitare nel codice applicativo.
NULL in SQL: le trappole che falsano i risultati delle query
Perché NULL non è uguale a NULL, come si comporta con COUNT, NOT IN e le somme, e quali regole seguire per evitare report sbagliati senza accorgersene.