Basi di Dati

Laurea in Informatica - Università di Padova
Anno Accademico 2014/2015

Crediti: 10 CFU

Docente: Prof. Mauro Conti

Assistenti: Giuseppe Cascavilla, Riccardo Spolaor

Annunci

  • [inserita il 05/09/2015] Precisazione sulla modalità per la consegna del progetto
  • [inserita il 05/07/2015] Precisazione sulla scadenza per la consegna del progetto
  • [inserita il 06/06/2015] Il giorno Mercoledi 10/06/2015, l'esercitazione in preparazione al secondo parziale avrà inizio alle ore 11.30 (invece che alle ore 13.30)
  • [inserita il 06/06/2015] Il giorno Martedi 09/06/2015, la lezione in labotatorio per il Supporto al Progetto inizierà alle ore 13.30, successivamente si terrà un Approfondimento su PostgreSQL con Ing. Gasparin (inizio del talk indicativamente alle ore 14.30)
  • [inserita il 01/04/2015] Aggiornato del Diario e della sezione Gruppo del corso.
  • [inserita il 03/03/2015] Inserito il link al Gruppo del corso.
  • [inserita il 20/02/2015] La prima lezione del corso di Basi di Dati: Lunedì 2 Marzo 2015 alle ore 13.30, LuM250.

Obiettivi del corso

L'obiettivo del corso è quello di introdurre lo studente alle tecniche di progettazione delle basi di dati. Si analizzeranno varie fasi dell'attività di progetto: analisi dei requisiti, progettazione concettuale della base di dati, trasformazione del progetto concettuale in un progetto logico, e implementazione delle funzionalità necessarie mediante un linguaggio di definizione e manipolazione dei dati che a questo progetto logico faccia riferimento. Si affronteranno anche alcune problematiche relative all'accesso alle basi di dati nei linguaggi di programmazione ed alla realizzazione di intefacce web alle basi di dati. Il corso dà luogo al conseguimento di 10 CFU.

Programma di massima del corso

  1. Introduzione
    1. Basi di dati e sistemi di gestione di basi di dati (DBMS)
    2. Architettura di un DBMS
    3. La progettazione di una base di dati
  2. La progettazione concettuale di una base di dati
    1. Il modello concettuale ad oggetti
    2. Progettazione concettuale di basi di dati mediante modello a oggetti
  3. La progettazione logica di una base di dati
    1. Il modello relazionale
    2. L'algebra ed il calcolo relazionale
    3. Progettazione logica di basi di dati mediante traduzione di schemi a oggetti in schemi relazionali
  4. Il linguaggio SQL
    1. Il data definition language di SQL
    2. Il data manipulation language di SQL
    3. Conoscenza procedurale: trigger, stored procedure.
    4. Transazioni
  5. La normalizzazione di schemi relazionali
    1. Dipendenze funzionali
    2. Scomposizione di relazioni, con preservazione di dati e/o dipendenze
    3. Forme normali per gli schemi di relazione (1NF, 2NF, 3NF e BCNF) e scomposizioni in forma normale
  6. Basi di dati nelle applicazioni (laboratorio)
    1. SQL nelle applicazioni (SQL embedded, call level interface)
    2. Acesso tramite web: PHP e pagine web dinamiche

Orario del corso

Il corso fa parte del II anno del Corso di Laurea in Informatica, Università di Padova, ed è collocato nel II semetre dell'Anno Accademico 2014/2015, con inizio il 02.03.2015, con il seguente orario:
 
Giorno Orario Aula
Lunedì, Martedì, Mercoledì 13.30 - 15.15 LuM250

Il corso è tenuto dal prof. Mauro Conti. Gli assistenti alla didattica sono i dottorandi Giuseppe Cascavilla e Riccardo Spolaor, i quali supporteranno la didattica principalmente per quanto riguarda il progetto e le esercitazioni.

Il prof. Mauro Conti riceve su appuntamento. Per chiarimenti sul corso e sul progetto, è possibile contattare via mail il prof. Mauro Conti all'indirizzo conti[at]math.unipd.it aggiungendo sempre in copia conoscenza (CC) gli assistenti Giuseppe Cascavilla (cascavilla[at]di.uniroma1.it) e Riccardo Spolaor (riccardo.spolaor[at]math.unipd.it)

Gruppo del corso

