Lectures Log - A.Y. 2023/2024
Lecture 1: Introduction
2024-02-28, 08:30 (3 hours)
- (1-1)Presentazione del corso
- (1-2)Perché le basi di dati sono importanti?
- (1-3)Example Esempio Gestire i dati: dai metodi fatti in casa ai server DBMS
- (1-4)Per gestire la persistenza dei dati dobbiamo usare per forza un DBMS?
- (1-5)Example I I DBMS serverless come SQLite
- (1-6)Perché usiamo (ancora) il modello relazionale?
- (1-7)E le basi di dati NoSQL?
- (1-8)Example L'affermazione delle basi di dati document-oriented come MongoDB
- (1-9)Example I L'affermazione delle basi di dati a grafo nelle applicazioni di data analytics
- (1-10)SQL e NoSQL sono veramente mondi isolati?
- (1-11)Example Le estensioni NoSQL dei database relazionali (e viceversa)
- (1-12)Gli errori più comuni nelle basi di dati e le loro (catastrofiche) conseguenze
- (1-13)Il processo di realizzazione di una base di dati
- (1-14)Le fasi della progettazione: concettuale, logica, fisica
- (1-15)Gli strumenti per ciascuna fase di progettazione
- (1-16)Analisi delle specifiche
- (1-17)Example L'Università: analisi dei requisiti
Lecture 2: ER Modelling 1
2024-03-01, 09:30 (2 hours)
Slides ER
- (2-1)La progettazione concettuale
- (2-2)I diagrammi Entità - Relazione
- (2-3)Entità nei diagrammi ER
- (2-4)Example L'Università: entità
- (2-5)Attributi nei diagrammi ER
- (2-6)Example Attributi ed Entità: come non confondere i due concetti
- (2-7)Example L'Università: attributi
- (2-8)Attributi composti
- (2-9)Example Quando è utile usare un attributo composto
- (2-10)Attributi con molteplicità
- (2-11)Identificare univocamente le istanze di un'entità
- (2-12)Chiavi nelle entità
- (2-13)Scelta della chiave primaria tra le chiavi candidate
- (2-14)Example L'Università: chiavi
- (2-15)Example Entità (apparentemente) prive di chiave
- (2-16)Example L'Azienda: analisi dei requisiti
Lecture 3: ER Modelling 2
2024-03-06, 08:30 (3 hours)
Slides ER
- (3-1)Example L'Azienda: entità, attributi e chiavi
- (3-2)Documentazione dei diagrammi ER: i tipi di dato
- (3-3)Generalizzazione di entità
- (3-4)Generalizzazioni totali e parziali
- (3-5)Example Il supermercato: entità (e generalizzazioni), attributi e chiavi
- (3-6)Relazioni
- (3-7)Relazioni non binarie
- (3-8)Auto-Relazioni
- (3-9)Ruoli nelle relazioni
- (3-10)Example Il supermercato: relazioni
- (3-11)Relazioni e generalizzazioni
Lecture 4: ER Modelling 3
2024-03-08, 09:30 (2 hours)
Slides ER
- (4-1)Generalizzazioni e chiavi
- (4-2)Attributi sulle relazioni
- (4-3)Example Il supermercato: attributi sulle relazioni
- (4-4)Example L'azienda: relazioni
- (4-5)Example L'azienda: attributi sulle relazioni
- (4-6)Example Modellare il concetto di "storico" per un'associazione: soluzioni e considerazioni
- (4-7)Cardinalità delle relazioni
- (4-8)
- (4-9)
Lecture 5: ER Modelling - final examples
2024-03-15, 09:30 (2 hours)
Slides ER
- (5-1)
- (5-2)Entità deboli e chiavi con relazioni
- (5-3)Cardinalità ammesse per le relazioni con entità deboli
- (5-4)Example L'Università: chiavi per le entità deboli
- (5-5)Example L'Auto-Relazione mutuazione tra gli insegnamenti
- (5-6)Example La rivista
- (5-7)Example La rivista: considerazioni sullo storage di binari nei DBMS
- (5-8)Un altro modo per immagazzinare dati non strutturati (come i binari): cenni sugli object storage
link https://aws.amazon.com/it/what-is/object-storage/ - (5-9)Example La rivista: vari modi di modellare il dominio degli autori
Lecture 6: ER Optimization and Reorganization 1
2024-03-20, 08:30 (3 hours)
Slides ER-Relazionale
- (6-1)Example La rivista: quando una generalizzazione esprime molti più vincoli di una (o due) relazioni
- (6-2)Example La rivista: vari modi di modellare il sotto-diagramma uscita/pagina/riquadro/contenuto/articolo/figura
- (6-3)
- (6-4)Ristrutturazione dei diagrammi ER
- (6-5)Parametri di ottimizzazione: determinare lo schema di accesso ai dati dalle funzionalità previste
- (6-6)Cosa significa "cancellare" in una base di dati, quando le entità sono relazionate tra loro?
- (6-7)Ristrutturazione: Eliminazione attributi composti
- (6-8)Ristrutturazione: Eliminazione attributi con cardinalità
- (6-9)Example Vari modi per ottimizzare l'eliminazione di un attributo con cardinalità
- (6-10)Ristrutturazione: Attributi derivabili
- (6-11)Criteri per l'introduzione o l'eliminazione di un attributo derivabile
- (6-12)Ottimizzare le strutture ER con la ristrutturazione
- (6-13)Ristrutturazione: fusioni e decomposizioni
- (6-14)Decomposizione di entità
- (6-15)Example L'università: decomposizione dell'entità insegnamento
- (6-16)Example L'università: l'attributo sillabo... quando è meglio non decomporre troppo ed essere un po' NoSQL
- (6-17)Decomposizione di relazioni
- (6-18)Example L'azienda: decomposizione della relazione lavora per lo storico degli impieghi
Lecture 7: ER Optimization and Reorganization 2
2024-03-22, 09:30 (2 hours)
Slides ER-Relazionale
- (7-1)Ristrutturazione: Eliminazione delle gerarchie
- (7-2)Criteri e metodi per l'eliminazione di una gerarchia
- (7-3)Fusione padre-figli: metodo, vincoli, vantaggi, svantaggi
- (7-4)Example Le fusione padre-figli nell'esempio CdL
- (7-5)Fusione figli-padre: metodo, vincoli, vantaggi, svantaggi
- (7-6)Introduzione di relazioni: metodo, vincoli, vantaggi, svantaggi
- (7-7)Example La (possibile, ma non ottimale) introduzione di relazioni nell'esempio rivista per la struttura contenuto/articolo/figura
- (7-8)Example L'introduzione di relazioni nell'esempio rivista per la struttura autore/dipendente/freelance
- (7-9)Example Il supermarket: ottimizzazione e ristrutturazione del modello ER
material ER_Examples - Supermarket - Ristrutturato - (7-10)Example Le fusione figli-padre nell'esempio supermarket per la struttura prodotto/base/composto
Lecture 8: Logic Modelling 1
2024-03-27, 08:30 (3 hours)
Slides ER-Relazionale
- (8-1)Cenni sul modello relazionale
- (8-2)Trasformazione ER - Relazionale: entità
- (8-3)Migrazione delle chiavi dal modello ER a quello relazionale
- (8-4)Criteri per la scelta della chiave primaria a livello relazionale (DBMS)
- (8-5)Introduzione di nuove chiavi primarie interne alle tabelle
- (8-6)Trasformazione ER - Relazionale: relazioni
- (8-7)Example Confronto tra informazione veicolata dalla struttura relazionale e rappresentata nel diagramma ER
- (8-8)Chiavi per le tabelle di relazione
- (8-9)Mantenere tutti i vincoli di cardinalità nel DBMS: prime idee
- (8-10)Ottimizzazione delle relazioni
- (8-11)Fusione di tabelle relazionali in base alla cardinalità della relazione rappresentata
- (8-12)Example Confronto tra informazione veicolata dalla struttura relazionale ottimizzata e rappresentata nel diagramma ER
- (8-13)Trasformazione ER - Relazionale: entità deboli
- (8-14)
- (8-15)Example L'università: dal modello concettuale ristrutturato a quello logico
material ER_Examples - CdL
Lecture 9: Conceptual and Logic Modelling - final examples 1
2024-04-03, 08:30 (3 hours)
- (9-1)
- (9-2)Example L'azienda: dal modello concettuale ristrutturato a quello logico
material ER_Examples - Azienda - (9-3)Example Il supermarket:ottimizzazione e ristrutturazione del modello ER
material ER_Examples - Supermarket - (9-4)Example Il supermarket: dal modello concettuale ristrutturato a quello logico
material ER_Examples - Supermarket - (9-5)
- (9-6)Example La rivista: dal modello concettuale ristrutturato a quello logico
material ER_Examples - Rivista - (9-7)
- (9-8)
- (9-9)Example La banca: dal modello concettuale ristrutturato a quello logico
material ER_Examples - Banca
Lecture 10: Conceptual and Logic Modelling - final examples 2
2024-04-05, 09:30 (2 hours)
- (10-1)
- (10-2)Example Perchè è necessario modellare il concetto di copia della pubblicazione (invece di tenerne solo un contatore)?
- (10-3)Example Vari modi di modellare il prestito... che collasseranno sulla stessa struttura relazionale
- (10-4)Example La biblioteca: ottimizzazione e ristrutturazione del modello ER
material ER_Examples - Biblioteca - (10-5)Example Eliminare la generalizzazione sulla pubblicazione: ottimizzazione degli attributi
- (10-6)Example Vari modi di trasformare l'attributo multivalore parola_chiave: vantaggi e svantaggi
- (10-7)Example La biblioteca: dal modello concettuale ristrutturato a quello logico
material ER_Examples - Biblioteca - (10-8)Example Vari modi di rendere nel modello relazionale l'attributo (enumerativo) genere: vantaggi, svantaggi... e la soluzione più "furba"
- (10-9)
- (10-10)Example Modellare correttamente il ruolo di un partecipante nel servizio streaming
- (10-11)Example Il servizio di streaming: dal modello concettuale a quello logico
material ER_Examples - Streaming - (10-12)Example Similitudini e differenze: come riutilizzare strutture concettuali e ottimizzazioni logiche in modelli diversi
Lecture 11: Introduction to SQL
2024-04-10, 08:30 (3 hours)
Slides SQL
- (11-1)Presentazione del DBMS MySQL
- (11-2)Installazione di MySQL server
- (11-3)Installazione e uso di MySQL Workbench
- (11-4)MySQL: scelta dello storage engine
link https://dev.mysql.com/doc/refman/8.3/en/storage-engines.html - (11-5)Presentazione di SQL
- (11-6)DDL, DML e QL
- (11-7)I tipi di dato built-in di SQL
- (11-8)Tipi di dato SQL: numerici
- (11-9)Tipi di dato SQL: binari
- (11-10)Example Uso corretto dei tipi binari e corrispondenze con i linguaggi di programmazione
- (11-11)Tipi di dato SQL: carattere
- (11-12)Tipi di dato SQL: temporali
- (11-13)Example Uso corretto dei tipi temporali e corrispondenze con i linguaggi di programmazione
- (11-14)Tipi di dato SQL: booleani
- (11-15)La logica a tre valori dell'SQL
- (11-16)Tipi di dato SQL: il valore null
- (11-17)Tipi di dato in MySQL: differenze ed estensioni
link https://dev.mysql.com/doc/refman/8.3/en/data-types.html - (11-18)Creazione di domini in SQL
- (11-19)La sintassi di base degli statement SQL
- (11-20)La parola chiave DEFAULT nei domini
- (11-21)Vincoli di tipo CHECK nei domini
- (11-22)Modifica e rimozione di domini
- (11-23)Operatori e funzioni comuni dell'SQL
- (11-24)Funzioni scalari SQL
- (11-25)Example Funzioni scalari in MySQL
link https://dev.mysql.com/doc/refman/8.3/en/numeric-functions.html - (11-26)Funzioni stringa SQL
- (11-27)Example Funzioni stringa in MySQL
link https://dev.mysql.com/doc/refman/8.3/en/string-functions.html - (11-28)I tre delimitatori usati in MySQL: virgolette ("), apici (') e backtick (`)
- (11-29)Funzioni temporali SQL
- (11-30)Example Funzioni temporali in MySQL
link https://dev.mysql.com/doc/refman/8.3/en/date-and-time-functions.html - (11-31)Example Operatori di confronto (My)SQL
link https://dev.mysql.com/doc/refman/8.3/en/comparison-operators.html - (11-32)Operatori di confronto SQL: BETWEEN e IN
- (11-33)Operatori di confronto SQL: LIKE
- (11-34)Operatori di confronto SQL: IS NULL
Lecture 12: SQL: database and table creation
2024-04-12, 09:30 (2 hours)
Slides SQL
- (12-1)Gestione dell'utenza in un DBMS
- (12-2)MySQL: utenti host-specific e sicurezza
- (12-3)Example Uso dei comandi CREATE USER e DROP USER
- (12-4)Example Il modo più comune per interfacciare un'applicazione con un DBMS
- (12-5)Creazione di un database
- (12-6)Example Uso dei comandi CREATE DATABASE e DROP DATABASE
- (12-7)Creazione di tabelle
- (12-8)Example Uso base dei comandi CREATE TABLE e DROP TABLE
- (12-9)MySQL: identificatori case sensitive in base alla piattaforma!
- (12-10)La parola chiave DEFAULT sulle colonne
- (12-11)Example Il create/alter table wizard di MySQL Workbench: alcuni trucchi per sfruttarlo e imparare
- (12-12)Gestione dei permessi in un DBMS
- (12-13)Example Uso dei comandi GRANT e REVOKE
- (12-14)Example Lo user manager di MySQL Workbench: caratteristiche e limiti
- (12-15)Presentazione dei progetti di esame
Lecture 13: SQL: constraints 1
2024-04-17, 08:30 (3 hours)
Slides SQL
- (13-1)Vincoli su tabelle
- (13-2)Assegnare un nome ai vincoli
- (13-3)Introduzione alle transazioni
- (13-4)Differibilità dei vincoli
- (13-5)Specifica di chiavi: PRIMARY KEY e UNIQUE
- (13-6)Indici creati nel database dai vincoli PRIMARY KEY e UNIQUE
- (13-7)Tecniche speciali per la generazione di chiavi primarie
- (13-8)MySQL: caratteristiche delle colonne auto_increment
link https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html - (13-9)Vincoli NOT NULL sulle colonne
- (13-10)Example Le combinazioni di DEFAULT e NOT NULL e il loro significato
- (13-11)Chiavi esterne e vincoli di integrità referenziale: FOREIGN KEY ... REFERENCES
- (13-12)Example Relazioni ER, riferimenti relazionali e FOREIGN KEY SQL
- (13-13)Vincoli sui dati (e anche sui metadati) indotti dalle FOREIGN KEY
- (13-14)Indici necessari e opzionali per realizzare una FOREIGN KEY
- (13-15)Example Perchè una FOREIGN KEY richiede (in MySQL) due indici?
- (13-16)Auto-relazioni e FOREIGN KEY cicliche: come definirle?
- (13-17)Example Aggiungere una FOREIGN KEY a una tabella (post-creazione) in MySQL
Lecture 14: SQL: constraints 2
2024-04-19, 09:30 (2 hours)
Slides SQL
- (14-1)Vincoli di integrità referenziale: il costrutto MATCH
- (14-2)Example Chiavi esterne e modifiche ai dati: come preservare l'integrità referenziale?
- (14-3)Vincoli di integrità referenziale: azioni ON DELETE e ON UPDATE
- (14-4)Example Le combinazioni di azioni più frequenti (e più sensate) per ON DELETE e ON UPDATE
- (14-5)Example Creazione dei vincoli in SQL: considerazioni sulle azioni ON UPDATE e ON DELETE
- (14-6)Vincoli CHECK sulle tabelle
- (14-7)Vincoli CHECK in MySQL 8
- (14-8)Modifica e rimozione di vincoli in MySQL
- (14-9)Example Cancellare un vincolo UNIQUE usando DROP INDEX in MySQL
- (14-10)
Lecture 15: Final exercises on database design
2024-04-24, 08:30 (3 hours)
- (15-1)Example Scrivere uno script per la (ri)generazione di un intero database
- (15-2)Example Il Campionato: specifiche
- (15-3)Example Il Campionato: progettazione concettuale
- (15-4)Example Il Campionato: ristrutturazione ER
- (15-5)Example Il Campionato: traduzione nel modello relazionale
- (15-6)
Lecture 16: SQL: base queries
2024-05-03, 09:30 (2 hours)
Slides SQL
Material SQL_Examples - Campionati
- (16-1)Inserimento di tuple in una tabella: INSERT INTO ... VALUES
- (16-2)Specificare le colonne nell'inserimento e omettere i valori calcolati o con default
- (16-3)Example Violazione di vincoli e relativi messaggi di errore di MySQL
- (16-4)Example Visualizzare rapidamente il contenuto di una tabella nel Workbench
- (16-5)Example Inserire rapidamente un record col Workbench
- (16-6)Creazione di tabelle calcolate: INSERT INTO ... SELECT
- (16-7)Inserimento di record multipli con MySQL
- (16-8)Modifica dei record di una tabella: UPDATE ... SET ... WHERE
- (16-9)Caratteristiche e limiti delle espressioni di aggiornamento
- (16-10)Aggiornamenti con join in MySQL
- (16-11)Sintassi elementare per le clausole WHERE
- (16-12)Example Modificare rapidamente un record col Workbench
- (16-13)Eliminazione dei record di una tabella DELETE FROM ... WHERE
- (16-14)Svuotare una tabella con una DELETE senza WHERE
- (16-15)Example Cancellare rapidamente un record col Workbench
- (16-16)I tre possibili risultati di una query: tabella, lista e valore
- (16-17)Interrogazioni di base: SELECT ... FROM ... WHERE
- (16-18)La clausola FROM
- (16-19)Alias per i nomi di tabella
- (16-20)Example Perchè usare gli alias di tabella?
- (16-21)La clausola WHERE
- (16-22)La clausola SELECT
- (16-23)Colonne calcolate
- (16-24)Alias per i nomi di colonna
- (16-25)Example Perchè usare gli alias di colonna?
- (16-26)Eliminazione dei duplicati: DISTINCT
Lecture 17: SQL: subqueries and inner joins
2024-05-08, 08:30 (3 hours)
Slides SQL
Material SQL_Examples - Campionati
- (17-1)Usare la funzione MySQL last_insert_id() per estrarre il valore dell'ultima chiave auto_increment generata
- (17-2)Ordinamento dei risultati di una query: la clausola ORDER BY
- (17-3)Example Ordinamento su colonne calcolate o non estratte dalla query
- (17-4)Limitazione dell'output: la clausola (non standard) LIMIT
- (17-5)Example Paginazione (efficiente) dei risultati con la clausola LIMIT
- (17-6)Sotto-query semplici
- (17-7)Example Sotto-query scalari usate nelle clausole WHERE e SELECT
- (17-8)Sotto-query correlate e visibilità degli identificatori
- (17-9)Example Sotto-query lista usate con l'operatore IN
- (17-10)Example Sotto-query usate con un operatori di confronto
- (17-11)Uso dei quantificatori ANY e ALL con query lista
- (17-12)Join tra tabelle
- (17-13)Join impliciti: condizioni di join e clausola WHERE
- (17-14)Example Condizioni di join semplici e multiple
- (17-15)Example Mescolare condizioni di filtro e di join nella clausola WHERE
- (17-16)Join espliciti con l'operatore JOIN
- (17-17)Join interni: l'operatore INNER JOIN e le sue varianti
- (17-18)Example Spostare le condizioni di WHERE nel JOIN
- (17-19)Example Scrivere JOIN multipli concatenati
Lecture 18: SQL: outer joins and record aggregation
2024-05-10, 09:30 (2 hours)
Slides SQL
Material SQL_Examples - Campionati
- (18-1)Problemi con i join effettuati con le condizioni WHERE: includere nei risultati record non relazionati
- (18-2)Join esterni: l'operatore OUTER JOIN e le sue varianti
- (18-3)Example Scrivere JOIN tra sotto-JOIN (con parentesi di raggruppamento)
- (18-4)Aggregazione di record
- (18-5)Gli operatori aggregati: COUNT, SUM, AVG, MIN, MAX
- (18-6)Modificatori ALL e DISTINCT per gli operatori aggregati
- (18-7)Example Le molte modalità dell'operatore COUNT: COUNT(*), COUNT(e), COUNT(DISTINCT e)
- (18-8)Trattamento dei valori NULL con gli operatori aggregati
- (18-9)Limitazioni della clausola SELECT con gli operatori aggregati
- (18-10)Example Il partizionamento: quando l'aggregazione globale non è sufficiente
- (18-11)Partizionamento di record: la clausola GROUP BY
- (18-12)Uso degli operatori aggregati con la clausola GROUP BY
- (18-13)Limitazioni della clausola SELECT in presenza della clausola GROUP BY
- (18-14)Raggruppamento su più colonne
- (18-15)Example Ordinamento dei risultati nelle query con raggruppamento
- (18-16)Example Usare espressioni complesse come criterio di join
- (18-17)Condizioni sui gruppi di record: la clausola HAVING
- (18-18)Example Perchè c'è bisogno di una clausola nuova per delle condizioni di filtro? La differenza tra WHERE e HAVING
Lecture 19: SQL queries - advanced examples
2024-05-15, 08:30 (3 hours)
Slides SQL
Material SQL_Examples - Campionati
- (19-1)Richiami sulle sotto-query scalari
- (19-2)Richiami sulle sotto-query lista (o colonna)
- (19-3)Sotto-query riga
- (19-4)Uso del predicato EXISTS con sotto-query generiche
- (19-5)Example Esercitazione finale sulle query: interrogazioni sul campionato di calcio
- (19-6)Example Creare query complesse usando raggruppamenti e sotto-query
- (19-7)Combinazione di query tramite operatori insiemistici: UNION, INTERSECT, MINUS
- (19-8)Example Realizzare una query differenza senza l'operatore MINUS: un uso particolare di NOT EXISTS
- (19-9)Adattare e fondere tabelle: il caso particolare dell'operatore UNION
- (19-10)Example Sotto-query correlate e scorrelate: considerazioni di efficienza
- (19-11)Example Soluzioni alternative alle sotto-query: usare i join in maniera creativa
Lecture 20: Advanced SQL: procedures and functions
2024-05-17, 09:30 (2 hours)
Slides SQL
Material SQL_Examples - Campionati
- (20-1)Le viste
- (20-2)Creazione di viste: CREATE VIEW
- (20-3)Example Uso delle viste nelle query (per modularizzare e semplificare)
- (20-4)Example Uso delle viste per limitare l'accesso ai dati
- (20-5)Example Usare l'istruzione CREATE TABLE AS per la creazione di snapshot sui dati
- (20-6)Le Stored Procedures e Functions
- (20-7)Le Stored Procedures e Functions in MySQL
- (20-8)Il terminatore di istruzioni nelle procedure
- (20-9)Creazione di una procedura: CREATE PROCEDURE
- (20-10)Codice per le procedure: blocchi BEGIN...END
- (20-11)Codice per le procedure: blocchi e label
- (20-12)Uso di statement SQL nelle procedure
- (20-13)Example Vari usi del costrutto SELECT in una procedura: per query scalari, colonna, riga e generiche
- (20-14)Invocazione di procedure: CALL
- (20-15)Example Procedure come query parametriche
- (20-16)Parametri di input nelle procedure
- (20-17)Example Creazione di tabelle temporanee (nelle procedure)
- (20-18)Costrutti di flusso per le procedure: IF...THEN...ELSE
- (20-19)Parametri di output nelle procedure
- (20-20)Example Invocare una procedura con parametri OUT e impostarne correttamente il valore
- (20-21)Impostare il valore di una variabile con SET
- (20-22)Example Creare variabili globali (di sessione) nell'interprete SQL: la sintassi @variabile
- (20-23)La clausola INTO del costrutto SELECT
- (20-24)Dichiarare variabili locali in una procedura con DECLARE
- (20-25)Creazione di una funzione: CREATE FUNCTION
- (20-26)Parametri e tipo di ritorno (RETURNS) nelle funzioni
- (20-27)Restituire un valore da una funzione con RETURN
- (20-28)Example Uso di funzioni user-defined nelle query
- (20-29)Example Creare procedure e funzioni complesse per incorporare la logica di accesso e manipolazione del database
Lecture 21: Advanced SQL: cursors e triggers
2024-05-22, 08:30 (3 hours)
Slides SQL
Material SQL_Examples - Campionati
- (21-1)Costrutti di flusso per le procedure: IF...THEN...ELSE, CASE...WHEN, WHILE, LOOP, REPEAT...UNTIL
- (21-2)Le istruzioni LEAVE e ITERATE
- (21-3)Cenni sulle conditions in SQL
- (21-4)Cenni sugli stati SQL (SQLSTATE)
- (21-5)Segnalare una condizione anomala in una procedura: SIGNAL
- (21-6)Example Creare procedure e funzioni complesse per incorporare la logica di controllo e manipolazione del database, parte 1
- (21-7)Le conditions SQL e gli handler
- (21-8)Dichiarazione di handler: DECLARE HANDLER
- (21-9)Similitudini e differenze tra gli handler SQL e i blocchi try di JAVA
- (21-10)EXIT e CONTINUE handlers
- (21-11)Gestire una condizione anomala e risegnalarla: RESIGNAL
- (21-12)Muoversi tra i record restituiti da una query: i cursori
- (21-13)Gestione del ciclo di vita di un cursore: DACLARE CURSOR, OPEN, FETCH, CLOSE
- (21-14)Gestire la condizione di fine record (NOT FOUND) con un handler
- (21-15)Example Creare procedure e funzioni complesse per incorporare la logica di controllo e manipolazione del database, parte 2
- (21-16)I Trigger
- (21-17)Creazione di un trigger: CREATE TRIGGER
- (21-18)Eventi gestibili da un trigger: INSERT, UPDATE, DELETE
- (21-19)Tempo di esecuzione dei trigger: AFTER e BEFORE
- (21-20)Trigger multipli e ordine di esecuzione (FOLLOWS e PRECEDES)
- (21-21)Usi comuni dei trigger: controllo, completamento, calcolo
- (21-22)I record NEW e OLD nel codice dei trigger (in base all'evento gestito)
- (21-23)Example Esempi di trigger di controllo e calcolo per il database dei campionati, parte 1
Lecture 22: Databases and programming languages: Java
2024-05-29, 08:30 (3 hours)
Slides SQL
Material Java_JDBC_Example_MySQL
- (22-1)Example Esempi di trigger di controllo e calcolo per il database dei campionati, parte 2
- (22-2)Le Transazioni
- (22-3)Gestire le transazioni: START TRANSACTION, COMMIT, ROLLBACK
- (22-4)Autocommit delle transazioni
- (22-5)
- (22-6)Interfacciamento dei DBMS con i linguaggi di programmazione
- (22-7)JAVA e i DBMS
- (22-8)
- (22-9)Specifica e caricamento di un driver DBMS con il JDBC
- (22-10)Le connection string JDBC
- (22-11)Example Connessione a una base di dati con il JDBC tramite il DriverManager
- (22-12)Example Liberare le risorse JDBC: chiusura corretta degli oggetti
- (22-13)Example Creare uno Statement JDBC
- (22-14)Example Interrogare la base di dati con uno Statement JDBC (executeQuery)
- (22-15)Example Gestione dei risultati di una query tramite i ResultSet JDBC
- (22-16)Example Inserire/Aggiornare record tramite una Statement JDBC (executeUpdate)
- (22-17)Query parametriche: i problemi degli statement costruiti con concatenazioni di stringa
- (22-18)La SQL injection
- (22-19)Precompilazione di statement: i PreparedStatement
- (22-20)Example Definire e impostare i parametri di un PreparedStatement
- (22-21)Example Eseguire un PreparedStatement
Lecture 23: Databases and programming languages: advanced topics
2024-05-31, 09:30 (2 hours)
Slides SQL
- (23-1)Example Specificare le colonne auto-generate da leggere dopo una INSERT
- (23-2)Example Leggere gli ID auto-generati con al getGeneratedKeys
- (23-3)Chiamare una stored procedure da Java: i CallableStatement
- (23-4)Example Predisporre un CallableStatement con parametri IN
- (23-5)Example Eseguire un CallableStatement
- (23-6)Example Leggere la tabella generata da una stored procedure
- (23-7)Example Registrare dei parametri OUT per un CallableStatement e leggerne il valore dopo l'esecuzione
- (23-8)Example Eseguire una chiamata a funzione tramite un CallableStatement
- (23-9)Example Gestire le transazioni in Java: disabilitare l'autocommit
- (23-10)Example Gestire le transazioni in Java: i metodi commit e rollback della Connection
- (23-11)PHP e i DBMS
- (23-12)Connessione a una base di dati in PHP
link https://www.php.net/manual/en/book.mysqli.php
link https://www.php.net/manual/en/book.pdo.php - (23-13)Interrogare una base di dati in PHP
- (23-14)Gestione dei risultati di una query in PHP
- (23-15)
- (23-16)
- (23-17)
- (23-18)Performance nell'accesso ai dati per applicazioni concorrenti: il problema delle connessioni
- (23-19)Riutilizzare le connessioni JDBC: il connection pooling
- (23-20)Example Realizzare il connection pooling con il JDBC e la libreria Apache Commons DBCP2
link https://commons.apache.org/proper/commons-dbcp
material Java_JDBC_CP_Example_MySQL
Lecture 24: Discussion on final projects
2024-06-05, 08:30 (2 hours)
- (24-1)Chiarimenti relativi ai progetti d'esame e discussione con i singoli gruppi