Basi di dati

A.A. 2019/2020
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento fornisce i concetti fondamentali relativi alle basi di dati e ai sistemi per la loro gestione, con particolare riguardo ai sistemi di basi di dati relazionali. Il corso prevede i) una parte di teoria dedicata a modelli, linguaggi, metodologie di progettazione e agli aspetti di sicurezza e transazioni, e ii) una parte di laboratorio dedicata all'uso di strumenti di progettazione e gestione di basi di dati relazionali e alle principali tecnologie di basi di dati e Web.
Risultati apprendimento attesi
Lo studente acquisirà le seguenti conoscenze e acquisirà le competenze pratiche a esse corrispondenti: progettare lo schema concettuale e lo schema relazionale di una base di dati sia partendo da una descrizione informale della realtà applicativa di riferimento sia partendo da un insieme di dati non strutturati; verificare il livello di normalizzazione dello schema e comprendere i concetti di dipendenza funzionale e normalizzazione; comprendere e eseguire correttamente query SQL complesse e definirne il piano di esecuzione in termini di operazioni di algebra relazionale; comprendere, progettare e definire le diverse tipologie di indici per ottimizzare l'accesso ai dati; realizzare funzionalità attive della base di dati per mezzo di procedure SQL; comprendere il funzionamento e realizzare interfacce web per l'accesso ai dati.
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Primo semestre
Programma
I temi trattati nella parte di teoria sono:
- Concetti e architettura di un sistema di basi di dati
- Modello relazionale, vincoli, normalizzazione
- Modellazione dei dati, modello ER e nozioni di progettazione
- Progettazione logica
- Algebra relazionale
- SQL
- Organizzazione fisica dei dati e indici
- Sicurezza e controllo dell'accesso
- Transazioni (concetti generali)

I temi trattati nella parte di laboratorio:
- Il DBMS PostgreSQL
- Creazione e manipolazione di schemi
- Gestione di utenti e ruoli
- Firewall degli accessi (hba.conf)
- Dump di basi di dati
- Linguaggio procedurale (PLpgSQL)
- Programmazione web con PHP
- Architettura client/server
- Protocollo HTTP
- Passaggio di parametri GET/POST
- Cookie/sessioni
- Interazione con i DBMS

Un elenco dettagliato degli argomenti trattati viene pubblicato e aggiornato sul sito web dell'insegnamento.
Prerequisiti
Conoscere almeno un linguaggio di programmazione imperativo. Possedere nozioni di base di logica proposizionale.
Il superamento dell'esame di Programmazione è propedeutico all'insegnamento di Basi di Dati.
Metodi didattici
La parte di teoria viene svolta mediante lezioni frontali intervallate da tre momenti di esercitazione nella quale gli studenti svolgono esercizi di progettazione, algebra relazionale e SQL che sono poi corretti e commentati in aula. E' previsto l'uso di slide e materiali didattici che saranno progressivamente resi disponibili sul sito web dell'insegnamento in piattaforma Ariel (https://aferrarabd.ariel.ctu.unimi.it). La parte di laboratorio si compone di lezioni frontali, esercizi guidati e attività pratiche svolte in aula informatica.
La frequenza, per quanto non obbligatoria, è fortemente consigliata.
Materiale di riferimento
L'insegnamento si basa su due testi di riferimento:

- R. Elmasri, S.B. Navathe, Sistemi di basi di dati - Fondamenti e Complementi (7 ed.), Pearson, 2018.
- P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, Basi di dati (V ed.), McGraw-Hill, 2018.

Ulteriore materiale integrativo, preparato dai docenti, include numerosi esempi e dataset e viene reso disponibile sul sito web dell'insegnamento (https://aferrarabd.ariel.ctu.unimi.it)
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste in una prova scritta (obbligatoria), una prova di laboratorio (obbligatoria) e una discussione orale (solo se necessaria secondo le seguenti modalità).

Prova scritta
E' composta da una parte A con domande di teoria a risposta chiusa e da una parte B con esercizi. La prova scritta è valutata in trentesimi (voto S).

Prova di laboratorio
E' composta da una parte A con domande di teoria e da una parte B con esercizi al calcolatore. La prova di laboratorio è valutata in trentesimi (voto P).

Discussione orale
Dopo aver sostenuto la prova scritta e la prova di laboratorio, lo studente riceve un voto in trentesimi corrispondente alla media pesata delle due prove sostenute così calcolata: voto=(2S+P)/3 . Se si è conseguito un voto di almeno 25/30 in entrambe le prove (S>=25 e P>=25), la discussione orale è possibile. Se non si sostiene la discussione orale, il voto comprensivo della prova scritta e del progetto di laboratorio è automaticamente confermato. Se NON si è conseguito un voto di almeno 25/30 in ciascuna delle due prove (S
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Docente: Ferrara Alfio
Turno A
Docente: Montanelli Stefano
Siti didattici
Docente/i
Ricevimento:
Venerdì, 15.00 - 16.00
Dipartimento di Informatica, via Celoria 18 Milano, Stanza 7012 (7 piano)
Ricevimento:
su appuntamento tramite mail
Ricevimento:
Giovedì, ore 11-12 (controllare eventuali spostamenti alla pagina specificata)
Stanza 7015, Dipartimento di Informatica "Giovanni degli Antoni", Via Celoria 18 - 20133 Milano