Basi di Dati (A.A. 2020/2021)


A chi è rivolto il corso. Il corso, tenuto nel primo semestre (periodo didattico da ottobre 2020 a dicembre 2020), è 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
    • 10 giugno 2021. L'esame di Basi di dati per l'appello di settembre 2021 si svolgerà in presenza il 3/9/2021 alle ore 14 in aula 106 al Marco Polo. Gli studenti che per l'appello di settembre hanno una seria motivazione per svolgere l'esame da remoto devono fare richiesta entro il 22 agosto 2021, compilando il seguente modulo on-line:

      https://docs.google.com/forms/d/e/1FAIpQLSeAmbBW133BQiLjMIdmA-BWTQNNzAYs...

      Leggere attentamente le istruzioni. Si ricorda che (1) Rilasciare dichiarazioni mendaci è un reato penale. (2) Gli studenti che richiedono di svolgere l'esame da remoto lo possono fare solo dopo essersi prenotati per l'appello (che viene aperto in modalità "in presenza"). (3) Nel caso in cui la modalità da remoto lasci dubbi al docente riguardo a quanto svolto dallo studente, allo studente verrà richiesto di svolgere la prova orale, peraltro sempre possibile per tutti gli studenti.

    • 13 aprile 2021. L'esame di Basi di dati negli appelli del 2021 si svolgeranno i giorni: 9/6/2021, alle ore 14, 14/7/2021 alle ore 14, 3/9/2021 alle ore 14 in aula 106 al Marco Polo, 29/10/2021. Si invitano gli studenti a controllare il sistema INFOSTUD per le prenotazioni. Chi non si prenota entro la scadenza fissata non potrà partecipare all'esame e non ci sarà alcuna eccezione a questa regola.
    • 18 dicembre 2020. Le lezioni sono terminate. Il docente ringrazia i numerosi studenti che hanno seguito le attività del corso in questo momento così complicato.
    • 13 dicembre 2020. Gli appelli di Basi di dati sono previsti il 21/1/2021 alle ore 9 e il 18/2/2021 alle ore 9. La modalità dell'esame (in presenza o on-line) sarà comunicata più avanti in questa pagina. Chi non si prenota rispettando la scadenza indicata in Infostud non potrà partecipare all'esame e non ci sarà alcuna eccezione a questa regola.
    • 6 ottobre 2020. Le registrazioni delle lezioni sono disponibili nella pagina MOODLE del corso.
    • 5 ottobre 2020. Per seguire le lezioni a distanza dell'A.A. 2020/2021 gli studenti che si sono iscritti al corso tramite il sistema MOODLE devono collegarsi alla stanza virtuale ZOOM. Sul sito dell'ateneo è disponibile una pagina che include una guida all'uso di ZOOM.

  • Tutor
    Il tutor del corso è il dott. Federico Croce (croce@diag.uniroma.it)

  • 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 A.A. 2020/21 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 PostgreSQL per esercitazioni in SQL - preparato dal dott. Gianluca Cima: per Linux, per Windows
  • Lezioni: orari e aule
    Per seguire le lezioni a distanza gli studenti che si sono iscritti al corso tramite il sistema MOODLE devono collegarsi alla stanza virtuale ZOOM. Sul sito dell'ateneo è disponibile una pagina che include una guida all'uso di ZOOM. Le registrazioni delle lezioni sono disponibili nella pagina MOODLE del corso.

    • 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: gestione di dati in memoria secondaria in Python
    • Esercitazione 2: esercizi di algebra relazionale
    • Esercitazione 3: primi esercizi su query SQL
    • Esercitazione 4: creazione di schemi e popolamento di tabelle
    • Esercitazione 5: accesso da software interno
    • Esercitazione 6: accesso da software esterno (JDBC)
    • Esercitazione 7: esercizio complessivo sulla costruzione e utilizzo di una base di dati
    • Esercitazione 8: prima esercitazione sulla progettazione concettuale
    • Esercitazione 9: seconda esercitazione sulla progettazione concettuale
    • Esercitazione 10: terza esercitazione sulla progettazione concettuale
    • Esercitazione 11: esercizi sulla ristrutturazione dello schema concettuale
    • Esercitazione 12: esercizi sulla traduzione diretta
    • Esercitazione 13: esercizi sulla traduzione diretta e sulla ristrutturazione dello schema logico
    • Esercitazione 14: esercizi d'esame
    • Esercitazione 15: esercizi 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 (Ott 5) Lezioni 1,2,3
    - Introduzione alle basi di dati
    - Il modello relazionale: strutture
    - Algebra relazionale: operatori insiemistici, selezione e proiezione
    Lezioni 4,5 (4 ore in laboratorio: due turni da 2 ore ciascuno)
    - Esercitazione 1: gestione di dati memorizzati in file (primo turno: A-K)
    Lezioni 6,7
    - Algebra relazionale: il join
    - Esercitazione 2: Esercizi su algebra relazionale
    02 (Ott 12) Lezioni 8,9,10
    - Valori nulli e join esterno in algebra relazionale
    - Vincoli di integrità nel modello relazionale
    Lezioni 11,12,13 (3 ore in laboratorio dalle ore 9)
    - Introduzione a SQL
    - Query semplici in SQL: l'istruzione SELECT
    - Esercitazione 3: prime query in SQL
    Lezioni 14,15
    - Il join esplicito in SQL
    - Funzioni aggregate
    03 (Oct 19) Lezioni 16,17,18
    - La clausola group-by
    - Definizioni di tabelle e dati in SQL
    Lezioni 19,20,21 (3 ore in laboratorio dalle ore 9)
    - Istruzioni di manipolazioni dati in SQL
    - Esercitazione 4: definizioni di schemi e dati in SQL, query non elementari
    Lezioni 22,23
    - Query annidate in SQL
    - Viste inline in SQL
    04 (Oct 26) Lezioni 24,25,26 (da ora lezioni on-line)
    - Viste inline nella from e nella select
    - Esercizi su query annidate
    - Viste e tabelle temporanee
    Lezioni 27,28,29 (3 ore in laboratorio dalle ore 9)
    - Politiche di reazione alle violazione di foreign key
    - Accesso da software interno
    - Esercitazione 5: definizione di funzioni, stored procedure e trigger
    Lezioni 30,31
    - Esercizi su stored procedure e trigger
    - Esercizi su politiche di violazione di vincoli
    05 (Nov 2) Lezioni 32,33,34
    - Accesso da software esterno
    - Il protocollo JDBC
    Lezioni 35,36,37 (3 ore in laboratorio dalle ore 9)
    - Esercitazione 6: acquisizione di dati da file, stored procedure, trigger e JDBC
    Lezioni 38,39
    - La progettazione concettuale
    - Il modello Entità-Relazione
    - Entità e attributi di entità
    06 (Nov 9) Lezioni 40,41,42
    - Attributi composti
    - Relazioni e attributi di relazione
    - La nozione di ruolo
    Lezioni 43,44 (2 ore di laboratorio on-line dalle ore 9)
    - La relazione ISA tra entità
    - Esercitazione 7: ancora su stored procedure, trigger e JDBC
    Lezioni 45,46
    - La relazione ISA tra relazioni
    - Esercizi di progettazione concettuale
    07 (Nov 16) Lezioni 47,48,49
    - Vincoli di cardinalità
    - Vincoli di identificazione di entità
    Lezioni 50,51 (2 ore di laboratorio on-line dalle ore 9)
    - Vincoli di identificazione di relazione
    Lezioni 52,53
    - Esercizi su vincoli di identificazione
    - Esercitazione 8: progettazione concettuale
    08 (Nov 23) Lezioni 54,55,56
    - Metodologia di progettazione concettuale
    Lezioni 57,58 (2 ore di laboratorio on-line dalle ore 9)
    - Correzione degli esercizi di progettazione concettuale
    - Esercitazione 9: applicazione della metodologia di progettazione concettuale
    Lezioni 59,60
    - La progettazione logica
    - Ristrutturazione dello schema concettuale
    09 (Nov 30) Lezioni 61,62,63
    - Progettazione logica: introduzione alla traduzione diretta in relazionale
    Lezioni 64,65 (2 ore di laboratorio on-line dalle ore 9)
    - Esercitazione 10: progettazione concettuale
    - Esercitazione 11: ristrutturazione dello schema concettuale
    Lezioni 66,67
    - Progettazione logica: la traduzione diretta in relazionale (traduzione di entità)
    - Esercitazione 12: traduzione diretta in relazionale
    10 (Dic 7)
    ------
    Lezioni 68,69 (2 ore di laboratorio on-line dalle ore 9)
    - Progettazione logica: la traduzione diretta in relazionale (traduzione di relazioni)
    Lezioni 70,71
    - Progettazione logica: ristrutturazione dello schema logico
    - Esercitazione 13: traduzione diretta in relazionale
    11 (Dec 14) Lezioni 72,73,74
    - Progettazione logica: normalizzazione e denormalizzazione
    - Esercitazione 14: esercizi d'esame
    Lezioni 75,76 (2 ore di laboratorio on-line dalle ore 9)
    - Esercitazione 15: Esercizi d'esame
    ------
  • Programma 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.
    • Fuori programma: i modelli NoSQL. Proprietà dei modelli NoSQL. Cenno ai sistemi NoSQL. Il sistema MongoDB.
  • Esami
    • Il test SQL: a causa della difficoltà o dell'impossibilità di effettuare gli esami in presenza, per l'anno accademico 2020-21 il test SQL non si terrà e quindi lo studente può accedere all'esame direttamente, senza aver precedentemente superato la prova al computer su SQL. Ovviamente, SQL stesso sarà oggetto di domande direttamente all'interno dell'esame.
    • 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 progetto di basi di dati di dimensione ridotte e la risposta ad altre domande relative al programma del corso. Nel caso in cui il docente reputi necessario un orale per effettuare correttamente la valutazione dell'esame, lo studente viene convocato per una prova orale che potrà consistere 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 appelli di diversi anni accademici
    • Prenotazione degli esami: per la prenotazione, gli studenti devono utilizzare il servizio del sistema Infostud.
    • Calendario previsto degli esami
      • Primo appello: gennaio 2021
      • Secondo appello: febbraio 2021
      • Primo appello straordinario (per studenti fuori corso, part time, con disabilità e con D.S.A.): aprile 2021
      • Terzo appello: giugno 2021,
      • Quarto appello: luglio 2021
      • Quinto appello: settembre 2021
      • Secondo appello straordinario (per studenti studenti part-time, fuori corso, iscritti per l’A.A. 2020-2021 al terzo anno della laurea e al secondo anno della laurea magistrale, studenti con disabilità e con D.S.A.): ottobre 2021
  • 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 2020/2021 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.