Programma
LEZIONI
1. Introduzione al corso, programma, esami, libri di testo [2 ore]
2. Concetti di Base: Basi di Dati, Sistemi informativi, Modelli dei dati, Metadati, Indipendenza fisica, DBMS [4 ore]
3. Basi di dati relazionali: concetti di base, schemi e istanze; linguaggi, algebra relazionale, SQL; vincoli di unicità, chiave primaria; interrogazioni semplici; manipolazione dei dati [12 ore]
4. Strutturazione delle Basi di dati: chiavi esterne e vincoli di integrità referenziale; composizione di interrogazioni con più tabelle; indipendenza logica e viste [8 ore]
5. Progetto di Basi di Dati: ciclo di vita, fasi del progetto; Modello Entità-Relazione e progetto Concettuale; Progetto logico ER-relazionale; Gerarchie di generalizzazione e modello EER; Ridondanza dei dati ed anomalie; Dipendenze funzionali; Indicizzazione [16 ore]
6. Interrogazioni complesse: operatori aggregativi; interrogazioni nidificate; funzioni di manipolazione [4 ore]
7. Sistemi di Gestione di Basi di Dati: generalità; utenti e linguaggi di accesso; funzionalità, moduli e servizi di un DBMS; consistenza; backup; sicurezza; concorrenza e transazioni; la base di dati in architetture applicative; evoluzione dei DBMS [4 ore]
8. Introduzione alla normalizzazione [4 ore]
9. Progetto di avanzato di BD: discretizzazione di domini; rappresentazione di alberi e grafi/reti nelle BD [2 ore]
10. Progetto di applicazioni: Requisiti software e dati; Diagramma degli stati e progetto di GUI; Applicazioni Client-Server con GUI su DBMS. [4 ore]
ESERCITAZIONI
11. Utilizzo pratico di un sistema di gestione di Basi di Dati (postgres): istallazione, elementi base di amministrazione, interfacce grafiche, inserimento ed esecuzione di codice [4 ore]
12. Esercitazioni SQL: creazione di basi di dati, tipi di dato, definizione di tabelle, vincoli di integrità, inserimento e modifica dati, interrogazioni, utilizzo funzioni, costruzione interrogazioni complesse [18 ore]
13. Configurazione client-server (es.: ODBC) e sviluppo di applicazioni con ambienti distinti per client e server; analisi casi di studio [8 ore]
Prerequisiti
Conoscenze basilari dei seguenti argomenti:
1. tecniche di programmazione
2. strutture dati
3. architettura dei sistemi di elaborazione
4. sistemi operativi
Testi di riferimento
Testi:
L. Allulli, U. Nanni, Basi di Dati - Progetto, sviluppo ed utilizzo pratico, Hoepli, Settembre 2017.
U. Nanni, Un esercizio sulla Normalizzazione (Dispensa didattica per il corso di Basi di Dati), Dicembre 2019.
U. Nanni, Slides usate nelle lezioni.
Materiale aggiuntivo:
U. Nanni, Esercizi su Progetto di Basi di Dati ed SQL (Dispensa didattica per il corso di Basi di Dati), Settembre 2017.
U. Nanni, esempi di codice e soluzione commentata di esercizi.
Modalità insegnamento
Il modello didattico prevalente è la lezione frontale (in presenza e/o a distanza) avente come obiettivo il trasferimento dei principali concetti relativi a: 1. formalismi utilizzati nelle basi di dati, 2. metodologie di rappresentazione e di progetto, 3. tecnologie di sviluppo correlate alle basi di dati.
Gli aspetti metodologici (progetto) sono accompagnati da esempi sviluppati da zero che portano alla discussione di alternative con gli allievi.
Le esercitazioni sono illustrate e poi eseguite su elaboratore, richiedendo agli studenti di sviluppare la loro soluzione contestualmente, con la possibilità di interagire in qualunque momento con il docente.
Frequenza
La frequenza è facoltativa anche se fortemente consigliata.
Modalità di esame
1. Prova scritta. 2. Discussione (orale) di un progetto.
La modalità di esame prevede una valutazione dello studente in due parti:
1. Prova scritta - peso: 2/3
2. Project work - peso: 1/3
1. La prova scritta contiene domande sul programma didattico erogato in aula e richiede la risoluzione di alcuni esercizi. La durata della prova scritta è di 90 minuti. La prova scritta permette di valutare conoscenza e comprensione individuali, capacità di applicare le conoscenze acquisite.
2. Il project work prevede un lavoro individuale o in gruppo, composto al massimo da 3 studenti, che richiede di produrre la stesura di un documento di ANALISI/PROGETTO ed una parte IMPLEMENTATIVA (software funzionante su un PC). La struttura del documento è nota (discussa a lezione e schematizzata nel sito del corso). La consegna della relazione e la presentazione sul computer richiedono a ciascuno studente di esporre una parte del progetto. Tale presentazione consente di valutare abilità di comunicazione, capacità di applicare le conoscenze acquisite, autonomia di giudizio, capacità di team-working degli studenti e la loro capacità di apprendere le competenze pratiche richieste per lo sviluppo di un progetto concreto.
Il voto massimo (30 e lode) viene assegnato con un punteggio pari a 30 e lode nella prova scritta e un punteggio massimo nel project work.
Bibliografia
Altri testi di consultazione:
P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, Basi di Dati, 4a ed., McGraw-Hill Education (Italy), 2014.
R. Elmasri, S.B. Navathe: Sistemi di basi di dati - Fondamenti. Addison Wesley, 2011.
Modalità di erogazione
Il modello didattico prevalente è la lezione frontale (in presenza) avente come obiettivo il trasferimento dei principali concetti relativi a: 1. formalismi utilizzati nelle basi di dati, 2. metodologie di rappresentazione e di progetto, 3. tecnologie di sviluppo correlate alle basi di dati.
Gli aspetti metodologici (progetto) sono accompagnati da esempi sviluppati da zero che portano alla discussione di alternative con gli allievi.
Le esercitazioni sono illustrate e poi eseguite su elaboratore, richiedendo agli studenti di sviluppare la loro soluzione contestualmente, con la possibilità di interagire in qualunque momento con il docente.