Basi di dati

A.A. 2018/2019
Insegnamento per
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Il corso si propone di fornire i concetti fondamentali relativamente alle basi di dati e ai sistemi per la loro gestione, con particolare riguardo ai sistemi di basi di dati relazionali. Il corso prevede una parte di teoria dedicata a modelli, linguaggi, metodologie di progettazione e agli aspetti di sicurezza e transazioni, e una parte di laboratorio dedicata all'acquisizione e uso di strumenti di gestione e progettazione di basi di dati relazionali e alle principali tecnologie di basi di dati e Web.

Struttura insegnamento e programma

Linea Milano
Edizione attiva
Responsabile
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Docente: Ferrara Alfio
Turno A
Docente: Montanelli Stefano
Turno B
Docente: Frasca Marco
STUDENTI FREQUENTANTI
Programma
Modulo di basi di dati
Introduzione alle basi di dati: Sistemi informativi, informazioni e dati. Basi di dati e sistemi di gestione di basi di dati. Modelli dei dati. Concetti di schema e istanza. Livelli di astrazione nei DBMS. Indipendenza dei dati. Linguaggi e utenti delle basi di dati.
Il modello relazionale: Relazioni e tabelle. Schema e istanza di una relazione. Caratteristiche delle relazioni. Informazione incompleta e valori nulli. Chiavi. Vincoli di integrità. Algebra relazionale: definizioni, operatori. Definizione di equivalenza di espressioni relazionali e trasformazioni di equivalenza.
Il linguaggio SQL: Definizione dei dati in SQL. Definizione di schemi, tabelle, domini. Rappresentazione di vincoli. Operazioni di modifica e cancellazione degli elementi dello schema. Interrogazioni in SQL: interrogazioni semplici, operatori aggregati, interrogazioni con raggruppamento, interrogazioni di tipo insiemistico, interrogazioni nidificate. Manipolazione dei dati in SQL: operazioni di insert, delete, e update. Asserzioni. Vincoli di integrità generici. Trigger: definizione e uso (cenni). Viste: definizione, uso, problemi di aggiornabilità (cenni).
Il modello Entità-Relazione: I costrutti di base (entità, relazioni, attributi). Gerarchie di generalizzazione e identificatori. Vincoli di integrità. Documentazione di schemi ER.
Progettazione di basi di dati: Metodologie di progettazione. Analisi dei requisiti sui dati. Strategie top-down, bottom-up e mixed per la progettazione di schemi concettuali. Qualità di uno schema concettuale. Progettazione logica e modellazione del carico della base di dati; ristrutturazione dello schema dati in funzione del carico. Progettazione logica di basi di dati relazionali: regole di traduzione da schemi Entità-Relazione a schemi relazionali. Concetto di indice e criteri per la definizione di indici nella progettazione fisica di basi di dati (cenni).
La normalizzazione: Concetto di dipendenza funzionale. Forme normali di schemi di relazione: 1NF, 2NF, 3NF, Boyce-Codd NF. Decomposizione di relazioni: decomposizione senza perdita e conservazione delle dipendenze.
Sicurezza delle basi di dati: Il problema della protezione dei dati. Concetti di autenticazione, controllo dell'accesso e auditing. Politiche di sicurezza. Politiche discrezionali e mandatorie. Il problema del cavallo di Troia. Il modello di autorizzazione del SystemR. Revoca ricorsiva di autorizzazioni.
Transazioni: Concetto di transazione in un DBMS. Proprietà ACIDe delle transazioni.

Modulo di Laboratorio
DBMS. Tipologie di DBMS e architettura client/server dei DBMS. Confronto fra i principali prodotti disponibili. PostgreSQL: installazione e configurazione, architettura, principali comandi, creazione di basi di dati e utenti, creazione di tabelle, chiavi primarie e chiavi esterne, implementazione di vincoli di integrità referenziale. Strumenti CASE di supporto alla progettazione di basi di dati. Principali caratteristiche dello strumento ERWin. Reverse engineering di una base di dati.
Embedded SQL e PL/SQL. Sviluppo di applicazioni in ambiente SQL. Introduzione a embedded SQL. Il concetto di cursore. Introduzione a Oracle PL/SQL. La struttura delle istruzioni di PL/SQL. Variabili e tipi. L'uso di query SQL in programmi PL/SQL. Cicli e controllo di flusso: if, loop, while, for. Uso di cursori in PL/SQL. Introduzione a PLpgSQL. Procedure, funzioni e trigger in PLpgSQL.
Basi di dati e Web. Introduzione all'architettura Web. Il protocollo HTTP e la condizione stateless del Web. I Web Server: funzionalità generali e configurazione del Web server Apache. Architettura Web con impiego di script lato server. PHP: installazione e caratteristiche principali. Parametri e passaggio di valori fra pagine. I metodi GET e POST. Strutture di controllo, tipi di dato, variabili superglobal. Interazione con i database. Persistenza nelle comunicazioni client/server: cookie e sessioni.
Informazioni sul programma
I temi trattati nel corso sono:

