Basi di Dati (A.A. 2016/2017)


A chi è rivolto il corso. Il corso, tenuto nel primo semestre (periodo didattico da settembre 2016 a dicembre 2016), è 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 dei sistemi di gestione di basi di dati e delle metodologie di progettazione di basi di dati. Alla fine del corso lo studente dovrebbe avere acquisito tecniche e metodi per affrontare problemi di progettazione di basi di dati, e per utilizzare le funzionalità di base (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 alle basi di dati relazionali, e ai relativi sistemi di gestione fondati sul linguaggio SQL. Tuttavia, i metodi ed i principi impartiti nel corso hanno validità generale, e possono essere applicati anche in contesti in cui si utilizzano modelli di dati e sistemi di gestione diversi dai modelli e dai sistemi relazionali.

  • Avvisi
    • 20 maggio 2017. Il prossimo test SQL si svolgerà il giorno 7 giugno 2017, alle ore 12:00, in aula 16 del laboratorio Paolo Ercoli, via Tiburtina 205, Roma. Per poter partecipare al test gli studenti devono iscriversi spedendo un messaggio di posta elettronica al docente ENTRO il giorno 2 giugno 2017. Chi non si iscrive al test con questa modalità non potrà partecipare al test SQL e non ci saranno eccezioni a questa regola.
    • 20 maggio 2017. Il prossimo esame si svolgerà il 13 giugno alle ore 9 in aula 33 di via Eudossiana 18 (e non il 5 giugno come precedentemente annunciato). Le prenotazioni si chiudono il 10 giugno 2017. Chi non si prenota in tempo non potrà fare l'esame e non ci sarà alcuna eccezione a questa regola. Si ricorda agli studenti che all'esame potrà partecipare solo chi ha superato il test SQL.
    • 15 dicembre 2016. Le lezioni del corso sono terminate. Il docente ringrazia gli studenti che hanno seguito con tanta passione le lezioni, li invita ad effettuare la valutazione del corso, così come richiesto dal Consiglio d'Area, e, come già fatto gli scorsi anni, si impegna a pubblicare i risultati della valutazione in questa pagina, una volta che saranno resi disponibili dalla facoltà.

  • Materiale didattico
    • Mini tutorial su MySQL 5 per esercitazioni in SQL - preparato dal Prof. Giuseppe De Giacomo:
      per Linux, per Windows, per MAC

    • 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: R. Ramakrishnan, J. Gehrke. Sistemi di basi di dati. McGraw-Hill, 2004
  • Lezioni
    • Orario: lunedì [ore 14:00 - 15:30], mercoledì [ore 14:00 - 15:30] e giovedì [ore 14:00 - 15:30] nel periodo settembre 2016 - dicembre 2016
    • Aula
      • lunedì e mercoledì: aula 110, Edificio ex-poste, Via Scalo San Lorenzo 82 (quando annunciato, nel laboratorio Paolo Ercoli, aula 16, via Tiburtina 205)
      • giovedì: aula 204, Edificio ex-poste, Via Scalo San Lorenzo 82
    • Calendario e contenuto delle lezioni

      Settimana Lunedì (14:00 - 15:30) Mercoledì (14:00 - 15:30) Giovedì (14:00 - 15:30)
      01 (Ott 3) Lezioni 1,2
      - Introduzione alle basi di dati
      - Basi di dati relazionali
      Lezioni 3,4
      - Valori nulli nelle relazioni
      - Vincoli di integrità
      Lezioni 5,6
      - Linguaggi per basi di dati
      - Algebra relazionale
      02 (Ott 10) Lezioni 7,8
      - Varie versioni del join
      - Esercizi sull'algebra relazionale
      Lezioni 9,10
      - Esercizi sull'algebra relazionale
      - Introduzione a SQL
      Lezioni 11,12
      - Definizione di schemi in SQL
      - Inserimento di dati in SQL
      03 (Ott 17) Lezioni 13,14
      - L'istruzione select in SQL
      - Selezione e proiezioni in SQL
      Lezioni 15,16
      - Il join in SQL
      - Funzioni di aggregazione
      Lezioni 17,18
      - La group-by in SQL
      - Condizioni sui gruppi
      04 (Ott 24) Lezioni 19,20
      - Esercitazione in SQL (basato su questo script SQL e queste query da scrivere)
      Lezioni 21,22
      - Select annidate
      - Query correlate
      Lezioni 23,24
      - Altre funzionalità di SQL: vincoli e viste
      05 (Ott 31) Dalla pagina del corso nel sistema MOODLE si può scaricare il materiale della seconda esercitazione su SQL Lezioni 25,26
      - Progettazione di basi di dati
      - Progettazione concettuale
      - Entità, attributi e relazioni
      Lezioni 27,28
      - Il concetto di ruolo nel modello ER
      - Esercitazione di progettazione concettuale
      06 (Nov 07) Lezioni 29,30
      - Esercitazione in SQL (basato su questo script SQL e queste query da scrivere)
      Lezioni 31,32
      - Relazione ISA tra entità
      - Esercitazione di progettazione concettuale
      Lezioni 33,34
      - Generalizzazioni tra entità
      - Relazione ISA tra relazioni
      - Vincoli di cardinalità su relazioni
      07 (Nov 14) Lezioni 35,36
      - Vincoli di cardinalità su attributi
      - Vincoli di identificazione di entità
      Lezioni 37,38
      - Vincoli di identificazione di relazioni
      - Esercizi di progettazione concettuale
      Lezioni 39,40
      - Vincoli di identificazione di relazioni
      - Vincoli esterni
      08 (Nov 21) Lezioni 41,42
      - Esercitazione di progettazione concettuale
      Lezioni 43,44
      - Metodologia di progettazione concettuale
      Lezioni 45,46
      - La progettazione logica
      - Fase di ristrutturazione dello schema concettuale
      09 (Nov 28) Lezioni 47,48
      - Test SQL in laboratorio
      Lezioni 49,50
      - Ristrutturazione delle ISA e scelta degli identificatori principali (Prof. Giuseppe De Giacomo)
      ------------
      10 (Dic 05) Lezioni 51,52
      - Esercizi di ristrutturazione dello schema concettuale
      - Traduzione diretta in relazionale: traduzione di entità
      Lezioni 53,54
      - Esercizi di traduzione diretta in relazionale: traduzione di relazioni
      ------------
      11 (Dic 12) Lezioni 55,56
      - Esercizi di traduzione diretta in relazionale
      Lezioni 57,58
      - Ristrutturazione dello schema logico
      - Esercizi di ristrutturazione dello schema logico
      Lezioni 59,60
      - Accesso a basi di dati tramite Java (JDBC)
  • Esercitazioni
    • Nelle slide relative al modello relazionale compaiono le slides della prima esercitazione sull'algebra relazionale
    • Dalla pagina del corso in MOODLE si possono scaricare le slide della esercitazione di autovalutazione sull'algebra relazionale
    • Dalla pagina del corso in MOODLE si può scaricare il materiale relativo alla prima esercitazione su SQL
    • Dalla pagina del corso in MOODLE si può scaricare il materiale relativo alla seconda esercitazione su SQL
  • 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. La progettazione concettuale. Modelli concettuali. Il modello Entità-Relazione. Metodologie per la progettazione concettuale. Qualità di uno schema.
    • 5. La progettazione logica/fisica. Ristrutturazione dello schema ER. Traduzione diretta nel modello relazionale. Ristrutturazione dello schema relazionale. Cenni di progettazione fisica.
    • 5. Accesso alle basi di dati da software. Introduzione all'accesso a basi di dati mediante i linguaggi di programmazione. Il caso di Java: JDBC.
  • Esami
    • Il test SQL: da gennaio 2016 è stato introdotto il test di idoneità su SQL, che deve essere superato affinché lo studente possa prenotarsi per l'esame. Le prove del test si svolgeranno a gennaio, febbraio, marzo, giugno e settembre. Ogni prova si svolge nel laboratorio di via Tiburtina e consiste nello scrivere un certo numero di query SQL usando il DBMS MySQL. Viene fornita allo studente una base di dati sulla quale poter verificare la correttezza delle query. 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 presentare 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.

    • 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 scrittura di alcune query in SQL. 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 degli esami
      • Primo appello: 25 gennaio 2017, ore 9 in aula 14 di via Scarpa.
      • Secondo appello: 17 febbraio 2017, ore 9 in aula 11 di via Scarpa.
      • Primo appello straordinario (per studenti fuori corso o part time): 22 marzo 2017, ore 9, in aula 1 di via del Castro Laurenziano
      • Terzo appello: 5 giugno 2017, ore 14:00, aula 33 di via Eudossiana 18
      • Quarto appello: 6 luglio 2017, ore 9:00, aula 33 di via Eudossiana 18
      • Quinto appello: 6 settembre 2017, ore 9:00, aula 33 di via Eudossiana 18
      • Secondo appello straordinario (per studenti fuori corso, part time o che abbiano finito la frequenza dei corsi): ottobre 2017
  • 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 2016/2017 verranno pubblicati in questa pagina appena disponibili.
  • Informazioni sulle edizioni passate del corso
  • Ricevimento studenti. Martedì, ore 17:00, 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 notizie sulla data del prossimo ricevimento studenti