Diario delle Lezioni - A.A. 2024/2025
Lezione 1: Introduzione al corso
26/02/2025, ore 08:30 (3 ore)
- (1-1)Presentazione del corso
- (1-2)Perché le basi di dati sono importanti?
- (1-3)Esempio 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)Esempio I DBMS serverless come SQLite
- (1-6)Perché usiamo (ancora) il modello relazionale?
- (1-7)E le basi di dati NoSQL?
- (1-8)Esempio L'affermazione delle basi di dati document-oriented come MongoDB
- (1-9)Esempio L'affermazione delle basi di dati a grafo nelle applicazioni di data analytics
- (1-10)SQL e NoSQL sono veramente mondi isolati?
- (1-11)Esempio 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)Esempio L'Università: analisi dei requisiti
Lezione 2: Modellazione ER 1
28/02/2025, ore 09:30 (2 ore)
Slides ER
- (2-1)La progettazione concettuale
- (2-2)I diagrammi Entità - Relazione
- (2-3)Entità nei diagrammi ER
- (2-4)Esempio L'Università: entità
- (2-5)Attributi nei diagrammi ER
- (2-6)Esempio Attributi ed Entità: come non confondere i due concetti
- (2-7)Esempio L'Università: attributi
- (2-8)Attributi composti
- (2-9)Esempio 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)Esempio L'Università: chiavi
- (2-15)Esempio Entità (apparentemente) prive di chiave
- (2-16)Esempio L'Azienda: analisi dei requisiti
Lezione 3: Modellazione ER 2
05/03/2025, ore 08:30 (3 ore)
Slides ER
- (3-1)Esempio 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)Generalizzazioni e chiavi
- (3-6)Esempio Il supermercato: entità (e generalizzazioni), attributi e chiavi
- (3-7)Relazioni
- (3-8)Relazioni non binarie
- (3-9)Auto-Relazioni
- (3-10)Ruoli nelle relazioni
- (3-11)Esempio Il supermercato: relazioni
- (3-12)Relazioni e generalizzazioni
- (3-13)Attributi sulle relazioni
- (3-14)Esempio Il supermercato: attributi sulle relazioni
Lezione 4: Modellazione ER 3
06/03/2025, ore 08:30 (2 ore)
Slides ER
- (4-1)Esempio L'azienda: relazioni
- (4-2)Esempio L'azienda: attributi sulle relazioni
- (4-3)Esempio Modellare il concetto di "storico" per un'associazione: soluzioni e considerazioni
- (4-4)Cardinalità delle relazioni
- (4-5)
Lezione 5: Esercitazione finale sui diagrammi ER
07/03/2025, ore 09:30 (2 ore)
Slides ER
- (5-1)
- (5-2)
- (5-3)Entità deboli e chiavi con relazioni
- (5-4)Cardinalità ammesse per le relazioni con entità deboli
- (5-5)Esempio L'Università: chiavi per le entità deboli
- (5-6)Esempio L'Auto-Relazione mutuazione tra gli insegnamenti
- (5-7)Esempio La rivista
- (5-8)La rivista: attributi derivabili
- (5-9)Esempio La rivista: considerazioni sullo storage di binari nei DBMS
Lezione 6: Ristrutturazione e Ottimizzazione dei diagrammi ER 1
12/03/2025, ore 08:30 (3 ore)
Slides ER-Relazionale
- (6-1)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/ - (6-2)Esempio La rivista: quando una generalizzazione esprime molti più vincoli di una (o due) relazioni
- (6-3)Esempio La rivista: vari modi di modellare il sotto-diagramma uscita/pagina/riquadro/contenuto/articolo/figura
- (6-4)Esempio La rivista: vari modi di modellare il dominio degli autori
- (6-5)
- (6-6)Ristrutturazione dei diagrammi ER
- (6-7)Parametri di ottimizzazione: determinare lo schema di accesso ai dati dalle funzionalità previste
- (6-8)Ristrutturazione: Eliminazione attributi composti
- (6-9)Ristrutturazione: Eliminazione attributi con cardinalità
- (6-10)Esempio Vari modi per ottimizzare l'eliminazione di un attributo con cardinalità
- (6-11)Esempio L'università: l'attributo sillabo... quando è meglio non decomporre troppo ed essere un po' NoSQL
- (6-12)Ristrutturazione: Attributi derivabili
- (6-13)Criteri per l'introduzione o l'eliminazione di un attributo derivabile
Lezione 7: Ristrutturazione e Ottimizzazione dei diagrammi ER 2
19/03/2025, ore 08:30 (3 ore)
Slides ER-Relazionale
- (7-1)Ottimizzare le strutture ER con la ristrutturazione
- (7-2)Ristrutturazione: fusioni e decomposizioni
- (7-3)Decomposizione di entità
- (7-4)Esempio L'università: decomposizione dell'entità insegnamento
- (7-5)Decomposizione di relazioni
- (7-6)Esempio L'azienda: decomposizione della relazione lavora per lo storico degli impieghi
- (7-7)Ristrutturazione: Eliminazione delle gerarchie
- (7-8)Criteri e metodi per l'eliminazione di una gerarchia
- (7-9)Fusione figli-padre: metodo, vincoli, vantaggi, svantaggi
- (7-10)Esempio Le fusione figli-padre nell'esempio supermarket per la generalizzazione totale prodotto/base/composto
- (7-11)Esempio Le fusione figli-padre nell'esempio CdL per la generalizzazione parziale studente/studente trasferito
- (7-12)Fusione padre-figli: metodo, vincoli, vantaggi, svantaggi
- (7-13)Esempio Le fusione padre-figli nell'esempio CdL per la generalizzazione totale persona/studente/docente
- (7-14)Esempio Le fusione padre-figli nell'esempio rivista per la generalizzazione totale contenuto/articolo/figura
- (7-15)Introduzione di relazioni: metodo, vincoli, vantaggi, svantaggi
- (7-16)Esempio La (possibile, ma non ottimale) introduzione di relazioni nell'esempio rivista per la generalizzazione totale contenuto/articolo/figura
- (7-17)Esempio L'introduzione di relazioni nell'esempio rivista per la generalizzazione totale autore/dipendente/freelance
- (7-18)Esempio Il supermarket: ottimizzazione e ristrutturazione del modello ER
materiale ER_Examples - Supermarket - Ristrutturato
Lezione 8: Progettazione logica 1
21/03/2025, ore 09:30 (2 ore)
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)Esempio 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)Esempio Confronto tra informazione veicolata dalla struttura relazionale ottimizzata e rappresentata nel diagramma ER
- (8-13)Trasformazione ER - Relazionale: entità deboli
Lezione 9: Esercitazione finale sulla progettazione concettuale e logica 1
26/03/2025, ore 08:30 (3 ore)
- (9-1)
- (9-2)Esempio L'università: dal modello concettuale ristrutturato a quello logico
materiale ER_Examples - CdL - (9-3)
- (9-4)Esempio L'azienda: dal modello concettuale ristrutturato a quello logico
materiale ER_Examples - Azienda - (9-5)Esempio Il supermarket:ottimizzazione e ristrutturazione del modello ER
materiale ER_Examples - Supermarket - (9-6)Esempio Il supermarket: dal modello concettuale ristrutturato a quello logico
materiale ER_Examples - Supermarket - (9-7)Esempio La rivista: ottimizzazione e ristrutturazione del modello ER
materiale ER_Examples - Rivista - (9-8)Esempio La rivista: dal modello concettuale ristrutturato a quello logico
materiale ER_Examples - Rivista
Lezione 10: Esercitazione finale sulla progettazione concettuale e logica 2
28/03/2025, ore 09:30 (2 ore)
- (10-1)
- (10-2)Esempio Perchè è necessario modellare il concetto di copia della pubblicazione (invece di tenerne solo un contatore)?
- (10-3)Esempio Vari modi di modellare il prestito... che collasseranno sulla stessa struttura relazionale
- (10-4)Esempio La biblioteca: ottimizzazione e ristrutturazione del modello ER
materiale ER_Examples - Biblioteca - (10-5)Esempio Eliminare la generalizzazione sulla pubblicazione: ottimizzazione degli attributi
- (10-6)Esempio Vari modi di trasformare l'attributo multivalore parola_chiave: vantaggi e svantaggi
- (10-7)Esempio La biblioteca: dal modello concettuale ristrutturato a quello logico
materiale ER_Examples - Biblioteca - (10-8)Esempio Vari modi di rendere nel modello relazionale l'attributo (enumerativo) genere: vantaggi, svantaggi... e la soluzione più "furba"
- (10-9)Esempio Il servizio di streaming: specifiche
- (10-10)Esempio Similitudini e differenze: come riutilizzare strutture concettuali e ottimizzazioni logiche in modelli diversi
Lezione 11: Introduzione a SQL
02/04/2025, ore 08:30 (3 ore)
Slides SQL
- (11-1)Esempio Il servizio di streaming: dalle specifiche al diagramma ER
materiale ER_Examples - Streaming - (11-2)Esempio Modellare correttamente il ruolo di un partecipante nel servizio streaming
- (11-3)Esempio Il servizio di streaming: dal modello concettuale a quello logico
materiale ER_Examples - Streaming - (11-4)Presentazione del DBMS MySQL
- (11-5)Installazione di MySQL server
- (11-6)Installazione e uso di MySQL Workbench
- (11-7)MySQL: scelta dello storage engine
link https://dev.mysql.com/doc/refman/8.3/en/storage-engines.html - (11-8)Presentazione di SQL
- (11-9)DDL, DML e QL
- (11-10)I tipi di dato built-in di SQL
- (11-11)Tipi di dato SQL: numerici
- (11-12)Tipi di dato SQL: binari
- (11-13)Esempio Uso corretto dei tipi binari e corrispondenze con i linguaggi di programmazione
- (11-14)Tipi di dato SQL: carattere
- (11-15)Tipi di dato SQL: temporali
- (11-16)Esempio Uso corretto dei tipi temporali e corrispondenze con i linguaggi di programmazione
- (11-17)Tipi di dato SQL: booleani
- (11-18)La logica a tre valori dell'SQL
- (11-19)Tipi di dato SQL: il valore null
- (11-20)Tipi di dato in MySQL: differenze ed estensioni
link https://dev.mysql.com/doc/refman/8.3/en/data-types.html - (11-21)Creazione di domini in SQL
- (11-22)La sintassi di base degli statement SQL
- (11-23)La parola chiave DEFAULT nei domini
- (11-24)Vincoli di tipo CHECK nei domini
- (11-25)Modifica e rimozione di domini
- (11-26)Operatori e funzioni comuni dell'SQL
- (11-27)Funzioni scalari SQL
- (11-28)Esempio Funzioni scalari in MySQL
link https://dev.mysql.com/doc/refman/8.3/en/numeric-functions.html - (11-29)Funzioni stringa SQL
- (11-30)Esempio Funzioni stringa in MySQL
link https://dev.mysql.com/doc/refman/8.3/en/string-functions.html - (11-31)I tre delimitatori usati in MySQL: virgolette ("), apici (') e backtick (`)
- (11-32)Funzioni temporali SQL
- (11-33)Esempio Funzioni temporali in MySQL
link https://dev.mysql.com/doc/refman/8.3/en/date-and-time-functions.html - (11-34)Esempio Operatori di confronto (My)SQL
link https://dev.mysql.com/doc/refman/8.3/en/comparison-operators.html - (11-35)Operatori di confronto SQL: BETWEEN e IN
Lezione 12: SQL: creazione di database e tabelle
04/04/2025, ore 09:30 (2 ore)
Slides SQL
- (12-1)Operatori di confronto SQL: LIKE
- (12-2)Operatori di confronto SQL: IS NULL
- (12-3)Gestione dell'utenza in un DBMS
- (12-4)MySQL: utenti host-specific e sicurezza
- (12-5)Esempio Uso dei comandi CREATE USER e DROP USER
- (12-6)Esempio Il modo più comune per interfacciare un'applicazione con un DBMS
- (12-7)Creazione di un database
- (12-8)Esempio Uso dei comandi CREATE DATABASE e DROP DATABASE
- (12-9)Creazione di tabelle
- (12-10)Esempio Uso base dei comandi CREATE TABLE e DROP TABLE
- (12-11)MySQL: identificatori case sensitive in base alla piattaforma!
- (12-12)Esempio Il create/alter table wizard di MySQL Workbench: alcuni trucchi per sfruttarlo e imparare
- (12-13)Gestione dei permessi in un DBMS
- (12-14)Esempio Uso dei comandi GRANT e REVOKE
- (12-15)Esempio Lo user manager di MySQL Workbench: caratteristiche e limiti
Lezione 13: SQL: i vincoli 1
09/04/2025, ore 08:30 (3 ore)
Slides SQL
- (13-1)Presentazione dei progetti di esame
- (13-2)La parola chiave DEFAULT sulle colonne
- (13-3)Vincoli su tabelle
- (13-4)Assegnare un nome ai vincoli
- (13-5)Introduzione alle transazioni
- (13-6)Differibilità dei vincoli
- (13-7)Specifica di chiavi: PRIMARY KEY e UNIQUE
- (13-8)Indici creati nel database dai vincoli PRIMARY KEY e UNIQUE
- (13-9)Tecniche speciali per la generazione di chiavi primarie
- (13-10)MySQL: caratteristiche delle colonne auto_increment
link https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html - (13-11)Vincoli NOT NULL sulle colonne
- (13-12)Esempio Le combinazioni di DEFAULT e NOT NULL e il loro significato
- (13-13)Chiavi esterne e vincoli di integrità referenziale: FOREIGN KEY ... REFERENCES
- (13-14)Esempio Relazioni ER, riferimenti relazionali e FOREIGN KEY SQL
- (13-15)Vincoli sui dati (e anche sui metadati) indotti dalle FOREIGN KEY
- (13-16)Indici necessari e opzionali per realizzare una FOREIGN KEY
- (13-17)Esempio Perchè una FOREIGN KEY richiede (in MySQL) due indici?
- (13-18)Auto-relazioni e FOREIGN KEY cicliche: come definirle?
Lezione 14: SQL: i vincoli 2
11/04/2025, ore 09:30 (2 ore)
Slides SQL
- (14-1)Vincoli di integrità referenziale: il costrutto MATCH
- (14-2)Esempio 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)Esempio Le combinazioni di azioni più frequenti (e più sensate) per ON DELETE e ON UPDATE
- (14-5)Esempio 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
- (14-9)
- (14-10)Esempio Scrivere uno script per la (ri)generazione di un intero database
Lezione 15: Esercitazione finale sulla progettazione di un database
16/04/2025, ore 08:30 (3 ore)
- (15-1)Esempio Il Campionato: specifiche
- (15-2)Esempio Il Campionato: progettazione concettuale
- (15-3)Esempio Il Campionato: ristrutturazione ER
- (15-4)Esempio Il Campionato: traduzione nel modello relazionale
- (15-5)