BASI DI DATI E SISTEMI INFORMATIVI

Anno accademico 2017/2018 - 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 introdotti elementi di base dell'approccio 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 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.

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.

f) Conoscere e sapere applicare criteri di progettazione di un front-end per ottimizzare la user-experience


Prerequisiti richiesti

Conoscenze di base di programmazione.

Conoscenza di HTML5, CSS e Document Object Model (DOM).


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

  • 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
  • Il linguaggio Java Script: Programmare form, manipolare finestre e frames in JavaScript
  • Jquery e Responsive Web Design
  • AJAX
  • Il pattern architetturale MVC: esempi di strutturazion del software in un framework basato su MVC
  • Sicurezza delle Web App (SQL injections, HTML/JS injections)

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



Programmazione del corso

 *ArgomentiRiferimenti testi
1*Introduzione 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  
2 Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionaleTesto 1. Capitolo 3 
3*SQL concetti base: definizione dei dati, interrogazioni in SQL (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidifcate), Istruzioni di modifica dei dati.Testo 1. Capitolo 4 
4*L'ambiente MySQLDispense del docente 
5*SQL: viste, asserzioni, funzioni, stored proceduresTesto 1. Capitolo 5 
6*SQL: Trigger, transazioni e controllo delgi accessiTesto 1. Capitolo 5 
7*Progettazione 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 
8*La progettazione logica: analisi delle prestazioni su schemi ER, ristrutturazione di schemi, traduzione nel modello relazionaleTesto 1. Capitolo 8 
9*La normalizzazione dei dati: Ridondanze, anomalie, dipendenze funzionali, forma normale di Boyce Codd, terza forma normale, verifiche di normalizzazioniTesto 1. Capitolo 9 
10 Cenni sulla progettazione fisica dei database: strutture per l'organizzazione dei file, sequenziali, ad array, ad accesso calcolato, strutture ad albero dinamicheTesto 1. Capitolo 11 
11 Evoluzione delle basi di dati: data base NOSQL e basi di dati multimedialiDispense del docente 
12*Introduzione al Web Dinamico: Web Server, Web Client, Web Application, Client-side vs. Server-side processingTesto 4. Capitoli 1-2 Dispense del docente 
13*PHP: Variabili, Array, Funzioni, Interazione con HTML Form, Metodi GET e POST, Sessioni, Cookie, Interazione con Database SQLTesto 4. Capitol1 3-4-5-6, 13 Dispense del docente 
14*Javascript: Funzioni, Oggetti, Proprieta’ e metodi, prototipi, Dynamic HTML, Modello ad Oggetti (oggetti window, document, form), EventiTesto 4. Capitoli 14, 16-17 Dispense del docente 
15*JQuery: Selettori CSS, selettori di posizione e operazioni su oggetti (navigazione e manipolazione DOM), eventi e funzioni oggetto-eventoDispense del docente 
16*Ajax: XMLHttpRequest, Funzioni Ajax di jQuery, risposte HTML, XML e JSONTesto 4. Capitoli 18-19 Dispense del docente 
17 Design Pattern Model-View-Controller: basi per la realizzazione di applicazioni MVC in PHP, Laravel frameworkDispense del docente 
18 Web Information Retrieval: reperire contenuti pagine web con crawling e scraping in PHP e Javascript Dispense del docente 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.

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) 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.


Esempi di domande e/o esercizi frequenti

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.

Per quanto riguarda 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.