Basi di dati (A.A. 2022/2023)


A chi è rivolto il corso. Il corso, tenuto nel primo semestre (periodo didattico da settembre 2022 a dicembre 2022), è 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 di: programmazione, linguaggi di programmazione, strutture di dati e 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 NoSQL (Not only SQL).

  • Avvisi
    • 26 settembre 2023. L'esame per l'appello di ottobre si terrà il 10/10/2023 alle ore 18:00 in aula B2 dal DIAG, via Ariosto 25. Gli studenti che vogliono partecipare devono iscriversi mediante INFOSTUD. Chi non si prenoterà nei tempi dovuti non potrà partecipare all'esame e non ci saranno eccezioni a questa regola.
    • 24 luglio 2023. Il test SQL di settembre si terrà il 1/9/2023 alle ore 14:00 in aula 16 di via Tiburtina 205. Gli studenti che vogliono partecipare devono iscriversi mediante MOODLE. Chi non si prenoterà nei tempi dovuti non potrà partecipare al test e non ci saranno eccezioni a questa regola.
    • 2 maggio 2023. Le date d'esame negli appelli estivi sono: 5/6/2023, ore 9 (aula 204 Marco Polo), 4/7/2023, ore 14 (aula 204 Marco Polo), 8/9/2023, ore 9 (aula 204 Marco Polo). Si rimanda ad Infostud per le prenotazioni. Chi non si prenoterà nei tempi dovuti non potrà partecipare all'esame e non ci saranno eccezioni a questa regola.
    • 24 marzo 2023. Il prossimo test SQL si terrà il 15/5/2023 alle ore 10:00 in aula 16 di via Tiburtina 205. Gli studenti che vogliono partecipare devono iscriversi mediante MOODLE rispettando la scadenza indicata. Chi non si prenoterà nei tempi dovuti non potrà partecipare al test e non ci saranno eccezioni a questa regola.
    • 22 dicembre 2022. Le lezioni dell'edizione 2022/2023 del corso si sono concluse. Gli esami degli appelli di gennaio 2023 e febbraio 2023 si svolgeranno i giorni 20/01/2023 (ore 15) e 15/02/2023 (ore 9). Si invitano gli studenti a verificare su INFOSTUD le date di prenotazione. Chi non si prenota entro la scadenza stabilita non potrà partecipare all'esame e non ci sarà alcuna eccezione a questa regola.

  • Tutor
  • Materiale didattico
    • D. Calvanese, G. De Giacomo, M. Lenzerini - Materiale didattico relativo alle lezioni del corso.

      Il materiale didattico viene reso disponibile mediante il sistema MOODLE, ed è scaricabile accedendo alla sezione MOODLE del corso di Basi di dati A.A. 2022/23. Gli studenti che vogliono scaricare il materiale didattico e che vogliono 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 le informazioni sulla trasmissione e sulle registrazioni delle lezioni si rimanda alla sezione MOODLE del corso. Le lezioni si svolgeranno con il seguente orario:

    • lunedì: [ore 09:00 - 11:00] Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 203
    • mercoledì: [ore 15:00 - 17:00] Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 204
    • giovedì: [ore 13:00 - 15:00] Sede Marco Polo, viale dello Scalo S. Lorenzo, 82, aula 106
    • venerdì: [ore 08:00 - 11:00] 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: esercitazione sulla forma base della select in SQL
    • Esercitazione 4: esercitazione su DDL, DML e query in SQL
    • Esercitazione 5: preparazione al test SQL
    • Esercitazione 6: esercizi su trigger e su query SQL
    • Esercitazione 7: simulazione test SQL
    • Esercitazione 8: importazione dati in formato .csv
    • Esercitazione 9: prima esercitazione di progettazione concettuale
    • Esercitazione 10: seconda esercitazione di progettazione concettuale e prima della ristrutturazione dello schema concettuale
    • Esercitazione 11: esercizi su progettazione concettuale, ristrutturazione dello schema concettuale e traduzione diretta
    • Esercitazione 12: esercizi di ristrutturazione dello schema concettuale e traduzione diretta
    • Esercitazione 13: esercizi d'esame ed esercizi sulla traduzione diretta
    • Esercitazione 14: esercizio di ristrutturazione dello schema logico
    • Esercitazione 15: esercizi sulla ristrutturazione dello schema logico
    • Esercitazione 16: progetto di una base di dati reale

  • Lezioni: calendario e contenuti
    Week Lunedì (09:00 - 11:00) aula 203 Mercoledì (15:00 - 17:00) aula 204 Giovedì (13:00 - 15:00) aula 106 Venerdì (08:00 - 11:00) lab 17
    01
    (Set 26)
    ------
    Lezioni 1,2
    - Introduzione alle basi di dati
    - Il modello relazionale: strutture
    Lezioni 3,4
    - L'algebra relazionale
    - Esercitazione 1: primi esercizi in algebra
    Lezioni 5,6
    (3 ore in laboratorio: due turni da 1,5 ore ciascuno, primo turno A-L)
    - Esercitazione 2: semplici esercizi in algebra relazionale
    02
    (Ott 03)
    ------
    Lezioni 7,8
    - L'algebra relazionale: il join
    - Valori nulli

    Lezioni 9,10
    - Vincoli di integrità
    - SQL: le basi dell'istruzione select

    Lezioni 11,12
    (3 ore in laboratorio: due turni da 1,5 ore ciascuno, primo turno M-Z)
    - Esercitazione 3: esercizi sulla forma base della select in SQL
    03
    (Oct 10)
    Lezioni 13,14
    - Vincoli di integrità referenziale
    - Outer join e join esplicito
    - Funzioni di aggregazione in SQL
    Lezioni 15,16
    - Aggregazione in SQL: group by
    - Operazioni insiemistiche in SQL
    Lezioni 17,18
    - Definizione di tabelle in SQL
    - Manipolazione di dati in SQL
    Lezioni 19,20
    (un unico turno)
    - Esercitazione 4: esercizi su DDL, DML e query in SQL
    04
    (Oct 17)
    Lezioni 21,22
    - Query annidate in SQL
    Lezioni 23,24
    - Viste, vincoli e transazioni in SQL
    ------
    Lezioni 25,26
    (un unico turno)
    - Esercitazione 5: esercizi su query SQL in preparazione del test
    05
    (Ott 24)
    Lezioni 27,28
    - Politiche di reazione alla violazione di vincoli
    - Accesso a basi di dati da software: software interno
    Lezioni 29,30
    - Accesso a basi di dati da software: software esterno
    ------
    Lezioni 31,32
    (un unico turno)
    - Esercitazione 6: esercizi su trigger, stored procedure e query SQL in preparazione del test
    06
    (Ott 31)
    ------
    Lezioni 33,34
    - Progettazione di basi di dati: introduzione
    - Modello ER
    - Entità e attributi
    Lezioni 35,36
    - Relazioni e ruoli
    - Incontro facoltativo in laboratorio per Esercitazione 7: Simulazione test SQL (un unico turno)
    07
    (Nov 07)
    Lezioni 37,38
    - Relazione ISA e generalizzazione su entità
    - Esercizio di progettazione concettuale
    Lezioni 39,40
    - Relazione ISA e generalizzazione su relazioni
    - Vincoli di cardinalità
    Lezioni 41,42
    - Vincoli di identificazione di entità
    - Vincoli di identificazione di relazione
    Test SQL in laboratorio (2 turni, ognuno in 2 aule)
    08
    (Nov 14)
    Lezioni 43,44
    - Esercizio di progettazione concettuale
    - Metodologia di progettazione concettuale
    Lezioni 45,46
    - I pattern di modellazione concettuale
    - Il pattern basato su eventi
    ------
    - Incontro facoltativo in laboratorio per Esercitazione 8: Importazione dati .csv e hackaton
    09
    (Nov 21)
    Lezioni 47,48
    - Il pattern basato su stati
    Lezioni 49,50
    - Esercitazione 9 su modello ER e progettazione concettuale
    Lezioni 51,52
    - La progettazione logica
    - Ristrutturazione dello schema concettuale
    - Esercitazione 9: si invitano gli studenti a svolgere gli esercizi proposti e procedere ad un'autovalutazione
    10
    (Nov 28)
    Lezioni 53,54
    - Ristrutturazione dello schema concettuale
    - Esercitazione 10: Esercizi sulla progettazione concettuale e sulla ristrutturazione dello schema concettuale
    Lezioni 55,56
    - Traduzione diretta: traduzione di entità
    Lezioni 57,58
    - Traduzione diretta: traduzione di relazioni
    - Incontro facoltativo on-line per Esercitazione 11: esercizi su progettazione concettuale, ristrutturazione dello schema concettuale e traduzione diretta
    11
    (Dec 05)
    ------

    Gli studenti sono invitati a svolgere l'esercitazione 12 su ristrutturazione dello schema concettuale e traduzione diretta

    Lezioni 59,60
    - Ristrutturazione dello schema logico
    ------
    - Incontro facoltativo on-line per la discussione sugli esercizi della Esercitazione 13
    12
    (Dec 12)
    Lezioni 61,62
    - Ristrutturazione dello schema logico
    - Esercitazione 14: esercizio di ristrutturazione dello schema logico
    Lezioni 63,64
    - Esercitazione 15: esercizi sulla ristrutturazione dello schema logico
    ------
    - Esercitazione 16 facoltativa: progetto di una base di dati reale
    13
    (Dec 19)
    ------
    Seminario facoltativo: introduzione ai sistemi di basi di dati NoSQL
    ------
    ------
  • 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 concettuale.
    • 6. La progettazione logica/fisica. Ristrutturazione dello schema ER. Traduzione diretta nel modello relazionale. Ristrutturazione dello schema relazionale. Cenni di progettazione fisica.
    • 7. (Argomento facoltativo) Introduzione ai modelli e ai sistemi NoSQL. Proprietà dei modelli NoSQL. Cenno ai sistemi NoSQL. Modelli a documenti ed il sistema MongoDB.
  • 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, riservato a coloro che frequentano il corso, sarà tenuto durante le lezioni.

      Dopo la edizione del test svolta durante il periodo di lezione e riservate agli studenti frequentanti, le prove del test sono previste a gennaio, marzo, maggio o giugno (a seconda della disponibilità del laboratorio), e settembre 2023. 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.

      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.

    • Punti bonus: Così come la lista di coloro che hanno superato il test viene azzerata all'inizio di ogni accademico, anche eventuali punti bonus ottenuti da uno studente (per il test SQL o per altro) vengono azzerati all'inizio dell'anno accademico.
    • 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 2023
      • Secondo appello: febbraio 2023
      • Primo appello straordinario (per studenti fuori corso, part time, con disabilità e con D.S.A.): aprile 2023
      • Terzo appello: giugno 2023
      • Quarto appello: luglio 2023
      • Quinto appello: settembre 2023
      • Secondo appello straordinario (per studenti studenti part-time, fuori corso, iscritti per l’A.A. 2022-2023 al terzo anno della laurea e al secondo anno della laurea magistrale, studenti con disabilità e con D.S.A.): ottobre 2023
  • 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 2022/2023 verranno pubblicati in questa pagina appena disponibili.
  • Informazioni sulle edizioni passate del corso
  • Ricevimento studenti. Il martedì alle ore 17 on-line all'indirizzo https://meet.google.com/hzy-save-oqw -- si prega di consultare la sezione delle news per eventuali variazioni.