BASI DI DATI E SISTEMI INFORMATIVI

Anno accademico 2016/2017 - 3° anno
Docenti: Daniela GIORDANO e Concetto SPAMPINATO
Crediti: 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:
ENGLISH VERSION

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.