Database e web: Python, SQLite3 e sicurezza

✓Capire il flusso request→Python→DBMS→response in un’applicazione web con backend Python
✓Usare il modulo sqlite3 di Python per connettersi, leggere e scrivere dati in un database
✓Comprendere cos’è la SQL Injection, come funziona un attacco e come prevenirlo con i prepared statement
✓Costruire con Flask una mini-applicazione web con lettura/scrittura su DB e visualizzazione dinamica

I database non relazionali

✓Comprendere i limiti del modello relazionale nel contesto Big Data e i motivi dell’emergere dei database NoSQL
✓Distinguere le proprietà ACID (RDBMS) dalle proprietà BASE (NoSQL) e capirne il trade-off
✓Riconoscere le quattro categorie NoSQL (Document, Key-Value, Column-family, Graph) con esempi e casi d’uso
✓Scegliere consapevolmente tra SQL e NoSQL in base ai requisiti di un’applicazione reale

SELECT multiple: JOIN, subquery e operatori insiemistici

✓Combinare dati di più tabelle con INNER JOIN, LEFT JOIN, RIGHT JOIN e SELF JOIN
✓Scrivere subquery scalari, con IN / EXISTS e subquery correlate
✓Unire result set con UNION / UNION ALL e conoscere i limiti di INTERSECT / EXCEPT
✓Scegliere tra JOIN e subquery in base alla leggibilità e alle esigenze della query

Funzioni di raggruppamento

✓Usare le funzioni aggregate COUNT, SUM, AVG, MIN, MAX su insiemi di righe
✓Raggruppare i risultati con GROUP BY per produrre statistiche per categoria
✓Filtrare i gruppi con HAVING e distinguere il suo ruolo rispetto a WHERE
✓Applicare correttamente l’ordine logico di esecuzione: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

Comandi QL: la SELECT di base

✓Scrivere query SELECT complete con clausole WHERE, ORDER BY e LIMIT
✓Usare operatori di confronto, BETWEEN, IN, LIKE, IS NULL per filtrare le righe
✓Applicare alias di colonna e tabella e rimuovere i duplicati con DISTINCT
✓Implementare la paginazione con LIMIT e OFFSET su dataset reali

Algebra relazionale

✓Comprendere l’algebra relazionale come fondamento teorico del linguaggio SQL
✓Applicare le operazioni unarie (proiezione π e selezione σ) su insiemi di tuple
✓Applicare le operazioni binarie: prodotto cartesiano, join naturale, theta-join, equi-join
✓Tradurre espressioni di algebra relazionale in query SQL e viceversa

Comandi DML: manipolare i dati

✓Inserire record con INSERT INTO, sia in forma completa che abbreviata, anche con valori multipli
✓Aggiornare dati con UPDATE … SET … WHERE e comprendere il rischio di omettere la clausola WHERE
✓Eliminare righe con DELETE FROM … WHERE gestendo correttamente le Foreign Key
✓Utilizzare le transazioni (BEGIN, COMMIT, ROLLBACK) per garantire l’atomicità delle operazioni

Il linguaggio SQL: panoramica, server dei dati e DDL

✓Distinguere i principali DBMS e comprendere l’architettura client-server di un sistema di gestione dati
✓Conoscere le cinque categorie del linguaggio SQL (DDL, DML, QL, DCL, TCL) e i loro comandi principali
✓Saper creare tabelle con tipi di dato e vincoli corretti tramite CREATE TABLE
✓Modificare e rimuovere strutture di tabella con ALTER TABLE, DROP e TRUNCATE

Le forme normali

✓Comprendere perché la normalizzazione esiste e quali anomalie elimina
✓Verificare se una tabella soddisfa la 1NF, la 2NF e la 3NF
✓Normalizzare una tabella violata fino alla 3NF decomposto in tabelle separate
✓Distinguere dipendenza funzionale, dipendenza parziale e dipendenza transitiva

Dal modello concettuale al modello logico e integrità referenziale

✓Distinguere il modello concettuale (ER) dal modello logico (relazionale) e dal modello fisico
✓Applicare le regole di derivazione per tradurre un diagramma ER in tabelle relazionali
✓Comprendere il concetto di integrità referenziale e i comportamenti su UPDATE e DELETE
✓Saper svolgere per intero la derivazione di uno schema ER complesso (caso libro–autore)