Basi di dati (2017/2018)



Codice insegnamento
4S00037
Crediti
12
Coordinatore
Alberto Belussi
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 sem. Alberto Belussi

Vai all'orario delle lezioni

Tecnologie per le basi di dati 3 II sem. Alberto Belussi

Vai all'orario delle lezioni

Laboratorio 3 II sem. Roberto Posenato

Vai all'orario delle lezioni

Obiettivi formativi

Gli obiettivi formativi sono presentati per modulo.

Modulo di Teoria
--------------------------
Questo modulo ha lo scopo di fornire allo studente le conoscenze necessarie per la progettazione di una base di dati. In particolare 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 (approfondito poi nel modulo di laboratorio).

Modulo di Laboratorio
---------------------------------
Questo modulo si propone di fornire allo studente le conoscenze necessarie per poter operare con un sistema di gestione di basi di dati e di sviluppare applicazioni web che interagiscono con 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.

Modulo di 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. 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).

A completamento del corso, gli studenti saranno in grado di comprendere il funzionamento di un sistema per la gestione di basi di dati e avranno le conoscenze necessarie per poter:
- progettare e implementare basi di dati relazionali;
- interrogare in modo efficace basi di dati relazionali;
- sviluppare applicazioni web che interagiscano con basi di dati relazionali.

Rispetto agli obiettivi formativi del corso di laurea questo insegnamento contribuisce a fornire allo studente:
- le necessarie competenze per operare negli ambiti della progettazione, realizzazione, sviluppo, gestione e manutenzione di sistemi informatici (in particolare dei sistemi relativi ai dati);
- le competenze di base nei campi: programmazione, basi di dati e sistemi informativi

Programma

Il programma viene specificato di seguito per ogni modulo.

Modulo di 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 base 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; ottimizzazione di espressioni dell'algebra; il linguaggio SQL; il costrutto di selezione (Select-From-Where), interrogazioni nidificate, ordinamento e raggruppamento dei dati in SQL; il concetto di vista.

Modalità di erogazione della didattica: lezioni frontali, esercitazioni in aula con il docente, materiale didattico (lucidi) ed esercizi ulteriori disponibili sulla piattaforma eLearning, ricevimento negli orari indicati sulla pagina web del docente.

Modulo di Laboratorio
--------------------------------
- Introduzione al relational data base 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 micro-framework Flask (Python) e allo sviluppo di semplici applicazioni web basate su basi di dati.

Modalità di erogazione della didattica: lezioni frontali in aula ed esercitazioni in laboratorio informatico, materiale didattico (lucidi) ed ulteriori esercizi sulla piattaforma eLearning, ricevimento individuale negli orari concordati con il docente.

Modulo di 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.
- XML: caratteristiche generali, definizione di una sintassi XML usando XML schema, uso di UML per la progettazione concettuale di dati XML (cenni).

Modalità di erogazione della didattica: lezioni frontali, esercitazioni in aula con il docente, materiale didattico (lucidi) ed esercizi ulteriori disponibili sulla piattaforma eLearning, ricevimento negli orari indicati sulla pagina web del docente.

Modalità d'esame

L'esame è composto di due parti: teoria e laboratorio.

Per superare l'esame gli studenti dovranno dimostrare di:
- aver compreso i concetti che stanno alla base della teoria delle basi di dati relazionali e della loro progettazione e implementazione sui sistemi per la gestione di basi di dati relazionali
- essere in grado di esporre le proprie argomentazioni in modo preciso e organico senza divagazioni
- saper applicare le conoscenze acquisite per risolvere problemi applicativi presentati sotto forma di esercizi, domande e progetti.

Moduli di Teoria e Tecnologie per le basi di dati
--------------------------------------------------------------------
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 (modello E-R) e logica (modello relazionale) di una base di dati, in alcuni esercizi sulle interrogazioni in algebra relazionale e SQL su una base di dati assegnata, in alcuni esercizi su XML e XML-Schema e in alcune domande sulla parte di teoria. Nella sezione TEMI D'ESAME E ALTRI ESERCIZI RIEPILOGATIVI della piattaforma eLearning sono disponibili temi d'esame degli anni precedenti.
E' possibile inoltre durante l'anno sostenere delle prove in itinere: tali prove sono fissate dal docente in accordo con gli studenti e vengono gestite sulla piattaforma eLearning. Si tratta di tre prove: la prima prova sulla progettazione di una base di dati relazionale: progettazione concettuale (modello E-R) e logica (modello relazionale), tale prova pesa 4/9 del voto di teoria; la seconda prova sull'interrogazione di una base di dati relazionale in algebra relazionale e SQL, tale prova pesa 3/9 del voto di teoria; infine, la terza prova sul programma del modulo di Tecnologie per le basi di dati, quest'ultima prova pesa 2/9 del voto di teoria.

Modulo di Laboratorio
---------------------------------
L'esame consiste in una prova scritta costituita da 5 esercizi a difficoltà crescente sugli argomenti del programma.
Chi non supera la prova scritta con almeno 13/30, una volta che avrà superato la prova scritta dovrà anche sostenere una prova orale. Il voto finale sarà quindi la media del voto della prova scritta e della prova orale.
Il voto di questo modulo vale 1/4 del voto finale. Una selezione dei temi d'esame è presente alla pagina http://profs.scienze.univr.it/~posenato/courses/labBD/raccoltaTemiEsameLaboratorioBasiDatiDal2016.pdf

La valutazione finale in trentesimi si ottiene facendo la media pesata del voto ottenuto nella prova di teoria (peso = 3/4) e del voto ottenuto nella prova di laboratorio (peso = 1/4).

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
Tecnologie per le basi di dati P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone Basi di dati (Edizione 4) McGraw-Hill 2014 978-88-386-6587-5
Laboratorio Autori Vari Flask (http://flask.pocoo.org/) Flask 2016
Laboratorio Autori Vari Manuale di Postgresql (https://www.postgresql.org/docs/9.6) Postgresql 2016

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

I dati relativi all'AA 2017/2018 non sono ancora disponibili