Obiettivi formativi: Questo insegnamento ha lo scopo di introdurre i sistemi informativi e di descrivere i modelli dei dati e le tecniche di progettazione concettuale, logica e fisica per lo sviluppo e la gestione di basi di dati.
Settori scientifico-disciplinari: INF/01, ING-INF/05
Crediti: 12
Modulo: Unico
Durata: Annuale, 96 ore (lezione frontale e attività di laboratorio)
Frequenza: Non sono previsti obblighi di frequenza
Docente: Dott. Maurizio Maffi
Programma:
01. Introduzione ai sistemi informativi:
01.01 Gestione della conoscenza e sistemi informativi.
01.02 Data Base Management Systems (DBMS).
01.03 Ciclo di vita dei DBMS.
02. Progettazione concettuale di basi di dati:
02.01 Analisi dei requisiti.
02.02 Modello Entity-Relationship (E-R).
02.03 Strategie di progetto.
02.04 Integrazione di schemi.
03. Progettazione logica di basi di dati:
03.01 Modello relazionale.
03.02 Ottimizzazione di modelli E-R.
03.03 Ristrutturazione di modelli E-R.
03.04 Dal modello E-R al modello relazionale.
03.05 Normalizzazione.
04. Linguaggi di interrogazione:
04.01 Algebra relazionale: operatori di base.
04.02 Algebra relazionale: operatori ausiliari.
04.03 Calcolo relazionale.
04.04 Structured Query Language (SQL).
04.05 Subquery in SQL.
04.06 Linguaggio di definizione dei dati in SQL.
04.07 Linguaggio di aggiornamento dei dati in SQL.
04.08 Viste in SQL.
05. Memoria principale, memoria secondaria e gestione dei file:
05.01 Memoria secondarie e gestione dei buffer.
05.02 Organizzazione dei file.
05.03 Indicizzazione.
05.04 B-tree.
05.05 B+-tree.
05.06 Organizzazioni hash statiche.
05.07 Organizzazione hash dinamiche.
06. Architettura dei DBMS:
06.01 Transazioni e anatomia dei DBMS.
06.02 Gestione dei guasti e tecniche di recovery.
06.03 Gestione dello scheduling.
06.04 Teoria della serializzabilità.
06.05 Serializzabilità e concorrenza.
06.06 Tecniche di locking.
06.07 Basi di dati e transazioni distribuite.
06.08 Basi di dati a oggetti, multimediali e NoSQL.
06.09 Basi di dati per XML.
06.10 Metodi di join.
06.11 Ottimizzazione delle interrogazioni.
07. Attività di laboratorio:
07.01 Introduzione a MySQL per il sistema operativo Linux.
07.02 Architettura di MySQL server e client.
07.03 Sviluppo guidato di database MySQL.
07.04 Accesso a database MySQL usando il linguaggio PHP.
Materiale didattico: Link oppure piattaforma di Blended Learning UniUrb
Testi di riferimento:
Per la teoria:
– Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone: “Basi di dati 4/ed”, McGraw-Hill, 2014
(copre le sezioni 01, 02, 03, 04, 05 e 06 del programma)
– Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone: “Basi di dati – Modelli e linguaggi di interrogazione 4/ed”, McGraw-Hill, 2013
(copre le sezioni 01, 02, 03, 04 del programma)
Per le esercitazioni:
– Dorbolò, Guidi, “Guida a SQL 2/ed”, McGraw-Hill, 2004.
Propedeuticità:
Programmazione degli Elaboratori, Architettura degli Elaboratori, Algoritmi e Strutture dati, Logica Matematica.
Modalità didattiche:
Lezioni frontali ed esercitazioni di laboratorio.
Modalità di accertamento:
Progetto individuale, prova scritta e prova orale.
Commissione d’esame:
Dott. Maurizio Maffi e Dott. Alessandro Aldini (supplente: Prof. Marco Bernardo).
Note per lo svolgimento dell’esame:
Prova scritta
La prova scritta (obbligatoria) viene valutata in ventesimi ed è ritenuta sufficiente se il relativo voto, che rimane valido per tutti gli appelli della sessione in cui la prova viene sostenuta, è di almeno 12/20.
L’iscrizione ONLINE alla prova scritta è obbligatoria. La prova comprende esercizi relativi alle diverse sezioni del corso. Appunti e libri di testo sono consultabili. L’esito dell’ultima prova scritta sostenuta e valutata annulla il risultato delle precedenti.
La presentazione (pubblica) delle soluzioni dei testi d’esame avviene al termine della prova scritta, prima della prova orale. I risultati saranno appesi nella bacheca del corso di laurea.
Novità dall’A.A. 2016/2017
La prova parziale (proposta unicamente nella sessione di gennaio/febbraio) conterrà esclusivamente quesiti inerenti la prima parte del programma (sezioni 1, 2 e 3). Gli studenti intenzionati a sostenere la prova parziale dovranno comunicarlo al docente via email (non è necessaria l’iscrizione tramite Esse3).
Per le prove successive il candidato, qualora abbia superato con successo la prima prova parziale, potrà optare per sostenere solamente la seconda prova (contente elementi delle sezioni 4, 5, 6 e 7 del programma) oppure sostenere la prova per intero.
Testi d’esame:
11 giugno 2015 | 22 gennaio 2014 | 12 giugno 2013 | 21 gennaio 2013 | 12 settembre 2012 | 04 luglio 2012 | 19 giugno 2012 | 16 febbraio 2011 | 26 gennaio 2011 | compiti 2010 | compiti 2009 | compiti 2008 | compiti 2007 | compiti 2006 | compiti 2005 | compiti 2004 | compiti 2003
Prova orale:
La prova orale (facoltativa) può essere sostenuta solo previo superamento delle altre due prove e comprende una verifica al computer del funzionamento del progetto, oltre a domande inerenti le varie sezioni del corso.
Progetto:
Il progetto, da consegnare almeno 6 giorni prima della prova scritta, viene valutato in decimi ed è ritenuto sufficiente se il relativo voto, che rimane valido per tutti gli appelli, è di almeno 6/10.
Se sufficiente, il relativo esito comporta un aggiustamento della somma dei voti del progetto e della prova scritta, determinando così il voto finale.
Il progetto di Basi di Dati e Sistemi Informativi consiste nella realizzazione di un database relazionale e va svolto singolarmente.
Per l’anno accademico in corso (2018-2019) la traccia è la seguente:
:: Piattaforma di streaming di contenuti multimediali quali film ed eventi sportivi
Un cliente (che può avere un solo account) è identificato con i consueti dati anagrafici oltre a user e pwd che gli consentono di accedere alla piattaforma.
Sia film che documentari hanno uno o più registi, anno di uscita, durata, descrizione, genere, lingua(e) disponibili (parlato e sottotitoli) e una durata di permanenza nella piattaforma (il listino viene periodicamente aggiornato con nuove uscite e la rimozione di vecchi contenuti).
I film hanno riferimenti agli attori, che possono interpretare più film e che possono essere protagonisti o meno.
Gli eventi sportivi hanno un nome, data, descrizione e sport.
I clienti sottoscrivono un piano che ha data di attivazione e di termine. I piani (3 in tutto) sono mensili e si differenziano tra loro in base al numero di dispositivi che è possibile utilizzare in contemporanea e al livello di definizione dello streaming.
Per tutti i piani è acquistabile anche l’opzione SPORT (sempre mensile) che consente di fruire anche degli eventi sportivi (live e in differita), altrimenti preclusi ai clienti. Alcuni eventi sportivi di un certo rilievo possono essere acquistati solo in modalità stand-alone, con un costo extra (es. € 5).
Per gli anni accademici passato (fino a 2015-2016, incluso), si consulti la seguente pagina.
NB: Il tema deve essere poi sviluppato autonomamente (definendo maggiormente i requisiti proposti e/o proponendone di nuovi).
Per l’approvazione della scelta del progetto dovete inviarmi per e-mail la descrizione dei requisiti del problema.
La relazione, da inviare per e-mail in formato pdf, deve discutere le problematiche di analisi dei requisiti, progettazione, e implementazione secondo la seguente scaletta:
Analisi dei requisiti (1 punto): descrizione dei requisiti in linguaggio naturale, rilevamento e correzione delle ambiguità. Organizzare un glossario dei termini e dei concetti fondamentali (con descrizione, indicazione sinonimi/omonimi o altre anomalie, eventuali correzioni, collegamenti) ed una tabella con le operazioni (>= 12) che il database deve soddisfare, equamente suddivise in interrogazioni ed aggiornamenti; evitare operazioni ripetitive (esempio: inserimento cliente + inserimento fornitore + …) ed interrogazioni troppo banali (esempio: stampare elenco clienti), cercando di privilegiare query complesse (esempio:
trovare i rappresentanti che nel mese scorso hanno fatturato sopra la media). Verrà valutato anche il livello dell’italiano.
Progettazione concettuale (2 punti): scelta della strategia di progetto, sviluppo dello schema E/R, eventuale integrazione di viste parziali, presentazione dello schema E/R finale.
Seguire fedelmente l’analisi dei requisiti, mostrando passo dopo passo l’evoluzione dello schema E/R secondo la strategia adottata.
Esistono diversi tool per disegnare schemi E/R, ad esempio MySQL Workbench, DBDesigner, Dia, Java Diagrammi ER.
Progettazione logica (4 punti): ottimizzazione, semplificazione, traduzione, normalizzazione (1 punto per ogni fase).
Ottimizzazione (facoltativa): individuare almeno una scelta progettuale che necessita di analisi del carico di lavoro (esempi: attributo o associazione derivata, porzione di schema ristrutturabile tramite accorpamenti orizzontali/verticali, semplificazione di gerarchia); definire quindi tutte le informazioni (volume dei dati e specifica delle operazioni) che sono utili a calcolare i costi di accesso sulla base dei quali operare la scelta ottimale.
Semplificazione: ristrutturare gerarchie di generalizzazione, attributi composti e a valori multipli, identificatori esterni.
Traduzione: passare dallo schema E/R ristrutturato al modello relazionale, evidenziando chiavi primarie e importate.
Normalizzazione: verificare le forme normali 2NF, 3NF, BCNF.
Progettazione fisica (1 punto, facoltativa): scegliere una tabella oggetto di interrogazioni frequenti e, sulla base di stime personali del carico di lavoro, verificare se e quali tecniche di organizzazione dei dati (indici, hashing, ecc.) consentono di ottimizzare gli accessi.
Database MySQL (1 punto): lo schema di database relazionale finale deve essere implementato in un database MySQL. Inoltre, tutte le operazioni devono essere presentate in termini di istruzioni MySQL.
La definizione di costrutti complessi (transazioni, procedure e trigger) comporta un bonus di (fino a) 1 punto.
Applicazione client (1 punto, facoltativa): realizzare un modulo software in C (o in PHP) di interfaccia al database MySQL per la realizzazione di almeno tre operazioni (tutte nel caso di PHP).
NB: per poter sostenere l’appello parziale della sessione invernale (gennaio/febbraio), è necessario consegnare il progetto contenente tutti i punti fino alla progettazione logica inclusa. Per la seconda prova si dovrà consegnare l’elaborato contenente le fasi rimanenti (dalla progettazione fisica in avanti) oppure, per coloro che non hanno sostenuto la prova intermedia, l’elaborato completo nella sua interezza.