Basi di dati (2019/2020)


A chi è rivolto il corso. Il corso, tenuto nel primo semestre (periodo didattico da settembre 2019 a dicembre 2019), è 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.

  • Avvisi

    • 20 dicembre 2019. L'edizione 2019/2010 del corso si è conclusa in data odierna. Il docente ringrazia gli studenti che hanno seguito le varie attività previste nel corso (lezioni, esercitazioni, laboratorio) con attenzione e assiduità.

  • Materiale didattico

    • 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
  • Lezioni: orari e aule
    • martedì: [ore 13:00 - 16:00], Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 204
    • venerdì: [ore 16:00 - 18:00], Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 204
    • venerdì: [ore 08:00 - 10:00] primo turno e [ore 10:00 - 12:00] secondo turno, Laboratorio Paolo Ercoli, via Tiburtina 205, aula 17
  • Esercitazioni
    Il materiale delle esercitazioni, comprese le soluzioni degli esercizi, è scaricabile accedendo alla pagina del corso di Basi di dati in MOODLE.

    • Esercitazione 1: algebra relazionale e interprete RA.
    • Esercitazione 2: prime query in SQL.
    • Esercitazione 3: query con group by e annidamento in SQL.
    • Esercitazione 4: definizione di schemi con vincoli di foreign key, operazioni di manipolazione e query in SQL.
    • Esercitazione 5: preparazione al test SQL. È scaricabile anche il materiale di una esercitazione aggiuntiva che è stata caricata nel sistema per dare la possibilità agli studenti di esercitarsi ulteriormente per il test SQL.
    • Esercitazione 6: prima esercitazione su progettazione concettuale.
    • Esercitazione 7: seconda esercitazione su progettazione concettuale, basata su due testi d'esame di passati appelli.
    • Esercitazione 8: terza esercitazione su progettazione concettuale, basata su due testi d'esame di passati appelli. È una esercitazione di autovalutazione.
    • Esercitazione 9: esercitazione su acquisizione di dati da web.
    • Esercitazione 10: esercitazione su ristrutturazione dello schema concettuale. È una esercitazione di autovalutazione.
    • Esercitazione 11: esercitazione su traduzione diretta.
    • Esercitazione 12: esercitazione complessiva sulla progettazione logica.
    • Esercitazione 13: esercitazione su domande d'esame.

  • Lezioni: calendario e contenuti
    Week Martedì (13:00 - 16:00) aula 204 Venerdì (08:00 - 12:00) lab 17 Venerdì (16:00 - 18:00) aula 204
    01 (Sep 23)
    ------
    ------
    Lezioni 1,2
    - Introduzione alle basi di dati
    - Basi di dati relazionali
    - Il modello relazionale: strutture
    02 (Sep 30) Lezione 3,4,5
    - Operatori insiemistici
    - Selezione, proiezione e join
    - Esercizi su algebra relazionale
    Lezioni 6,7 (4 ore in laboratorio: due turni da 2 ore ciascuno)
    - Esercitazione 1: algebra relazionale (primo turno: A-K)
    Lezioni 8,9
    - Il joint esterno
    - Valori nulli nel modello relazionale
    03 (Oct 7) Lezioni 10,11,12
    - Esercizi di algebra relazionale
    - Vincoli di integrità
    - Il linguaggio SQL: istruzione select per selezioni, proiezioni e join
    Lezioni 13,14 (4 ore in laboratorio: due turni da 2 ore ciascuno - primo turno L-Z)
    - Esercitazione 2: istruzione select in SQL
    Lezioni 15,16
    - Definizione di schemi ed operazioni di manipolazione in SQL
    04 (Oct 14) Lezioni 17,18,19
    - order by
    - funzioni di aggregazione
    - group by
    - query annidate
    Lezioni 20,21 (4 ore in laboratorio: due turni da 2 ore ciascuno - primo turno A-K)
    - Esercitazione 3: query con group by in SQL
    Lezioni 22,23
    - Esercizi in SQL
    - La nozione di vista e di tabella temporanea
    05 (Oct 21) Lezioni 24,25,26
    - La nozione di transazione
    - Politiche di reazione alle violazioni di vincoli
    Lezioni 27,28 (4 ore in laboratorio: due turni da 2 ore ciascuno - primo turno L-Z)
    - Esercitazione 4: definizioni di schemi, operazioni di manipolazione e query complesse in SQL
    Lezioni 29,30 (Dott. Gianluca Cima)
    - Accesso a basi di dati da software
    - Accesso da software interno
    - Il protocollo JDBC
    06 (Oct 28) Lezioni 31,32,33
    - Introduzione alla progettazione concettuale
    - Il modello entità-relazione: le nozioni di entità, attributo e relazione
    ------
    ------
    07 (Nov 04) Lezioni 34,35,36
    - Relazione ISA e generalizzazione tra entità
    - Relazione ISA e generalizzazione tra relazioni
    Lezioni 37,38 (4 ore in laboratorio: due turni da 2 ore ciascuno - primo turno A-K)
    - Esercitazione 5: esercizi di preparazione al test SQL
    Lezioni 39,40
    - Vincoli di cardinalità
    - Vincoli di identificazione
    08 (Nov 11) Lezioni 41,42,43
    - Esercizi sul modello ER
    Lezioni 44,45 (4 ore in laboratorio: turno 1 ore 08:00 A-C, turno 2 ore 09:30 D-Ma, turno 3 ore 11:00 Me-Z)
    - Test SQL
    Lezioni 46,47
    - Metodologia di progettazione concettuale
    09 (Nov 18) Lezioni 48,49 (inizio ore 14:00) (Dott. Gianluca Cima)
    - Esercitazione 6: esercizi di progettazione concettuale
    Lezioni 50,51 (4 ore in laboratorio: due turni da 2 ore ciascuno - primo turno L-Z)
    - Correzioni compiti del test SQL
    Lezioni 52,53
    - Metodologia di progettazione di progettazione: pattern e trasformazioni
    10 (Nov 25) Lezioni 54,55,56
    - Esercitazione 7: esercizi di esame sulla progettazione concettuale
    - Introduzione alla progettazione logica
    Esercitazione 8 di autovalutazione sulla progettazione concettuale Esercitazione 8 di autovalutazione sulla progettazione concettuale
    11 (Dec 02) Lezioni 57,58,59
    - La ristrutturazione dello schema concettuale
    - La traduzione diretta (parte 1)
    Lezioni 60,61 (4 ore in laboratorio: due turni da 2 ore ciascuno - primo turno A-K)
    - Esercitazione 9: acquisizione di dati da web
    Lezioni 62,63
    - La traduzione diretta (parte 2)
    - Esercitazione 10 di autovalutazione sulla ristrutturazione dello schema concettuale
    12 (Dec 09) Lezioni 64,65,66
    - Esercitazione 11 - traduzione diretta
    - Ristrutturazione dello schema logico (decomposizioni)
    Lezioni 67,68,69 (3 ore in laboratorio: turno 1 ore 08:00 L-Z, turno 2 ore 09:30 A-K)
    - Test SQL
    ------
    13 (Dec 16) Lezioni 70,71,72
    - Ristrutturazione dello schema logico (accorpamenti)
    - Esercizi su ristrutturazione dello schema logico
    Lezioni 73,74,75
    - Esercitazione 12 - esercitazione complessiva sulla progettazione logica di basi di dati
    - Esercitazione 13 - domande d'esame
    ------
  • Programma definitivo del corso
    • 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.
  • Esami
    • Il test SQL: la "prova di idoneità" su SQL (Test SQL) deve essere superata affinché lo studente possa prenotarsi per l'esame. Dopo due edizioni del test svolte durante il periodo di lezione e riservate agli studenti del terzo anno che hanno frequentato il corso nel primo semestre dell'A.A. 2019/20, le prove del test sono previste a gennaio (13/1/2020, ore 8-10, aula 17), febbraio (10/2/2020, ore 16-18, aula 17), aprile (21 aprile 2020, ore 17-19, on-line), giugno (10/6/2020, ore 18-20, on-line) e settembre 2020. 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 on on-line, con i mezzi che la modalità di esame 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 di settembre (o ottobre, se lo studente può partecipare all'appello straordinario di ottobre), 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: gennaio 2020
      • Secondo appello: febbraio 2020
      • Primo appello straordinario (per studenti fuori corso, part time, con disabilità e con D.S.A.): aprile 2020
      • Terzo appello: giugno 2020
      • Quarto appello: luglio 2020
      • Quinto appello: settembre 2020
      • 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.): ottobre 2020
  • Dati sulla valutazione 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. I dati della edizione 2019/2020 verranno pubblicati in questa pagina appena disponibili.
  • Informazioni sulle edizioni passate del corso
  • Ricevimento studenti. Il martedì alle ore 17, 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 variazioni.