Basi di dati (2015/2016)



Codice insegnamento
4S00037
Crediti
12
Coordinatore
Alberto Belussi
Altri corsi di studio in cui è offerto
Altri corsi di studio in cui è offerto
    Settore disciplinare
    ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
    Lingua di erogazione
    Italiano
    L'insegnamento è organizzato come segue:
    Attività Crediti Periodo Docenti Orario
    Teoria 6 I semestre Alberto Belussi
    Laboratorio 3 II semestre Roberto Posenato
    Tecnologie per le basi di dati 3 II semestre Alberto Belussi

    Orario lezioni

    II semestre
    Attività Giorno Ora Tipo Luogo Note
    Laboratorio martedì 14.30 - 16.30 lezione Aula B dal 4-apr-2016  al 10-giu-2016
    Laboratorio martedì 16.30 - 18.30 lezione Aula B dal 15-mar-2016  al 15-mar-2016
    Laboratorio mercoledì 14.30 - 16.30 laboratorio Laboratorio didattico Delta  
    Tecnologie per le basi di dati lunedì 11.30 - 13.30 lezione Aula A  
    Tecnologie per le basi di dati martedì 11.30 - 13.30 lezione Aula A  
    I semestre
    Attività Giorno Ora Tipo Luogo Note
    Teoria lunedì 11.30 - 13.30 lezione Aula C dal 5-ott-2015  al 6-ott-2015
    Teoria lunedì 11.30 - 13.30 lezione Aula B dal 12-ott-2015  al 29-gen-2016
    Teoria martedì 11.30 - 13.30 lezione Aula A  

    Obiettivi formativi

    Modulo: Teoria
    ----------------------------
    Questo modulo ha lo scopo di fornire allo studente le conoscenze necessarie per la progettazione di una base di dati. In particolare nel corso si illustreranno in dettaglio le metodologie per la progettazione concettuale di una base di dati e per la successiva realizzazione della stessa sui più diffusi sistemi per la gestione di basi di dati (sistemi basati sul modello relazionale). Si illustreranno inoltre le caratteristiche dei seguenti linguaggi di interrogazione: algebra relazionale e SQL.

    Modulo: Tecnologie per le basi di dati
    -------------------------------------------------
    In questo modulo si forniranno allo studente le conoscenze necessarie per comprendere ed utilizzare in modo efficace i sistemi per la gestione di basi di dati relazionali (Relational Data Base Management Systems - RDBMS). In particolare nel corso si illustreranno in dettaglio le caratteristiche principali di un DBMS relazionale (transazioni, concorrenza, gestione dei guasti, indici), i metodi per interagire con tale sistema da un programma Java (JDBC) e progettazione di un'applicazione web centrata sui dati (MVC).
    Infine, uscendo dall'ambito strettamente relazionale, si presenteranno alcuni modelli per la rappresentazione dei dati in modo semi-strutturato, in particolare: XML, XML schema e UML per i dati (cenni).

    Modulo: Laboratorio
    -----------------------
    Questo modulo si propone di introdurre lo studente ai seguenti argomenti:

    - Introduzione al relational data stream management system (RDBMS) PostgreSQL.
    - Introduzione all'uso di SQL-2 in PostgreSQL (con estensioni).
    - Ottimizzazione di query.
    - Introduzione alle transazioni.
    - Introduzione al linguaggio Python.
    - Accesso alla basi dati da programmi Java o Python.
    - Introduzione al microframework Flask (Python) e allo sviluppo di semplici applicazioni web basate su basi di dati.

    Le tecnologie principali utilizzate nelle esercitazioni sono basate sul linguaggio Python, che sarà introdotto durante il corso.
    Si assume lo studente abbia una buona conoscenza di un linguaggio di programmazione ad oggetti.

    Programma

    Modulo: Teoria
    --------------
    * Introduzione ai sistemi per la gestione di basi di dati: architettura e funzionalità di un sistema per la gestione di basi di dati; concetti di indipendenza fisica, indipendenza logica, persistenza, concorrenza, affidabilità, interrogazione e aggiornamento di una bes di dati; vantaggi di un sistema per la gestione di basi di dati rispetto al file system di un sistema operativo.
    * Progettazione concettuale di una base di dati: modelli concettuali per il progetto dei dati; il modello Entità-Relazione (E-R); elementi del modello E-R: entità, attributi, relazioni, gerarchie di generalizzazione e vincoli di cardinalità; lo schema concettuale di una base di dati.
    * Progettazione logica di una base di dati: modelli dei dati per i sistemi di gestione di basi di dati; il modello relazionale; definizioni di relazione, vincoli di integrità e schema relazionale; lo schema logico di una base di dati; regole per la traduzione di schemi concettuali in schemi relazionali.
    * Interazione con una base di dati: introduzione ai linguaggi per la definizione, modifica e interrogazione di una base di dati; l’algebra relazionale; il linguaggio SQL; il costrutto di selezione (Select-From-Where), interrogazioni nidificate, ordinamento e raggruppamento dei dati in SQL; il costrutto di inserimento, cancellazione e aggiornamento (Insert, Delete, Update) in SQL; il concetto di vista.

    Modulo: Tecnologie per le basi di dati
    --------------------------------------
    * L'architettura interna di un sistema per la gestione di basi di dati (DBMS): rilevanza dei sistemi transazionali, concetto di transazione, proprietà di una transazione, controllo della concorrenza (il metodo basato sul locking a due fasi), metodi di accesso ai dati (strutture dati sequenziali e indici B-trees e hashing), esecuzione e ottimizzazione di interrogazioni.
    * Interazione tra DBMS e applicazioni: libreria Java Database Connectivity (JDBC), architetture di riferimento per la realizzazione di applicazioni che interagiscono con un DBMS (Model View Controller (MVC-2)), il paradigma MVC-2 e le applicazioni web.
    * XML: caratteristiche generali, definizione di una sintassi XML usando XML schema, uso di UML per la progettazione concettuale di dati XML (cenni).

    Modulo: Laboratorio
    -------------------
    - Introduzione al relational data stream management system (RDBMS) PostgreSQL.
    - Introduzione all'uso di SQL-2 in PostgreSQL (con estensioni).
    - Ottimizzazione di query.
    - Introduzione alle transazioni.
    - Introduzione al linguaggio Python.
    - Accesso alla basi dati da programmi Java o Python.
    - Introduzione al microframework Flask (Python) e allo sviluppo di semplici applicazioni web basate su basi di dati.

    Modalità d'esame

    L'esame è diviso in due parti:
    - per i moduli "Teoria" e "Tecnologie per le basi di dati" è prevista una prova scritta di 2,5 ore circa che consiste in un esercizio sulla progettazione concettuale e logica di una base di dati, in alcuni esercizi sulle interrogazioni in algebra relazionale e SQL di una base di dati, in alcuni esercizi su XML e in alcune domande sulla parte di teoria.
    - per il modulo di "Laboratorio" è prevista una prova scritta di 1,5 ore circa che consiste in quattro esercizi di difficoltà crescente sul programma del modulo.

    L'esame si intende superato se lo studente ottiene una votazione di almeno 18/30 nella prima parte (teoria e tecnologie per le basi di dati) e almeno 18/30 nella parte di laboratorio. Il voto complessivo si ottiene calcolando la media pesata del voto relativo alla teoria (peso 3/4) e del voto relativo al laboratorio (peso 1/4).

    Sono previsti 4 appelli in totale: due appelli a giugno/luglio 2016, un appello a settembre 2016 e un appello a febbraio 2017.
    Sono previste inoltre una prova intermedia per il modulo di teoria a marzo 2016 e una prova intermedia per il modulo di tecnologie per le basi di dati a giugno 2016 (queste due prove intermedie insieme sostituiscono la prima parte dell'esame).

    Testi di riferimento
    Attività Autore Titolo Casa editrice Anno ISBN Note
    Teoria P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati (Edizione 4) McGraw-Hill 2014 978-88-386-6587-5
    Teoria E. Baralis, A. Belussi, G. Psaila Basi di dati - Temi d'esame svolti (Edizione 1) Progetto Leonardo Società Editrice Esculapio Bologna 1999 B135655713
    Teoria R. Elmasri, S.H. Navathe Sistemi di Basi di Dati: Fondamenti (Edizione 6) Pearson 2011 978-88-7192-628-5

    Opinione studenti frequentanti - 2015/2016


    Statistiche per i requisiti di trasparenza (Attuazione Art. 2 del D.M. 31/10/2007, n. 544)

    Statistiche esiti
    Esiti Esami Esiti Percentuali Media voti Deviazione Standard
    Positivi 46.49% 25 3
    Respinti 10.52%
    Assenti 26.31%
    Ritirati 16.66%
    Annullati --
    Distribuzione degli esiti positivi
    18 19 20 21 22 23 24 25 26 27 28 29 30 30 e Lode
    1.8% 7.5% 3.7% 3.7% 7.5% 15.0% 1.8% 3.7% 24.5% 9.4% 7.5% 5.6% 5.6% 1.8%

    Valori relativi all'AA 2015/2016 calcolati su un totale di 114 iscritti. I valori in percentuale sono arrotondati al numero intero più vicino.