Google Group DB1415_unipd (nella richiesta d'iscrizione indicate: MATRICOLA, nome e cognome) Le informazioni fornite per l'iscrizione al suddetto gruppo saranno utilizzate per la creazione degli account di laboratorio.

Modalità d'Esame

Le date degli appelli sono normalmente disponibili alla corrispondente pagina del Dipartimento di Matematica.

L'esame consiste in una prova scritta, in un progetto, e in una prova orale. La consegna del progetto è condizione necessaria per poter sostenere la prova orale (vedi la sezione Progetto per le modalità di esecuzione e consegna). Il progetto e la prova orale contribuisce alla valutazione per 3 crediti su 10.

La prova scritta può essere superata ottentendo una valutazione sufficiente nelle due prove parziali previste:
La prima prova parziale a metà del corso (probabilmente il 22 Aprile). La data della seconda prova parziale coinciderà con quella del primo appello. La valutazione finale sarà la media delle valutazioni delle due prove, le quali devono essere entrambe superate con esito sufficiente (maggiore o uguale a 18/30).

Appello d'esame:
Al primo appello si potrà decidere se svolgere l'esame intero o solo il secondo parziale (solo se il primo è stato superato con la sufficienza) Consegnare il compito completo (prima e seconda parte) determina automaticamente la perdita del voto delle prove scritte sostenute in precedenza

Chi verrà sorpreso a copiare, suggerire o consultare testi o appunti vedrà annullato il proprio compito e non potrà partecipare all'appello di esame successivo

Progetti evidentemente indecenti o, peggio, copiati invalideranno il voto della prova scritta.

La prova scritta contiene domande ed esercizi focalizzati principalmente su:

  • modellazione concettuale a oggetti di un DB
  • traduzione dal modello concettuale a oggetti a quello logico relazionale
  • query definite come espressioni nell'algebra relazionale
  • normalizzazione di schemi
  • uso di PHP
  • definizione di schemi in SQL
  • query espresse in SQL
  • transazioni e aspetti procedurali di SQL
Alcuni testi dei precedenti appelli si possono trovare qui.

Per poter sostenere una determinata prova scritta è indispensabile essersi registrati alla corrispondente prova mediante il sistema UNIWEB. Questo è normalmente possibile solo fino a due giorni prima dell'esame stesso (la lista chiude due giorni prima dell'esame stesso alla mezzanotte ora italiana).

