DATABASES AND WEB PROGRAMMING A - L

Anno accademico 2018/2019 - 3° anno
Docenti Crediti: 12
SSD: ING-INF/05 - Sistemi di elaborazione delle informazioni
Organizzazione didattica: 300 ore d'impegno totale, 200 di studio individuale, 70 di lezione frontale, 30 di esercitazione
Semestre: 1° e 2°
ENGLISH VERSION

Obiettivi formativi

  • DATA-BASE

    Il corso tratta prima gli aspetti fondamentali dei sistemi di gestione e di progettazione delle moderne basi di dati nell'ambito dello sviluppo e dell'esercizio di sistemi informatici. In particolare esso fa riferimento alle basi di dati relazionali ed alle tecniche implementative fondate sul linguaggio SQL. Vengono inoltre introdotti elementi di base dell'approccio NO-SQL, evidenziando le diverse tecniche di modellazione dei dati.

    Gli obiettivi del modulo sono:

    a) Conoscere le tecnologie e le problematiche di gestione delle basi di dati.

    b) Sapere progettare, partendo dai requisiti, una base di dati relazionale (e non), dal punto di vista concettuale, logico e fisico.

    c) Sapere utilizzare il linguaggio SQL per gestire i dati ed effettuare interrogazioni efficienti.

  • WEB PROGRAMMING

    Il modulo tratta gli strumenti metodologici per la progettazione dei moderni sistemi informativi basati su web (Web Information Systems) che collegano le basi di dati ai processi elaborativi di tipo interattivo. A questo fine, vengono trattati, in un contesto laboratoriale, gli strumenti per lo sviluppo di un sistema che comprenda la parte di back-end (programmazione lato server) e di front-end (programmazione lato client), quest'ultima con particolare riferimento ad applicazioni web "responsive" e progettate secondo criteri di ottimizzazione della user-experience. Si farà cenno anche a tecniche di progettazione e di implementazione più avanzate basate sul pattern architetturale Model-View-Controller (MVC), e a tecniche di web information retrieval quali scraping e crawling.


Modalità di svolgimento dell'insegnamento

  • DATA-BASE

    Lezioni frontali, esercitazioni, laboratorio e seminari.

  • WEB PROGRAMMING

    Lezioni frontali, esercitazioni, laboratorio e seminari.


Prerequisiti richiesti

  • DATA-BASE

    Conoscenze di base di programmazione.

  • WEB PROGRAMMING

    Conoscenze di base di programmazione.


Frequenza lezioni

  • DATA-BASE

    Fortemente consigliata.

  • WEB PROGRAMMING

    Fortemente consigliata.


Contenuti del corso

  • DATA-BASE

    Modelli e Linguaggi per Basi di Dati

    • Introduzione ai Database Management Systems (DBMS): Basi di dati e sistemi di gestione delle basi di dati*, modelli dei dati*, indipendenza dei dati*.
    • Il modello relazionale: relazioni*, tabelle*, attributi*. Vincoli di integrità*. Chiavi*
    • Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionale
    • Il linguaggio SQL: Definizione dei dati*, interrogazioni in SQL* (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidificate), Istruzioni di modifica dei dati*.
    • SQL avanzato: Viste*, funzioni*, stored procedures* e asserzioni. Trigger*, transazioni* e controllo degli accessi
    • Un esempio di DMBS relazionale: MySQL.
    • Database NO-SQL: MongoDB

    Progettazione di Basi di Dati

    • Progettazione concettuale: il modello E/R*, raccolta ed analisi di requisiti*, strategie di progettazione concettuale*, verifica di qualita'.
    • Progettazione logica: ristrutturazione degli schemi E/R*, traduzione nel modello relazionale*.
    • Progettazione fisica: strutture di memorizzazione delle tabelle e indici*. Tecniche di hashing. Esecuzione e ottimizzazione delle interrogazioni
    • Tecniche di normalizzazione: Ridondanze*, anomalie*, dipendenze funzionali*, forma normale di Boyce Codd, terza forma normale*, verifiche di normalizzazioni
    • Data warehousing: modelli multidimensionali dei dati, data mart, procedure ETL, operatori OLAP

    * Conoscenze minime irrinunciabili per il superamento dell'esame.

  • WEB PROGRAMMING

    Fondamenti di web programming e sviluppo lato server

    • HTML5, CSS e Document Object Model (DOM)*
    • Tecnologia Apache-MySQL-Php (AMP)
    • Il linguaggio PHP*
    • HTML con PHP: form, sessioni e cookies*
    • Accesso ai database con PHP

    Progettazione di Web Information System (WIS) e Sviluppo di applicazioni web lato client

    • Analisi e Strutturazione dei processi interattivi in funzione dell'analisi dei requisiti del sistema informativo*
    • Criteri di progettazione di un interfaccia front-end per supportare la user-experience
    • Client-side programming: Java Script, Jquery, AJAX
    • Il linguaggio Java Script: Programmare form, manipolare finestre e frames in JavaScript: Funzioni*, Oggetti*, Proprieta’ e metodi, prototipi*, Dynamic HTML*, Modello ad Oggetti (oggetti window, document, form)*, Eventi*
    • Jquery e Responsive Web Design: Design Selettori CSS*, selettori di posizione e operazioni su oggetti (navigazione e manipolazione DOM)*, eventi e funzioni oggetto-evento*
    • AJAX: XMLHttpRequest, Funzioni Ajax di jQuery, risposte HTML, XML e JSON
    • Il pattern architetturale MVC: esempi di strutturazione del software in un framework basato su MVC
    • Sicurezza delle Web App (SQL injections, HTML/JS injections)
    • Web Information Retrieval: reperire contenuti pagine web con crawling e scraping in PHP e Javascript

    * Conoscenze minime irrinunciabili per il superamento dell'esame.


