Perimetro della materia
Il programma include domande su modello relazionale, normalizzazione e SQL (≈ 298 quesiti su 16 637). Sono gli argomenti base per progettare, interrogare e gestire dati nei sistemi informativi della PA. Focalizzarsi su relazioni, chiavi, vincoli, algebra e comandi SQL consente di rispondere rapidamente, evitando dettagli marginali dei DBMS.
Il modello relazionale: relazioni, chiavi e vincoli
Una relazione è una tabella di tuple e attributi. Ogni attributo ha un dominio. La chiave primaria identifica univocamente la tupla; una chiave candidata è qualsiasi insieme idoneo. La chiave esterna collega due relazioni e attiva il vincolo di integrità referenziale. I vincoli di dominio limitano i valori.
| Termine | Definizione |
|---|---|
| Relazione | Tabella di tuple e attributi |
| Tupla | Riga della tabella |
| Chiave primaria | Attributo o insieme che identifica univocamente la tupla |
| Chiave esterna | Attributo che fa riferimento a una chiave primaria di un’altra relazione |
| Vincolo di integrità referenziale | Assicura che il valore della chiave esterna esista nella relazione referenziata |
Algebra relazionale e operazioni di join
L’algebra relazionale offre: selezione (σ), proiezione (π), unione (∪), intersezione (∩), differenza (−) e prodotto cartesiano (×). I join sono prodotti cartesiani con predicato di uguaglianza: inner join, left/right/full outer join, self join, natural join, cross join.
Normalizzazione e dipendenze funzionali
La normalizzazione rimuove ridondanze e anomalie. Una dipendenza funzionale X→Y indica che X determina Y. Le forme normali richiedono condizioni progressive (vedi tabella). La normalizzazione previene anomalie di inserimento, aggiornamento e cancellazione, garantendo coerenza.
| Forma normale | Requisito essenziale |
|---|---|
| 1NF | Attributi atomici, nessuna multivalenza |
| 2NF | 1NF + nessuna dipendenza parziale da chiave primaria |
| 3NF | 2NF + nessuna dipendenza transitiva da chiave primaria |
| BCNF | Ogni determinante è una chiave candidata |
Il linguaggio SQL: DDL, DML, DCL e TCL
DDL: CREATE, ALTER, DROP. DML: SELECT, INSERT, UPDATE, DELETE. DCL: GRANT, REVOKE. TCL: COMMIT, ROLLBACK. Clausole WHERE, GROUP BY, HAVING, ORDER BY filtrano, raggruppano, ordinano; le subquery consentono nidificazioni. Funzioni di aggregazione: COUNT, SUM, AVG, MIN, MAX.
Transazioni, concorrenza e proprietà ACID
Una transazione è un insieme atomico di operazioni. ACID: Atomicità, Coerenza, Isolamento, Durabilità. Livelli di isolamento (READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE) evitano dirty, non‑repeatable e phantom read. Lock (row‑level, table‑level) prevengono conflitti; i deadlock richiedono rilevamento e rollback.
Progettazione: dal modello Entità‑Relazione allo schema fisico
Il modello ER mostra entità, attributi e relazioni. Cardinalità 1:1, 1:N, N:M; le N:M richiedono una tabella di associazione con chiavi esterne. Indici (B‑tree, univoci) velocizzano le ricerche, ma aumentano il costo di inserimento. Viste (VIEW), stored procedure e trigger gestiscono la logica. RDBMS PA: MySQL, PostgreSQL, Oracle, SQL Server; NoSQL (es. MongoDB) hanno modello diverso, scalabilità orizzontale e ACID limitato.
Backup, sicurezza e database nella PA
Backup: dump logico (esportazione SQL) e dump fisico (file). Restore ripristina; replica (master‑slave, cluster) garantisce alta disponibilità. Sicurezza secondo CAD (D.Lgs. 82/2005) e GDPR (Reg. UE 2016/679): controllo accessi (utenze, ruoli, GRANT/REVOKE), cifratura (TDE, column‑level), log di audit. DB di interesse nazionale devono rispettare norme di interoperabilità e conservazione del CAD.
Collegamenti con le altre materie
- Diritti amministrativi (art. 97 Cost., D.Lgs. 165/2001): integrità garantisce imparzialità.
- Competenze informatiche (1546): RDBMS richiesto per gestione sistemi informativi.
- Trasparenza e anticorruzione (L. 190/2012, D.Lgs. 33/2013): dati in formati aperti, supportati da viste e query.
- Privacy e GDPR (Reg. UE 2016/679, D.Lgs. 196/2003): vincoli di dominio e controlli accesso proteggono dati personali.
- Sistemi operativi (Linux/Windows) (881): DBMS su questi OS richiedono permessi e backup.
- Programmazione (485): stored procedure e trigger in linguaggi procedurali del DBMS.
Errori tipici e trappole d'esame
- Confondere chiave primaria e candidata – la primaria è una delle candidate.
- Credere 3NF ⇒ BCNF – BCNF richiede ogni determinante chiave.
- Confondere INNER e LEFT JOIN – LEFT mantiene tutte le righe sinistre.
- Pensare HAVING sostituisca WHERE – HAVING filtra post GROUP BY, WHERE pre.
- Scambiare COMMIT e ROLLBACK – COMMIT conferma, ROLLBACK annulla.
- Assumere indice velocizzi INSERT – gli indici aumentano costo scrittura.
- Confondere isolamento e atomicità – isolamento tra transazioni, atomicità esecuzione indivisibile.
- Scambiare vincolo referenziale e di dominio – il primo su relazioni, il secondo su valori.
- Pensare VIEW contenga dati fisici – le VIEW sono virtuali, salvo materializzazione.
- Confondere N:M diretta – le N:M richiedono tabella intermedia.
Checklist di ripasso
- Che cosa definisce una relazione in termini di tuple e attributi?
- Qual è la differenza tra chiave primaria e chiave candidata?
- Come si esprime un vincolo di integrità referenziale in SQL?
- Quali operatori dell’algebra relazionale corrispondono a SELECT, PROJECTION e JOIN?
- Quando si utilizza un LEFT OUTER JOIN rispetto a un INNER JOIN?
- Quali sono i requisiti per una tabella in 2NF?
- Come si verifica una dipendenza transitiva?
- Quali comandi DDL servono a creare e modificare una tabella?
- Qual è la sintassi base di una subquery correlata?
- Quali funzioni di aggregazione si usano per calcolare media e conteggio?
- Quali sono i quattro livelli di isolamento e i relativi fenomeni di concorrenza?
- Come si risolve una deadlock in un DBMS?
- Qual è la struttura di una tabella di associazione per una relazione N:M?
- Quali tipologie di indice esistono e quando è opportuno usarli?
- Quali misure di sicurezza richiede il GDPR per i dati sensibili?