Basi di dati

A.A. 2019/2020
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

Edizione attiva
Responsabile
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Docente: Ferrara Alfio
Turno A
Docente: Montanelli Stefano
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.
Embedded SQL e PL/SQL. Sviluppo di applicazioni in ambiente SQL. Introduzione a embedded SQL. Il concetto di cursore. Introduzione a PLpgSQL. La struttura delle istruzioni di PLpgSQL. Variabili e tipi. L'uso di query SQL in programmi PLpgSQL. Cicli e controllo di flusso: if, loop, while, for. Uso di cursori in PLpgSQL. Trigger in PLpgSQL.
Basi di dati e Web. Introduzione all'architettura Web. Il protocollo HTTP e la condizione stateless del Web. 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
La prova scritta è composta da una parte A con quiz e una parte B con esercizi su tutto il programma del modulo di basi di dati. La prova scritta è valutata in trentesimi (voto S).
La prova di laboratorio è composta da una parte A con quiz e una parte B con esercizi su tutto il programma del modulo di laboratorio. La prova di laboratorio si svolge in aula informatizzata ed è valutata in trentesimi (voto P).

Dopo aver sostenuto la prova scritta e la prova di laboratorio, lo studente riceve un voto in trentesimi corrispondente alla media pesata delle due prove sostenute così calcolata:
voto=(2*S+P) / 3
La discussione orale è possibile se si è conseguito un voto di almeno 25/30 in entrambe le prove (S>=25 e P>=25). Se non si sostiene la discussione orale, il voto comprensivo della prova scritta e della prova 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: prova scritta + prova di laboratorio + eventuale discussione orale.
Modalità di frequenza: fortemente consigliata.
Modalità di erogazione: lezioni frontali e di laboratorio in aula informatizzata.
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.
Embedded SQL e PL/SQL. Sviluppo di applicazioni in ambiente SQL. Introduzione a embedded SQL. Il concetto di cursore. Introduzione a PLpgSQL. La struttura delle istruzioni di PLpgSQL. Variabili e tipi. L'uso di query SQL in programmi PLpgSQL. Cicli e controllo di flusso: if, loop, while, for. Uso di cursori in PLpgSQL. Trigger in PLpgSQL.
Basi di dati e Web. Introduzione all'architettura Web. Il protocollo HTTP e la condizione stateless del Web. 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
La prova scritta è composta da una parte A con quiz e una parte B con esercizi su tutto il programma del modulo di basi di dati. La prova scritta è valutata in trentesimi (voto S).
La prova di laboratorio è composta da una parte A con quiz e una parte B con esercizi su tutto il programma del modulo di laboratorio. La prova di laboratorio si svolge in aula informatizzata ed è valutata in trentesimi (voto P).

Dopo aver sostenuto la prova scritta e la prova di laboratorio, lo studente riceve un voto in trentesimi corrispondente alla media pesata delle due prove sostenute così calcolata:
voto=(2*S+P) / 3
La discussione orale è possibile se si è conseguito un voto di almeno 25/30 in entrambe le prove (S>=25 e P>=25). Se non si sostiene la discussione orale, il voto comprensivo della prova scritta e della prova 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
Siti didattici
Docente/i
Ricevimento:
Venerdì, 11.30 - 13.30
Dipartimento di Informatica, via Comelico 39, Stanza S221
Ricevimento:
Giovedì, ore 11-12 (controllare eventuali spostamenti alla pagina specificata)
Stanza S209, Dipartimento di Informatica, Via Comelico 39 - 20135 Milano