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


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

    • 22 settembre 2022. L'esame di Basi di dati della sessione di ottobre si svolgerà il giorno 3 ottobre 2022 alle ore 9 in aula 106 della sede Marco Polo. Le prenotazioni sono aperte fino al 1 ottobre 2022. Chi non si prenota entro la data stabilita non potrà partecipare all'esame e non ci sarà alcuna eccezione a questa regola. Si ricorda che l'esame può essere sostenuto solo da coloro che hanno superato il test SQL.

  • 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 sezione MOODLE del corso di Basi di dati A.A. 2021/22. 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 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 sezione MOODLE del corso.

    • lunedì: [ore 09:00 - 11:00] Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 106
    • mercoledì: [ore 15:00 - 17:00] Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 106
    • giovedì: [ore 13:00 - 15:00] Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 106
    • 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 sezione MOODLE del corso.

    • Esercitazione 1: primi esercizi di algebra relazionale
    • Esercitazione 2: esercitazione sull'algebra relazionale
    • Esercitazione 3: uso di Postgresql e primi esercizi in SQL
    • Esercitazione 4: esercizi di creazione e di interrogazione di una base di dati in SQL
    • Esercitazione 5: esercizi di utilizzo di trigger e di moduli per l'accesso a basi di dati da software interno
    • Esercitazione 6: esercizi di utilizzo di trigger e di moduli per l'accesso a basi di dati da software esterno
    • Esercitazione 7: esercizi di preparazione al test SQL
    • Esercitazione 8: prima esercitazione di progettazione concettuale
    • Esercitazione 9: seconda esercitazione di progettazione concettuale
    • Esercitazione 10: terza esercitazione di progettazione concettuale
    • Esercitazione 11: quarta esercitazione di progettazione concettuale
    • Esercitazione 12: esercizi di ristrutturazione dello schema concettuale
    • Esercitazione 13: esercizi di traduzione diretta
    • Esercitazione 14: esercizi di ristrutturazione dello schema logico
    • Esercitazione 15: esercizi di preparazione all'esame

  • Lezioni: calendario e contenuti
    Week Lunedì (09:00 - 11:00) aula 106 Mercoledì (15:00 - 17:00) aula 106 Giovedì (13:00 - 15:00) aula 106 Venerdì (08:00 - 12:00) lab 17
    01
    (Set 27)
    Lezioni 1,2
    - Introduzione alle basi di dati
    - Il modello relazionale: strutture
    Lezione 3
    - Algebra relazionale
    Lezioni 4,5
    - Algebra relazionale: il join
    - Esercitazione 1: primi esercizi su algebra relazionale
    Lezioni 6,7 (4 ore in laboratorio: due turni da 2 ore ciascuno)
    - Esercitazione 2: esercitazione su algebra relazionale in RA (primo turno: A-K)
    02
    (Ott 04)
    Lezioni 8,9
    - Valori nulli nel modello relazionale
    - Vincoli di integrità nelle basi di dati
    Lezioni 10,11
    - Introduzione a SQL
    - Query semplici in SQL: l'istruzione SELECT
    Lezioni 12,13
    - Il join in SQL
    Lezioni 14,15 (4 ore in laboratorio: due turni da 2 ore ciascuno)
    - Esercitazione 3: uso di Postgresql e primi esercizi in SQL (primo turno: L-Z)
    03
    (Oct 11)
    Lezioni 16,17
    - Funzioni aggregate
    - group by in SQL
    - Definizioni di schemi in SQL
    Lezioni 18,19
    - Manipolazione di dati in SQL
    - Query annidate in SQL
    Lezioni 20,21
    - Select in-line in SQL
    Lezioni 22,23 (2 ore in laboratorio: un turno ore 8 - 10)
    - Esercitazione 4: Esercizi di creazione e di interrogazione di una base di dati in SQL
    04
    (Oct 18)
    Lezioni 24,25
    - Politiche di reazione alla violazione di vincoli in SQL
    Lezioni 26,27
    - Accesso a basi di dati da software
    Lezioni 28,29
    - I trigger nell'accesso a basi di dati da software
    Lezioni 30,31 (2 ore in laboratorio: un turno ore 10-12)
    - Esercitazione 5: Esercizi di utilizzo di trigger e di moduli per l'accesso a basi di dati da software interno
    05
    (Ott 25)
    Lezioni 32,33
    - Accesso a basi di dati da software esterno
    Lezioni 34,35
    - Progettazione concettuale e modello Entità-Relazione
    - Entità nel modello ER
    ------
    Lezioni 36,37 (2 ore in laboratorio: un turno ore 10-12)
    - Esercitazione 6: Esercizi di utilizzo di trigger e di moduli per l'accesso a basi di dati da software esterno
    06
    (Nov 01)
    ------
    Lezioni 38,39
    - Relazioni nel modello ER
    Lezioni 40,41
    - La relazione ISA nel modello ER
    Lezioni 42,43 (2 ore in laboratorio: un turno ore 10-12)
    - Esercitazione 7: Preparazione al test SQL
    07
    (Nov 08)
    Lezioni 44,45
    - Vincoli di cardinalità nel modello ER
    Lezioni 46,47
    - Vincoli di identificazione di entità nel modello ER
    Lezioni 48,49
    - Vincoli di identificazione di relazione nel modello ER
    Lezioni 50,51 (2 ore in laboratorio: un turno ore 10-12)
    - Esercitazione 8: progettazione concettuale
    08
    (Nov 15)
    ------
    Lezioni 52,53
    - Metodologia di progettazione concettuale: i pattern
    - Esercitazione 9: progettazione concettuale
    Lezioni 54,55
    - Metodologia di progettazione concettuale: le operazioni di trasformazione
    - Esercitazione 10: progettazione concettuale
    Test SQL (tre turni in laboratorio)
    09
    (Nov 22)
    Lezioni 56,57
    - Esercitazione 11: progettazione concettuale
    - Progettazione logica: ristrutturazione dello schema concettuale
    Lezioni 58,59
    - Esercizio sulla ristrutturazione dello schema concettuale
    Lezioni 60,61
    - Traduzione diretta di entità
    Lezioni 62,63 (2 ore in laboratorio: un turno ore 10-12)
    - Esercitazione 12: progettazione logica - ristrutturazione dello schema concettuale
    10
    (Nov 29)
    Lezioni 64,65
    - Traduzione diretta di relazioni
    Lezioni 66,67
    - Ristrutturazione dello schema logico
    ------
    Lezioni 68,69 (2 ore in laboratorio: un turno ore 9-11)
    - Esercitazione 13: progettazione logica - traduzione diretta
    11
    (Dec 06)
    Lezioni 70,71
    - Esercitazione 14: progettazione logica - ristrutturazione dello schema logico
    ------
    Lezioni 72,73 (facoltative)
    - Esercitazione 15: Esercizi d'esame

    Lezioni 74,75 (2 ore in laboratorio facoltative: un turno ore 9-11)
    - Introduzione a sistemi NoSQL - Mongodb
    12
    (Dec 13)
    - Introduzione alle piattaforme di Data Science in Python (Ing. Federico Croce)
    ------
    ------
    - Il docente è disponibile alle ore 9 on-line su Zoom per spiegazioni sul programma di 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.
    • I modelli NoSQL e le piattaforme di analisi dati (questa parte non farà parte delle domande di esame). Proprietà dei modelli NoSQL. Cenno ai sistemi NoSQL. Il sistema MongoDB. Introduzione a Pandas. Acquisizione, analisi e visualizzazione di dati in Pandas.
  • Esami
    • Il test SQL: affinché lo studente possa prenotarsi per l'esame ella/egli deve aver superato la "prova di idoneità" su SQL (Test SQL). Il primo test SQL si è tenuto il 19 novembre 2021 nel laboratorio di via Tiburtina (aula17) ed era riservato a coloro che frequentano il corso.

      Dopo la edizione del test svolta durante il periodo di lezione e riservata agli studenti del terzo anno che hanno frequentato il corso nel primo semestre dell'A.A. 2021/22, le prove del test sono previste a gennaio, marzo, maggio o giugno (a seconda della disponibilità del laboratorio), e settembre 2022. 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. 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. All'inizio di ogni anno accademico, la lista di coloro che hanno superato il test viene azzerata e quindi chi vuole superare l'esame di basi di dati deve rifare il test stesso.

    • 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: 21 gennaio 2022
      • Secondo appello: 7 febbraio 2022
      • Primo appello straordinario (per studenti fuori corso, part time, con disabilità e con D.S.A.): aprile 2022
      • Terzo appello: 30 maggio 2022
      • Quarto appello: 13 luglio 2022
      • Quinto appello: 8 settembre 2022
      • Secondo appello straordinario (per studenti studenti part-time, fuori corso, iscritti per l’A.A. 2021-2022 al terzo anno della laurea e al secondo anno della laurea magistrale, studenti con disabilità e con D.S.A.): ottobre 2022
  • 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 2021/2022 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) oppure on-line -- si prega di consultare la sezione delle news per eventuali variazioni.