Testi di riferimento

  • DATA-BASE

    1. Basi di dati - 4/ed, Modelli e linguaggi di interrogazione. Di: Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone, Casa editrice: Mc-Graw-HIll

    2. High Performance MySQL: Optimization, Backups, and Replication (2011). Di Baron Schwartz e altri, Casa editrice: O'Reilly

  • WEB PROGRAMMING

    3. Programmazione Web lato server (2011). Di: Della Mea, Di Gaspero, Scagnetto, Casa editrice: APOGEO

    4. Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5 (2014). Di: Robin Nixon, Casa editrice: O'Reilly

    5. Dispense del docente


Programmazione del corso

DATA-BASE
 ArgomentiRiferimenti testi
1Introduzione alle basi di dati e al modello relazionale: basi di dati e sistemi di gestione delle basi di dati, modelli dei dati, indipendenza dei dati. Il modello relazionale: relazioni, tabelle, attributi. Vincoli di integrità.Testo 1. Capitoli 1 e 2  
2Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionaleTesto 1. Capitolo 3 
3SQL concetti base: definizione dei dati, interrogazioni in SQL (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidifcate), Istruzioni di modifica dei dati.Testo 1. Capitolo 4 
4L'ambiente MySQLDispense del docente 
5SQL: viste, asserzioni, funzioni, stored proceduresTesto 1. Capitolo 5 
6SQL: Trigger, transazioni e controllo delgi accessiTesto 1. Capitolo 5 
7Progettazione delle basi di dati: metodologie, Il modello Entità-Relazione, documentazione degli schemi, raccolta dei requisiti, qualità di uno schema concettualeTesto 1. Cap. 6 e 7, Dispense del docente 
8La progettazione logica: analisi delle prestazioni su schemi ER, ristrutturazione di schemi, traduzione nel modello relazionaleTesto 1. Capitolo 8 
9La normalizzazione dei dati: Ridondanze, anomalie, dipendenze funzionali, forma normale di Boyce Codd, terza forma normale, verifiche di normalizzazioniTesto 1. Capitolo 9 
10Cenni sulla progettazione fisica dei database: strutture per l'organizzazione dei file, sequenziali, ad array, ad accesso calcolato, strutture ad albero dinamicheTesto 1. Capitolo 11 
11Evoluzione delle basi di dati: data base NOSQL e basi di dati multimedialiDispense del docente 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • DATA-BASE

    L'esame consiste in una prova (individuale) da svolgere in laboratorio riguardante la progettazione di una basi di dati, a partire da un insieme di requisiti e dai dati di carico a regime, e la successiva implementazione in MySQL. Il voto sul modulo di database influirà al 50% sul voto totale del corso. La prova viene valutata in base alla capacità di analisi del problema e di giustificare le scelte progettuali, alla correttezza dello schema E/R proposto, alla correttezza e completezza dell'implementazione in SQL.

  • WEB PROGRAMMING

    L'esame consiste nello sviluppo di un elaborato progettuale (da svolgere individualmente) riguardante lo sviluppo di un Web Information System. L'elaborato (codice e relazione) viene discusso in sede di esame orale e va consegnato tre giorni prima della data concordata per l'esame orale. La prova viene valutata in base alla chiarezza espositiva, alla capacità di analisi del problema e di giustificare le scelte progettuali e implementative adottate, alla correttezza e completezza dell'implementazione.

    E' prevista anche una prova in itinere che consiste nalle consegna di tre homework (individuali) intermedi che sono parti costitutive di una Web Application. La consegna di almeno due dei tre gli homework è obbligatoria per partecipare alla prova di di fine corso, durante la quale verrà discussa l'integrazione degli homeworks nel progetto finale di un Web Information System. La mancata consegna di un homework comporta una limitazione nel voto finale. Gli homework, singolarmente, non saranno oggetto di valutazione, ma verranno valutati globalmente durante la discussione del progetto finale.

    Il superamento della prova in itinere e della prova di fine corso comporta il superamento del modulo, il cui voto influirà al 50% sul voto totale del corso.


Esempi di domande e/o esercizi frequenti

  • DATA-BASE

    Esempi di compiti riguardanti la prova di teoria e di laboratorio sono disponibili su Studium. La prova richiede, dal punto di vista teorico, il passaggio dai requisiti di una base di dati espressi in linguaggio naturale allo sviluppo del relativo modello entità-relazione, con eventuali ristrutturazioni, e lo sviluppo del progetto logico. Le interrogazioni ed operazioni richiesta sulla base di dati dovranno essere implementate in linguaggio SQL.

  • WEB PROGRAMMING

    Per lo sviluppo dell'applicazione web di un sistema informativo, il progetto richiede la presenza delle funzionalità esaminate durante i laboratori, e il supporto di alcuni casi d'uso che verranno definiti dai docenti. Durante la discussione orale verrà chiesto di commentare il codice sviluppato e le soluzioni progettuali adottate.