Basi di Dati (A.A. 2018/2019)
A chi è rivolto il corso. Il corso, tenuto nel primo semestre (periodo didattico da settembre 2018 a dicembre 2018), è 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 della gestione dei dati, dei sistemi per la gestione di basi di dati e delle metodologie di progettazione di basi di dati. Alla fine del corso lo studente dovrebbe avere acquisito le nozioni di base della gestione dei dati e le tecniche e metodi per condurre il progetto di una basi di dati e per utilizzare le funzionalità fondamentali (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 sia alle basi di dati relazionali e ai relativi sistemi di gestione fondati sul linguaggio SQL, sia ad alcuni modelli e sistemi basati NoSQL.
- 16 ottobre 2019. L'esame dell'appello straordinario di ottobre si terrà sabato 26 ottobre 2019 alle ore 10:00 in aula 6 di via Eudossiana 18, e NON in aula B2.
- 22 settembre 2019. L'esame dell'appello straordinario di ottobre si terrà sabato 26 ottobre 2019 alle ore 10:00 in aula 6 di via Eudossiana 18. Chi non si prenota entro la data stabilita non potrà partecipare all'esame e non ci sarà alcuna eccezione a questa regola.
- 24 dicembre 2018. Le lezioni dell'edizione 2018-2019 del corso sono terminate. Il docente ringrazia gli studenti che hanno seguito le lezioni fino all'ultimo (nel forum Moodle è stata caricata una foto con gli eroici superstiti) e ricorda loro la dimostrazione del teorema che afferma che studiare Basi di dati è meglio delle vacanze di Natale.
- 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: Ramez A. Elmasri, Shamkant B. Navathe. Sistemi di basi di dati. Fondamenti e complementi. Pearson (collana: Informatica), 2017
- Mini tutorial su Postgres per esercitazioni in SQL - preparato dal dott. Gianluca Cima: per Linux, per Windows
- lunedì: [ore 16:00 - 17:00], Sede Marco Polo, Viale dello Scalo S. Lorenzo, 82, aula 204
- mercoledì: [ore 14:00 - 16:00], Sede Marco Polo, Viale dello Scalo S. Lorenzo, 82, aula 204
- venerdì:
- Fino al 26 ottobre 2018 compreso: [ore 08:00 - 10:00] primo turno e [ore 10:00 - 12:00] secondo turno, Laboratorio Paolo Ercoli, via Tiburtina 205, aula 17
- Dal 9 novembre 2018: [ore 11:00 - 13:00], Sede Marco Polo, Viale dello Scalo S. Lorenzo, 82, aula 105
- Esercitazione 1: algebra relazionale e interprete RA (scaricabile da qui). Materiale per l'esercitazione: base di dati in formato ra, istruzioni per usare l'interprete RA, la specifica delle query da scrivere. Il file con le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 2: fondamenti di SQL. Materiale per l'esercitazione: script SQL per creare la base di dati e specifica delle query da esprimere in SQL. Il file con le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 3: query complesse in SQL. Materiale per l'esercitazione: script SQL per creare la base di dati e specifica delle query da esprimere in SQL. Il file con le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 4: definizione di dati in SQL. Materiale per l'esercitazione: Indicazione per la definizione di una base di dati.
- Esercitazione 5: accesso ai dati da software. Materiale per l'esercitazione: Specifica del sistema da realizzare, Driver JDBC per Postgres da scaricare. Il file con le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 6: prima esercitazione di progettazione concettuale. Il file con il testo e le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 7: hackathon SQL. Specifica dell'hackathon, file csv da scaricare con i dati open sulle scuole, file csv da scaricare con i dati open sui comuni
- Esercitazione 8: seconda esercitazione di progettazione concettuale. Il file con il testo e le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 9: ristrutturazione dello schema concettuale. Il file con il testo e le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 10: traduzione dal concettuale al logico. Il file con il testo e le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 11: ristrutturazione dello schema logico. Il file con il testo e le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 12: esercizio d'esame. Il file con il testo è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 13: esercizi d'esame sul modello ER e sulla traduzione diretta. Il file con il testo e la soluzione è scaricabile dalla pagina del corso di Basi di dati in MOODLE
- Esercitazione 14: esercizi finali su SQL. Materiale per l'esercitazione: script SQL per creare la base di dati e specifica delle query da esprimere in SQL. Il file con le soluzioni è scaricabile dalla pagina del corso di Basi di dati in MOODLE.
- Esercitazione 15: esercizio d'esame. Il file con il testo e la soluzione è scaricabile dalla pagina del corso di Basi di dati in MOODLE
Week | Lunedì (16:00 - 17:00) aula 204 |
Mercoledì (14:00 - 16:00) aula 204 | Venerdì (08:00 - 12:00) lab 17 o (11:00 - 13:00) aula 105 |
01 (Sep 24) |
Lezione 1 - Introduzione alle basi di dati - Basi di dati relazionali |
Lezioni 2,3 (svolta il 25/09 dalle ore 17:00 alle ore 19:00) - Algebra relazionale - Operatori insiemistici - Selezione e proiezione |
Lezioni 4,5 (4 ore in laboratorio: due turni da 2 ore ciascuno) - Esercitazione 1: algebra relazionale (primo turno: A-K) |
02 (Oct 01) |
Lezione 6 - Esercizi su algebra relazionale |
Lezioni 7,8 - I valori nulli nelle basi di dati relazionali - Il linguaggio SQL: istruzione select |
Lezioni 9,10 (4 ore in laboratorio: due turni da 2 ore ciascuno) - Esercitazione 2: introduzione al linguaggio SQL (primo turno: Mi-Z) |
03 (Oct 8) |
Lezione 11 - Order-by - Funzioni aggregate - Group-by |
Lezioni 12, 13 - Operatori insiemistici - Query annidate |
Lezioni 14,15 (4 ore in laboratorio: due turni da 2 ore ciascuno) - Esercitazione 3: query complesse in SQL (primo turno: A-Me) |
04 (Oct 15) |
Lezione 16 - I vincoli di integrità in SQL |
Lezioni 17,18 - Definizione dei dati in SQL - Viste e transazioni in SQL |
Lezioni 19,20 (4 ore in laboratorio: due turni da 2 ore ciascuno) - Esercitazione 4: definizione dei dati in SQL (primo turno: Mi-Z) |
05 (Oct 22) |
Lezione 21 - Accesso da software interno - Stored procedure - Trigger |
Lezioni 22,23 - Accesso da software esterno - Il protocollo JDBC per accedere da programmi Java |
Lezioni 24,25 (4 ore in laboratorio: due turni da 2 ore ciascuno) - Esercitazione 5: accesso ai dati da software (primo turno: A-Me) |
06 (Oct 29) |
|
Lezioni 26,27 - Progettazione di basi di dati - Il modello ER - Entità, attributi e relazioni |
|
07 (Nov 05) |
Lezione 28 - La nozione di ruolo - Il modello ER - Esercizio di progettazione concettuale |
Lezioni 29,30 - La relazione ISA gra entità - La generalizzazione - Esercizio di progettazione concettuale |
Lezioni 31,32 (aula 105) - La relazione ISA tra relazioni - Vincoli di cardinalità - Vincoli di identificazione di entità |
08 (Nov 12) |
Lezione 33 - Esercitazione 6: progettazione concettuale |
Lezioni 34,35 - Esercitazione 7: Hackaton SQL (presentato da Gianluca Cima) |
Lezioni 36,37 (aula 105) - Vincoli di identificazione di relazioni - Metodologie di progettazione concettuale |
09 (Nov 19) |
|
Lezioni 38,39 - Esercitazione 8: progettazione concettuale - Progettazione logica - Ristrutturazione dello schema concettuale: fasi 0-4 |
Lezioni 40,41 (aula 105) - Ristrutturazione dello schema concettuale: fasi 5-7 - Esercizio di ristrutturazione dello schema concettuale |
10 (Nov 26) |
Lezione 42 - Esercitazione 9: ristrutturazione dello schema concettuale |
Lezioni 43,44 - Traduzione diretta - Traduzione di entità |
Lezioni 45,46 (aula 105) - Traduzione di relazione - Esercizio di traduzione diretta |
11 (Dec 03) |
Lezione 47 - Esercitazione 10: traduzione diretta da concettuale a logico |
Lezioni 48,49 - Ristrutturazione dello schema logico - Operazioni di decomposizione |
Lezioni 50,51,52,53,54 (in laboratorio) - Test SQL - laboratorio 17 di via Tiburtina 205 |
12 (Dec 10) |
Lezioni 55 - Ristrutturazione dello schema logico - Operazioni di accorpamento |
Lezioni 56,57 - Esercitazione 11: ristrutturazione dello schema logico |
Lezioni 58,59 (aula 105) - Esercitazione 12: esercizio d'esame |
13 (Dec 17) |
Lezioni 60 - Esercitazione 13: esercizi d'esame su modello ER e traduzione diretta |
Lezioni 61,62 - Introduzione ai sistemi NO-SQL - Introduzione al sistema MongoDB |
Lezioni 63,64,65,66,67 - Esercitazione 14: simulazione Test SQL (ore 8-11 in laboratorio, aula 17) - Funzioni fondamentali del sistema MongoDB (ore 11-13 in aula 105) - Esercitazione 15: esercizio d'esame (ore 11-13 in aula 105) |
- 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. Accesso alle basi di dati da software. Accesso da software interno mediante PL/pgSQL. Accesso da software esterno mediante il protocollo JDBC di Java.
- 5. La progettazione concettuale. Modelli concettuali. Il modello Entità-Relazione. Metodologie per la progettazione concettuale. Qualità di uno schema.
- 6. La progettazione logica/fisica. Ristrutturazione dello schema ER. Traduzione diretta nel modello relazionale. Ristrutturazione dello schema relazionale. Cenni di progettazione fisica.
- 7. Basi di dati NoSQL. Il modello JSON. Sistemi NoSQL. Il sistema MongoDB.
- Il test SQL: la "prova di idoneità" su SQL (Test SQL) deve essere superata affinché lo studente possa prenotarsi per l'esame. Dopo una edizione del test a dicembre 2018 riservato agli studenti del terzo anno che frequentano il corso nel primo semestre dell'A.A. 2018/19, le prove del test sono a gennaio (8 gennaio 2019, ore 14-16 aula 17 via Tiburtina), febbraio (30 gennaio 2019, ore 9-11 aula 17 via Tiburtina), marzo (22 marzo 2019, ore 9-10 aula 17 via Tiburtina), giugno (10 giugno 2019, ore 15-17 aula 17 via Tiburtina) e settembre (10 settembre 2019, ore 15-17 in aula 17 via Tiburtina) 2019. Le prove si svolgono di norma nel laboratorio di via Tiburtina ed ognuna consiste nello scrivere una porzione di codice SQL usando un opportuno DBMS e avendo a disposizione una base di dati sulla quale poter verificare la correttezza di quanto prodotto. 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 risposta ad altre domande relative l programma del corso. 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 previsto degli esami
- Primo appello: 25 gennaio 2019, ore 14:00, aula 108 e aula 204 - Marco Polo
- Secondo appello: 20 febbraio 2019, ore 14:00, aula 108 e aula 204 - Marco Polo
- Primo appello straordinario (per studenti fuori corso, part time, con disabilità e con D.S.A.): 2 aprile 2019, ore 15:00, aula 106 - Marco Polo
- Terzo appello: 21 giugno 2019, ore 14:00, aula 204 - Marco Polo
- Quarto appello: 19 luglio 2019, ore 14:00, aula 204 - Marco Polo
- Quinto appello: 18 settembre 2019, ore 14:00, aula 204 - Marco Polo
- Secondo appello straordinario (per studenti studenti part-time, fuori corso, iscritti per l’A.A. 2018-2019 al terzo anno della laurea e al secondo anno della laurea magistrale, studenti con disabilità e con D.S.A.): 26 ottobre 2019, ore 10:00, aula 6 via Eudossiana 18
- Dati aggregati sulla valutazione per l'A.A. 2018/2019 del corso da parte degli studenti. I dati sulla valutazione del corso per gli anni accademici precedenti sono pubblicati nelle pagine relative alle edizioni precedenti del corso stesso.
- Anno accademico 2017/2018
- 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.