Concetti e architettura di un sistema di basi di dati
Modello relazionale, vincoli, normalizzazione
Modellazione dei dati, modello ER e nozioni di progettazione
Progettazione logica
Algebra relazionale
SQL
Organizzazione fisica dei dati e indici
Sicurezza e controllo dell'accesso
Transazioni (concetti generali)

I temi trattati nel laboratorio sono:

Il DBMS PostgreSQL
Creazione e manipolazione di schemi
Gestione di utenti e ruoli
Firewall degli accessi (hba.conf)
Dump di basi di dati
Linguaggio procedurale (PLpgSQL)
Programmazione web con PHP
Architettura client/server
Protocollo HTTP
Passaggio di parametri GET/POST
Cookie/sessioni
Interazione con i DBMS
Esercitazioni
Propedeuticità
Programmazione
Prerequisiti e modalità di esame
L'esame consiste in una prova scritta, un progetto di laboratorio e una discussione orale (facoltativa secondo il regolamento che segue).

Prova scritta
E' composta da una parte A con domande di teoria e da una parte B con esercizi. La prova scritta è valutata in trentesimi (voto S).

Progetto di laboratorio
È obbligatorio e può essere svolto in gruppi composti da un massimo di 2 studenti. Per dettagli sulle modalità di consegna e per le specifiche tecniche del progetto si veda la sezione Progetti del sito http://islab.di.unimi.it/bdlab1. Il progetto di laboratorio è valutato in trentesimi (voto P).

