Basi di Dati (A.A. 2017/2018)
A chi è rivolto il corso. Il corso, tenuto nel primo semestre (periodo didattico da settembre 2017 a dicembre 2017), è di 6 crediti, ed è rivolto agli studenti del terzo anno del Corso di Laurea in Ingegneria Informatica e Automatica della Sapienza Università di Roma.
Prerequisiti. Si richiede la conoscenza dei fondamenti della programmazione, dei linguaggi di programmazione, delle strutture di dati, e dei sistemi operativi.
Obiettivi. L'obiettivo del corso è lo studio degli aspetti fondamentali dei sistemi di gestione di basi di dati e delle metodologie di progettazione di basi di dati. Alla fine del corso lo studente dovrebbe avere acquisito tecniche e metodi per affrontare problemi di progettazione di basi di dati, e per utilizzare le funzionalità di base (definizione della base di dati, aggiornamento della base di dati, interrogazioni sulla base di dati) dei sistemi di gestione di basi di dati nell'ambito dello sviluppo e dell'esercizio di sistemi informatici. Il corso fa esplicito riferimento alle basi di dati relazionali, e ai relativi sistemi di gestione fondati sul linguaggio SQL. Tuttavia, i metodi ed i principi impartiti nel corso hanno validità generale, e possono essere applicati anche in contesti in cui si utilizzano modelli di dati e sistemi di gestione diversi dai modelli e dai sistemi relazionali.
- 22 dicembre 2017. Le lezioni del corso sono terminate. Ringrazio gli studenti che hanno seguito con tanta passione le lezioni.
- D. Calvanese, G. De Giacomo, M. Lenzerini, Slides del corso.
Le slides vengono rese disponibili mediante il sistema MOODLE, e sono scaricabili accedendo alla pagina del corso di Basi di dati in MOODLE. Gli studenti che vogliono scaricare il materiale didattico e che vogliano partecipare al forum del corso devono iscriversi accedendo alla pagina MOODLE del corso stesso. Si rende noto che tutti gli studenti della Sapienza possono accedere al sistema MOODLE usando le credenziali ufficiali dell'ateneo.
- Consigliato ma non necessario: R. Ramakrishnan, J. Gehrke. Sistemi di basi di dati. McGraw-Hill, 2004
- Mini tutorial su Postgres per esercitazioni in SQL - preparato dal dott. Gianluca Cima: per Linux, per Windows
- martedì: [ore 16:00 - 17:00], via Eudossiana 18, aula 24,
- mercoledì: [ore 14:00 - 16:00], via Eudossiana 18, aula 1,
- venerdì: [ore 14:00 - 16:00] via Eudossiana 18, aula 40
oppure, nel caso in cui sia esplicitamente annunciato che la lezione si svolgerà con due turni in laboratorio,
venerdì: [ore 12:00 - 13:30] primo turno e [ore 12:00 - 13:30] secondo turno, via Tiburtina 205, aula 17
- Esercitazione 1: algebra relazionale e interprete RADB (scaricabile da qui). Il materiale della esercitazione è scaricabile accedendo alla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 2: fondamenti di SQL. Il materiale della esercitazione è scaricabile accedendo alla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 3: SQL: query annidate e con aggregazioni. Il materiale della esercitazione è scaricabile accedendo alla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 4: SQL: definizione e verifica di vincoli, uso di transazioni. Il materiale della esercitazione è scaricabile accedendo alla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 5: Esercizi di progettazione concettuale. Il materiale della esercitazione è scaricabile accedendo alla pagina del corso di Basi di dati in MOODLE.
Week | Martedì (16:00 - 17:00) aula 24 |
Mercoledì (14:10 - 16:00) aula 1 | Venerdì (14:00 - 16:00) aula 40 |
01 (Sep 25) |
|
|
Lezioni 1,2 - Introduzione alle basi di dati - Basi di dati relazionali |
02 (Oct 02) |
Lezione 3 - Vincoli di integrità |
Lezioni 4,5 - Algebra relazionale - Operatori insiemistici - Selezione e proiezione |
Lezioni 6,7 - Algebra relazionale: il join |
03 (Oct 09) | Lezioni 8 - Algebra relazionale: esercizi |
Lezioni 9,10 - Introduzione a SQL - SQL: Data definition (sub)language |
Lezioni 11,12 - Esercitazione in laboratorio: algebra relazionale (per il materiale, si veda qui sopra; primo turno: A-K) |
04 (Oct 16) | Lezioni 13 - SQL: Data manipulation (sub)language - SQL: Introduzione al query language |
Lezioni 14,15 - Istruzione SELECT con una tabella - Il join implicito in SQL |
Lezioni 16,17 - Esercitazione in laboratorio: fondamenti di SQL (per il materiale, si veda qui sopra; primo turno: L-Z) |
05 (Oct 23) | Lezione 18 - Join esplicito in SQL - Funzioni di aggregazione |
Lezioni 19,20 - "group by" in SQL - Query annidate |
Lezioni 21,22 - Esercitazione in laboratorio: query SQL (per il materiale, si veda qui sopra; primo turno: A-K) |
06 (Oct 30) | Lezioni 23 - Gestione dei vincoli di foreign key - Transazioni |
|
Lezioni 24,25,26 - Esercitazione in laboratorio: gestione di vincoli e transazioni |
07 (Nov 06) | Lezioni 27,28 - Importazioni dati in un DBMS - Analisi di open data |
Lezioni 29,30 - Accesso ai dati da software - Il protocollo JDBC per Java |
|
08 (Nov 13) | Lezione 31 - La progettazione concettuale - Il modello ER - La nozione di entità e attributo |
Lezione 32,33 - La nozione di relazione - La nozione di ruolo |
Lezione 34,35 - La relazione ISA tra entità - La generalizzazione |
09 (Nov 20) | Lezione 36 - La relazione ISA tra relazioni - Vincoli di cardinalità |
Lezione 37,38 - Vincoli di identificazione di entità - Vincoli di identificazione di relazione |
Lezione 39,40 - Esercitazione di progettazione concettuale |
10 (Nov 27) | Lezione 41 - Esercitazione di progettazione concettuale |
Lezione 42,43 - Modellazione degli aspetti dinamici e temporali - Esercitazione di progettazione concettuale |
Lezione 44,45 - Introduzione alla progettazione logica - La fase di ristrutturazione |
11 (Dec 04) | Lezione 46 - La fase di ristrutturazione: scelta identificatore |
Lezione 47,48 - Esercizi di ristrutturazione - Introduzione alla traduzione diretta |
|
12 (Dec 11) | Lezione 49 - Traduzione diretta di entità |
Lezione 50,51 - Traduzione diretta di relazioni |
|
13 (Dec 18) | Lezione 52 - Esercizi di traduzione diretta |
Lezione 53,54 - Ristrutturazione dello schema logico | Lezione 55,56,57,58,59,60 - Test SQL (ore 11) - Esercizi d'esame (ore 14) |
- 1. Introduzione alle basi di dati. Basi di dati e sistemi informativi. Sistemi di gestione di basi di dati.
- 2. Il modello relazionale. Basi di dati relazionali. Il modello relazionale. Algebra relazionale.
- 3. Il linguaggio SQL. Definizione dei dati. Interrogazioni. Vincoli di integrità. Manipolazione dei dati. Viste. Transazioni.
- 4. La progettazione concettuale. Modelli concettuali. Il modello Entità-Relazione. Metodologie per la progettazione concettuale. Qualità di uno schema.
- 5. La progettazione logica/fisica. Ristrutturazione dello schema ER. Traduzione diretta nel modello relazionale. Ristrutturazione dello schema relazionale. Cenni di progettazione fisica.
- 6. Accesso alle basi di dati da software. Introduzione all'accesso a basi di dati mediante i linguaggi di programmazione. Il caso di Java: JDBC.
- Il test SQL: da gennaio 2016 è stato introdotta la "prova di idoneità" su SQL (Test SQL), che deve essere superato affinché lo studente possa prenotarsi per l'esame. Nell'A.A. 2017/18, le prove del test si svolgeranno a dicembre, gennaio (8/1/2019), febbraio (30/1/2019), marzo (22/3/2019), giugno (10/6/2019) e settembre (10/9/2019). Le prove si svolgono di norma nel laboratorio di via Tiburtina ed ognuna consiste nello scrivere un certo numero di query SQL usando un opportuno DBMS e fornendo allo studente una base di dati sulla quale poter verificare la correttezza delle query. Se il laboratorio non è disponibile, la prova si svolge in un'aula, con i mezzi che l'aula stessa mette a disposizione. Il test di idoneità si intende o superato o non superato, e non ha associato alcun voto per lo studente.
Ricordiamo che, una volta superato il test SQL, lo studente si può prenotare e presentarsi per la prova d'esame ad un qualunque appello dello stesso anno accademico. All'inizio di ogni anno accademico, la lista di coloro che hanno superato il test viene azzerata. Essendo il corso di Basi di dati erogato da settembre a dicembre, ed essendo quindi il primo appello dopo le lezioni quello di gennaio, questo vuol dire che lo studente in ogni anno accademico in cui supera il test SQL si può prenotare per un qualunque appello fino a quello ultimo dell'anno solare, ma non oltre.
- In cosa consiste l'esame: l'esame consiste di una prova scritta ed eventualmente di una prova orale. Nella prova scritta, per la quale si hanno a disposizione 2 ore, si richiede lo sviluppo di un piccolo progetto di basi di dati e la scrittura di alcune query in SQL. Se lo studente viene convocato per una prova orale, quest'ultima consisterà in una discussione dell'elaborato della prova scritta e in altre domande sul programma d'esame.
- Testi di esame: si possono consultare i testi d'esame degli ultimi appelli
- Prenotazione degli esami: per la prenotazione, gli studenti devono utilizzare il servizio del sistema Infostud.
- Calendario degli esami
- Primo appello: 26 gennaio 2018,
- Secondo appello: 21 febbraio 2018,
- Primo appello straordinario (per studenti fuori corso o part time): 13 aprile 2018,
- Terzo appello: 22 giugno 2018, ore 14:00
- Quarto appello: 20 luglio 2018, ore 14:00
- Quinto appello: 19 settembre 2018, ore 14:00
- Secondo appello straordinario (per studenti fuori corso, part time o che abbiano finito la frequenza dei corsi): 19 ottobre 2018 (data provvisoria)
- Dati sulla valutazione del corso da parte degli studenti
- Dati aggregati sulla valutazione per l'A.A. 2017/2018 del corso da parte degli studenti frequentanti. I dati sulla valutazione del corso per gli anni accademici precedenti sono pubblicati nelle pagine relative alle edizioni precedenti del corso stesso.
- Informazioni sulle edizioni passate del corso
- Anno accademico 2016/2017
- Anno accademico 2015/2016
- Anno accademico 2014/2015
- Anno accademico 2013/2014
- Anno accademico 2012/2013
- Anno accademico 2011/2012
- Anno accademico 2010/2011
- Anno accademico 2009/2010
- Anno accademico 2008/2009
- Per gli anni accademici dal 2001 al 2007, le pagine web sono state dismesse.
- Ricevimento studenti. Martedì, ore 17:00, al Dipartimento di Ingegneria Informatica Automatica e Gestionale "Antonio Ruberti", via Ariosto 25, Roma, secondo piano, stanza B203 (se disponibile), oppure stanza B217 (altrimenti) -- si prega di consultare la sezione delle news per eventuali notizie sulla data del prossimo ricevimento studenti