BASI DI DATI E SISTEMI INFORMATIVI
Anno accademico 2016/2017 - 3° annoCrediti: 9
SSD: ING-INF/05 - Sistemi di elaborazione delle informazioni
Organizzazione didattica: 225 ore d'impegno totale, 146 di studio individuale, 49 di lezione frontale, 30 di esercitazione
Semestre: 2°
Obiettivi formativi
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 introdotte le basi di dati NO-SQL, evidenziando le diverse tecniche di modellazione dei dati. Quindi il corso fornisce i primi strumenti metodologici per la progettazione dei sistemi informativi basati su web (Web Information Systems) che collegano le basi di dati ai processi elaborativi di tipo interattivo. A questo fine, vengono trattate le tecniche di progettazione e di implementazione basate sul pattern architetturale Model-View-Controller (MVC) e si forniscono, 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.
Gli obiettivi del corso 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.
d) Conoscere le principali tecnologie per sviluppare applicazioni web lato client e lato server
e) Sapere progettare e sviluppare applicazioni di alto livello che si interfacciano con basi di dati, utilizzando il pattern architetturale MVC
f) Conoscere e sapere applicare criteri di progettazione di un front-end per ottimizzare la user-experience
Prerequisiti richiesti
Conoscenze di base di programmazione.
Frequenza lezioni
Fortemente consigliata.
Contenuti del corso
Modelli e Linguaggi per Basi di Dati
- Introduzione ai Database Management Systems (DBMS)
- Il modello relazionale: concetti di base, vincoli di integrita' e chiavi.
- Il linguaggio SQL: definizione dei dati, modifica dei dati, interrogazioni, definizione di viste, transazioni.
- SQL avanzato: trigger e procedure
- 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: forme normali (Boyce-Codd, terza forma normale), decomposizione in terza forma normale.
Fondamenti di web programming e sviluppo lato server
- HTML5, CSSS e template
- 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
- Il pattern architetturale MVC
- 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
- Esempi di strutturazione del software in una framework basata su MVC
- Il linguaggio Java Script
- Programmare form, manipolare finestre e frames in JavaScrip
- Jquery e Angular JS (Responsive Web Design)
- AJAX
- Sicurezza delle Web App (SQL injections, HTML/JS injections, X-site scripting, DoS, DDoS)
Testi di riferimento
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
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 fornite dai docenti del corso
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame consiste: in una prova (individuale) da svolgere in laboratorio riguardante il linguaggio SQL e conoscenza degli argomenti di teoria, e nello sviluppo di un elaborato progettuale (da svolgere individualmente o in team di max due persone) 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.