Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2015/2016
Tipologia di insegnamento: 
Caratterizzante
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Laurea triennale (DM 270) in INFORMATICA
Settore disciplinare: 
INFORMATICA (INF/01)
Crediti: 
9
Anno di corso: 
2
Docenti: 
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
72

Obiettivi

Il corso si propone di fornire le competenze essenziali per progettare, implementare e gestire una Base di Dati tramite un Database Management System di tipo relazionale.
Il corso tratta approfonditamente il linguaggio SQL, utilizzato tanto nelle attività di Laboratorio, parte integrante del corso, quanto per lo sviluppo di un progetto di gruppo, propedeutico al superamento dell'esame. Tale progetto tratta un caso verosimile di Base di Dati reale, e mette alla prova sia la capacità di astrazione, ragionamento e risoluzione di problemi, sia la capacità operativa su di un software complesso come il DBMS Oracle.
Conoscenza e capacità di comprensione:
Lo studente deve dimostrare di muoversi con autonomia nella progettazione e nella gestione di Basi di Dati relazionali, padroneggiando con buona autonomia i diagrammi concettuali EE/R, il linguaggio di programmazione SQL e la sua estensione procedurale PL/SQL.
Capacità di applicare conoscenza e comprensione:
Lo studente deve dimostrare di saper risolvere interrogazioni SQL non banali su un database preesistente, e di saper sviluppare trigger che effettuino controlli di integrità complessi sul database da lui sviluppato come progetto; deve saper riconoscere il contesto nel quale una base di dati relazionale è la scelta più appropriata e in tal caso saper produrre un modello concettuale della realtà che lo circonda, in modo da riconoscere il flusso e la struttura dei dati che vanno memorizzati.
Abilità comunicative:
lo studente deve essere in grado di documentare opportunamente il database sviluppato come progetto, partendo dai requisiti fino al codice PL/SQL, avvalendosi del linguaggio visuale UML, lavorando in gruppo e usando correttamente la terminologia propria delle Basi di Dati.

Prerequisiti

E' necessario avere acquisito le conoscenze e le competenze di programmazione procedurale trasmesse dal corsi di Programmazione I e Laboratorio di Programmazione I.

Contenuti

Sistemi informativi e informatici; Basi di Dati e DBMS; indipendenza logica e fisica dei dati; proprietà di un DBMS.
Modellazione concettuale: Diagrammi E/R e EE/R, chiavi, valori mancanti.
Il modello relazionale: domini e relazioni, vincoli di integrità statici; mapping di schemi E/R e EE/R su schemi relazionali.
Progettazione di una Base di Dati: analisi dei requisiti, approcci top-down, bottom-up, inside-out; paradigma waterfall e prototipazione, aspetti strutturali, dinamici e quantitativi; diagrammi UML (cenni).
Algebra relazionale: operatori, espressioni, alberi di interrogazione, ottimizzazione euristica.
Il linguaggio SQL: DDL, DML, QL; interrogazioni for all e gerarchiche; vincoli di integrità dinamici; asserzioni e viste; triggers DML.
Elementi di PL/SQL: cursori, blocchi anonimi, procedure, funzioni.
Teoria della normalizzazione: dipendenze funzionali; assiomi di Armstrong e derivabilità; anomalie di schemi relazionali; 1NF, 2NF, 3NF e BCNF.
Gestione della concorrenza: proprietà ACIDe delle transazioni; dirty read, repeatable read, phantoms; livelli di isolamento in SQL; protocolli basati su lock, multiversioning e timestamp (cenni).

Metodi didattici

Verifica dell'apprendimento

L’esame prevede la verifica delle competenze acquisite in base a tre coordinate: la prova scritta; la realizzazione di un progetto; la verifica orale.
La prova scritta verte sulla progettazione fisica, e dato un semplice schema relazionale prevede la soluzione di tre esercizi sui costi di accesso e sull’ingombro di varie configurazioni di indici e query; il progetto prevede l’aggiunta di funzionalità evolute ad un database esistente e la predisposizione di alcune pagine gestionali tramite tecnologia JSP; la verifica orale prevede la discussione del progetto seguita da alcune domande di approfondimento.
Per ciascun esercizio della prova sarà valutato il grado di completamento in una scala da 1 a 10. Il punteggio finale sarà la media pesata dei punti rappresentanti la difficoltà di ciascun esercizio con i gradi di completamento, arrotondata all’intero più vicino. La prova scritta e il progetto sono valutati con un punteggio massimo di 30/30 e di 5/5 ed un punteggio minimo di 16/20 e 3/5 rispettivamente.

Testi

Riferimenti principali:
Shamkant B. Navathe Ramez A. Elmasri. Sistemi di Basi di Dati - Complementi. Addison Wesley, 4 edition, 2005.
Shamkant B. Navathe Ramez A. Elmasri. Sistemi di Basi di Dati - Fondamenti. Addison Wesley, 6 edition, 2011.
Tom Nadeau Sam Lightstone, Toby Teorey. Physical Database Design. Morgan Kaufmann, 2007.
Michael McLaughlin Scott Urman, Ron Hardman. PL/SQL programming. Oracle press, 2004.

Riferimenti per alcuni argomenti specifici:
Antonio Albano. Costruire sistemi per Basi di Dati. Addison Wesley, 1 edition, 2001. [Cel14] Joe Celko. Joe Celko’s complete guide to NoSQL. Morgan Kaufmann, 1 edition, 2014.
Annalisa Franco Dario Maio, Stefano Rizzi. Esercizi di progettazione di Basi di Dati. Progetto Leonardo, 2 edition, 2005.
Andrea Steelman Joel Murach. Java servlets and JSP. Murach and associated, 2 edition, 2008.
Dario Maio Paolo Ciaccia. Lezioni di Basi di Dati. Progetto Leonardo, 1 edition, 1995.

Tutte le lezioni di teoria sono fruibili in streaming come video in formato mov attraverso la piattaforma di e-learning del Dipartimento di Scienze e Tecnologie, dove è possibile trovare tracce d'esame e note per il laboratorio.

Altre informazioni