Per poter sostenere la prova orale è necessario aver superato con esito sufficiente la prova scritta, esseresi registrato nell'apposita lista UNIWEB (va bene registrarsi anche se non sapete ancora l'esito dello scritto), e aver consegnato il progetto entro le ore 11.59PM ora italiana del DECIMO giorno antecedente quello della prova orale che si intende sostenere (es. se si intende sostenere l'esame orale in data 17 Luglio, si deve consegnare il progetto entro le ore 11.59PM ora italiana del 7 Luglio).

Chi si fosse registrato a una lista di prenotazione e decidesse di non presentarsi è pregato di cancellarsi dalla lista o, in caso la lista fosse già chiusa, di darne tempestiva comunicazione al docente.

Durante l'esame non è possibile consultare testi, appunti o altro materiale. Chi copia o consulta bigliettini (o affini) vedrà annullato lo scritto corrente e non potrà sostenere l'appello successivo.

Il Progetto

Il progetto può essere svolto singolarmente o a coppie.

Le specifiche del progetto verrano precisate durante il corso.

Il lavoro dovrà essere consegnato anche in forma elettronica tramite lo script consegna da richiamare eseguendo il comando

consegna basidati2015
da una directory dove sono contenuti solo i files da consegnare e dovrà essere in linea (completamente funzionante e con home page che si apre automaticamente) nello spazio web dello studente presso il laboratorio.

Per ulteriori informazioni seguite le istruzioni riportate nel seguente link.

La consegna elettronica va effettuata prima di ciascun appello orale che si intende sostenere. Se il progetto è svolto in coppia, e i due componenti si presentano allo stesso appello, è sufficiente una sola consegna elettronica (purchè i nomi e le matricole di entrambi componenti del gruppo siano presenti nella relazione).

Gli elementi che verranno presi in considerazione ai fini di tale valutazione saranno la correttezza dei risultati, la complessità del problema affrontato, l'appropriatezza della metodologia seguita, la chiarezza espositiva della relazione.

La consegna del progetto è condizione necessaria per poter sostenere la prova orale.

  • La versione elettronica del progetto e della relazione dovrà essere consegnata almeno 10 giorni prima della prova orale che si intende sostenere.
  • Dovrete assicurarvi che le pagine web del progetto siano online nel vostro spazio web sul server di basi di dati. Dovranno essere fornire le eventuali credenziali di login (utilizzate nel progetto) in una sezione chiaramente segnalata all'interno della relazione.
  • La versione cartacea della relazione dovrà essere consegnata al docente contestualmente all'esame orale.

Riferimenti bibliografici

Il libro adottato è
  • P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone.
    Basi di dati..
    IV Edizione. McGraw Hill Education, 2014.
Risorse online: Altri libri consigliati per consultazione
  • A. Albano, G. Ghelli, R. Orsini.
    Fondamenti di basi di dati..
    2a Edizione. Zanichelli, 2005.
  • R. Elmasri, S. Navathe.
    Sistemi di basi di dati. Fondamenti.
    5a Edizione. Pearson/Addison Wesley, 2007.
  • L. Welling, L. Thomson.
    MySQL Tutorial.
    Pearson/Addison Wesley, 2004.

Diario del corso

Il seguente calendario delle lezioni conterrà il programma del corso, le date e i contenuti delle lezioni future sono indicative.

Data Tema della lezione
02/03/15 Presentazione del corso e introduzione: sistemi informativi,
sistemi informatici, e basi di dati
03/03/15 Sistemi di gestione di basi di dati (DBMS) Slides
04/03/15 Modello relazionale - parte 1 Slides
09/03/15 Modello relazionale - parte 2 [Vedi precedenti]
10/03/15 Calcolo relazionale - parte 1 Slides
11/03/15 Esercitazione sul Modello relazionale Slides
16/03/15 Calcolo relazionale - parte 2 [Vedi precedenti]
17/03/15 Calcolo relazionale - parte 3 [Vedi precedenti]
16/03/15 Esercitazione sul Calcolo relazionale Slides
23/03/15 Metodologie e modelli per il progetto - parte 1 Slides
24/03/15 Metodologie e modelli per il progetto - parte 2 [Vedi precedenti]
25/03/15 Esercitazione sul Calcolo relazionale e Metodologie e modelli per il progetto (parte 1) Slides
30/03/15 Progettazione concettuale Slides
31/03/15 Progettazione logica - parte 1 Slides
01/04/15 Esercitazione sulle Metodologie e modelli per il progetto (parte 2) Slides
13/04/15 Progettazione Logica - parte 2 [Vedi precedenti]
14/04/15 Laboratorio 1a: Presentazione Progetto - parte 1/2 (progettazione) Slides
15/04/15 Esercitazione su Progettazione concettuale e logica Slides
20/04/15 Laboratorio 1b: mysql e comandi per l'accesso Slides
21/04/15 Esercitazione in preparazione al primo parziale
22/04/15 Primo parziale (ore 14.30)
27/04/15 SQL base (parte 1) Slides
28/04/15 SQL base (parte 2) [Vedi precedenti]
29/04/15 Laboratorio 2: esercitazione su SQL e query sulla base di dati "customers" Cartella
04/05/15 SQL evoluto (parte 1) Slides
05/05/15 SQL evoluto (parte 2) [Vedi precedenti]
06/05/15 SQL evoluto (parte 3) ed esercitazione SQL Slides
11/05/15 Laboratorio 3: query sulla base dati "genitori - figli" Cartella
12/05/15 Normalizzazione (parte 1) Slides
13/05/15 Normalizzazione (parte 2) [Vedi precedenti]
18/05/15 Esercitazione sulla normalizzazione e visione primo parziale Soon
19/05/15 Labotatorio 4: query UTENTI/GRUPPI/FILE Cartella
20/05/15 Labotatorio 5: un trigger e una funzione Cartella
25/05/15 Labotatorio 6: Presentazione Progetto parte 2/2 Slides
26/05/15 Labotatorio 7: Introduzione al PHP e 18 esercizi Cartella
27/05/15 Labotatorio 8a: PHP pagine statiche/dinamiche "stato di famiglia" Cartella
03/06/15 Labotatorio 8b: PHP pagine statiche/dinamiche "stato di famiglia" [Vedi precedenti]
08/06/15 Approfondimento su PHP avanzato ed Esercitazione (in classe) Slides, Esercizi
09/06/15 Labotatorio 10: Supporto Progetto (inizio della lezione alle ore 13.30) e Approfondimento su PostgreSQL con Ing. Gasparin (inizio del talk indicativamente alle ore 14.30) Cartella, Talk
10/06/15 Esercitazione in preparazione al secondo parziale (ATTENZIONE orario modificato, inizio alle ore 11.30) Esercizi