Basi di dati
A.A. 2019/2020
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.
Periodo: Primo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
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.
- 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.
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.
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)
- 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<25 o P<25) la discussione orale non è possibile. Il voto comprensivo della prova scritta e del progetto di laboratorio è automaticamente confermato.
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<25 o P<25) la discussione orale non è possibile. Il voto comprensivo della prova scritta e del progetto di laboratorio è automaticamente confermato.
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Lezioni: 72 ore
Turni:
-
Docente:
Ferrara AlfioTurno A
Docente:
Montanelli StefanoDocente/i
Ricevimento:
su appuntamento
stanza 7008
Ricevimento:
Su appuntamento. Il colloquio si svolgerà online dopo aver contattato il docente per posta elettronica.
Online. In caso di appuntamento di persona, Dipartimento di Informatica, via Celoria 18 Milano, Stanza 7012 (7 piano)
Ricevimento:
Su appuntamento da concordare via email
Stanza 7015, Dipartimento di Informatica "Giovanni degli Antoni", Via Celoria 18 - 20133 Milano