Discussione orale
Dopo aver sostenuto la prova scritta e il progetto di laboratorio, lo studente riceve un voto in trentesimi corrispondente alla media pesata delle due prove sostenute così calcolata:
voto=(2*S+P) / 3
Se si è conseguito un voto di almeno 25/30 in entrambe le prove (S>=25 e P>=25): la discussione orale è possibile. Se non si sostiene la discussione orale, il voto comprensivo della prova scritta e del progetto di laboratorio è automaticamente confermato.
Se NON si è conseguito un voto di almeno 25/30 in ciascuna delle due prove (S
Metodi didattici
Modalità di esame: Scritto con (eventuale) orale + progetto di laboratorio; Modalità di frequenza: Fortemente consigliata; Modalità di erogazione: Lezioni frontali e di laboratorio.
Materiale didattico e bibliografia
· R. Elmasri, S.B. Navathe, Sistemi di basi di dati - Fondamenti (6 ed.), edizione italiana a cura di S. Castano, Pearson-Addison Wesley, 2011
(Capp.1-9, Capp.9-13, Cap. 15 (§15.1,§15.2), Cap.16)
· S.Castano. M. Fugini, G. Martella, P. Samarati, Database security, Addison Wesley, 1995.
(Cap. 1, Cap. 4 (§4.2.2). Su questo tema è disponibile una dispensa fornita dal docente)
· PostgreSQL. http://www.postgresql.org/
· PHP. www.php.net
· Materiale didattico integrativo disponibile sul sito web del corso
STUDENTI NON FREQUENTANTI
Programma
Modulo di basi di dati
Introduzione alle basi di dati: Sistemi informativi, informazioni e dati. Basi di dati e sistemi di gestione di basi di dati. Modelli dei dati. Concetti di schema e istanza. Livelli di astrazione nei DBMS. Indipendenza dei dati. Linguaggi e utenti delle basi di dati.
Il modello relazionale: Relazioni e tabelle. Schema e istanza di una relazione. Caratteristiche delle relazioni. Informazione incompleta e valori nulli. Chiavi. Vincoli di integrità. Algebra relazionale: definizioni, operatori. Definizione di equivalenza di espressioni relazionali e trasformazioni di equivalenza.
Il linguaggio SQL: Definizione dei dati in SQL. Definizione di schemi, tabelle, domini. Rappresentazione di vincoli. Operazioni di modifica e cancellazione degli elementi dello schema. Interrogazioni in SQL: interrogazioni semplici, operatori aggregati, interrogazioni con raggruppamento, interrogazioni di tipo insiemistico, interrogazioni nidificate. Manipolazione dei dati in SQL: operazioni di insert, delete, e update. Asserzioni. Vincoli di integrità generici. Trigger: definizione e uso (cenni). Viste: definizione, uso, problemi di aggiornabilità (cenni).
Il modello Entità-Relazione: I costrutti di base (entità, relazioni, attributi). Gerarchie di generalizzazione e identificatori. Vincoli di integrità. Documentazione di schemi ER.
Progettazione di basi di dati: Metodologie di progettazione. Analisi dei requisiti sui dati. Strategie top-down, bottom-up e mixed per la progettazione di schemi concettuali. Qualità di uno schema concettuale. Progettazione logica e modellazione del carico della base di dati; ristrutturazione dello schema dati in funzione del carico. Progettazione logica di basi di dati relazionali: regole di traduzione da schemi Entità-Relazione a schemi relazionali. Concetto di indice e criteri per la definizione di indici nella progettazione fisica di basi di dati (cenni).
La normalizzazione: Concetto di dipendenza funzionale. Forme normali di schemi di relazione: 1NF, 2NF, 3NF, Boyce-Codd NF. Decomposizione di relazioni: decomposizione senza perdita e conservazione delle dipendenze.
Sicurezza delle basi di dati: Il problema della protezione dei dati. Concetti di autenticazione, controllo dell'accesso e auditing. Politiche di sicurezza. Politiche discrezionali e mandatorie. Il problema del cavallo di Troia. Il modello di autorizzazione del SystemR. Revoca ricorsiva di autorizzazioni.
Transazioni: Concetto di transazione in un DBMS. Proprietà ACIDe delle transazioni.

Modulo di Laboratorio
DBMS. Tipologie di DBMS e architettura client/server dei DBMS. Confronto fra i principali prodotti disponibili. PostgreSQL: installazione e configurazione, architettura, principali comandi, creazione di basi di dati e utenti, creazione di tabelle, chiavi primarie e chiavi esterne, implementazione di vincoli di integrità referenziale. Strumenti CASE di supporto alla progettazione di basi di dati. Principali caratteristiche dello strumento ERWin. Reverse engineering di una base di dati.
Embedded SQL e PL/SQL. Sviluppo di applicazioni in ambiente SQL. Introduzione a embedded SQL. Il concetto di cursore. Introduzione a Oracle PL/SQL. La struttura delle istruzioni di PL/SQL. Variabili e tipi. L'uso di query SQL in programmi PL/SQL. Cicli e controllo di flusso: if, loop, while, for. Uso di cursori in PL/SQL. Introduzione a PLpgSQL. Procedure, funzioni e trigger in PLpgSQL.
Basi di dati e Web. Introduzione all'architettura Web. Il protocollo HTTP e la condizione stateless del Web. I Web Server: funzionalità generali e configurazione del Web server Apache. Architettura Web con impiego di script lato server. PHP: installazione e caratteristiche principali. Parametri e passaggio di valori fra pagine. I metodi GET e POST. Strutture di controllo, tipi di dato, variabili superglobal. Interazione con i database. Persistenza nelle comunicazioni client/server: cookie e sessioni.
Prerequisiti e modalità di esame
L'esame consiste in una prova scritta, un progetto di laboratorio e una discussione orale (facoltativa secondo il regolamento che segue).

Prova scritta
E' composta da una parte A con domande di teoria e da una parte B con esercizi. La prova scritta è valutata in trentesimi (voto S).

Progetto di laboratorio
È obbligatorio e può essere svolto in gruppi composti da un massimo di 2 studenti. Per dettagli sulle modalità di consegna e per le specifiche tecniche del progetto si veda la sezione Progetti del sito http://islab.di.unimi.it/bdlab1. Il progetto di laboratorio è valutato in trentesimi (voto P).

Discussione orale
Dopo aver sostenuto la prova scritta e il progetto di laboratorio, lo studente riceve un voto in trentesimi corrispondente alla media pesata delle due prove sostenute così calcolata:
voto=(2*S+P) / 3
Se si è conseguito un voto di almeno 25/30 in entrambe le prove (S>=25 e P>=25): la discussione orale è possibile. Se non si sostiene la discussione orale, il voto comprensivo della prova scritta e del progetto di laboratorio è automaticamente confermato.
Se NON si è conseguito un voto di almeno 25/30 in ciascuna delle due prove (S
Materiale didattico e bibliografia
· R. Elmasri, S.B. Navathe, Sistemi di basi di dati - Fondamenti (6 ed.), edizione italiana a cura di S. Castano, Pearson-Addison Wesley, 2011
(Capp.1-9, Capp.9-13, Cap. 15 (§15.1,§15.2), Cap.16)
· S.Castano. M. Fugini, G. Martella, P. Samarati, Database security, Addison Wesley, 1995.
(Cap. 1, Cap. 4 (§4.2.2). Su questo tema è disponibile una dispensa fornita dal docente)
· PostgreSQL. http://www.postgresql.org/
· PHP. www.php.net
· Materiale didattico integrativo disponibile sul sito web del corso
Periodo
Primo semestre
Periodo
Primo semestre
Modalità di valutazione
Esame
Giudizio di valutazione
voto verbalizzato in trentesimi
Docente/i
Ricevimento:
Venerdì, 11.30 - 13.30
Dipartimento di Informatica, via Comelico 39, Stanza S221
Ricevimento:
Martedì 15-16
Via Celoria 18 - Stanza 3021
Ricevimento:
Giovedì, ore 11-12 (controllare eventuali spostamenti alla pagina specificata)
Stanza S209, Dipartimento di Informatica, Via Comelico 39 - 20135 Milano