Basi di dati

A.A. 2024/2025
12
Crediti massimi
120
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
L'insegnamento fornisce i concetti fondamentali relativi alle basi di dati e ai sistemi per la loro gestione, con particolare riguardo ai sistemi di basi di dati relazionali. Il corso prevede i) una parte di teoria dedicata a modelli, linguaggi, metodologie di progettazione e agli aspetti di sicurezza e transazioni, e ii) una parte di laboratorio dedicata all'uso di strumenti di progettazione e gestione di basi di dati relazionali e alle principali tecnologie di basi di dati e Web.
Risultati apprendimento attesi
Lo studente acquisirà le seguenti conoscenze e acquisirà le competenze pratiche a esse corrispondenti: progettare lo schema concettuale e lo schema relazionale di una base di dati sia partendo da una descrizione informale della realtà applicativa di riferimento sia partendo da un insieme di dati non strutturati; verificare il livello di normalizzazione dello schema e comprendere i concetti di dipendenza funzionale e normalizzazione; comprendere e eseguire correttamente query SQL complesse e definirne il piano di esecuzione in termini di operazioni di algebra relazionale; comprendere, progettare e definire le diverse tipologie di indici per ottimizzare l'accesso ai dati; realizzare funzionalità attive della base di dati per mezzo di procedure SQL; comprendere il funzionamento e realizzare interfacce web per l'accesso ai dati.
Corso singolo

Questo insegnamento può essere seguito come corso singolo.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre

Programma
L'insegnamento prevede una parte di teoria e una parte di laboratorio.

I temi trattati nella parte di teoria 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 (Structured Query Language)
- Organizzazione fisica dei dati e indici
- Sicurezza e controllo dell'accesso
- Transazioni (concetti generali)

I temi trattati nella parte di laboratorio:
- Il DBMS PostgreSQL
- Creazione, manipolazione e dump di schemi
- Gestione degli accessi (firewall), utenze e ruoli
- Linguaggio procedurale (PLpgSQL)
- Architettura client/server delle applicazioni web e protocollo HTTP
- Programmazione web con HTML e PHP
- Passaggio di parametri GET/POST
- Interazione con i DBMS

Un elenco dettagliato degli argomenti trattati è disponibile sul sito web dell'insegnamento (piattaforma Ariel).
Prerequisiti
Conoscere almeno un linguaggio di programmazione imperativo. Possedere nozioni di base di logica proposizionale.
Il superamento dell'esame di Programmazione è propedeutico all'insegnamento di Basi di Dati.
Metodi didattici
La parte di teoria si svolge mediante lezioni frontali. Sono previste sessioni di esercitazione nelle quali gli studenti svolgono esercizi che sono poi corretti e commentati in aula. La parte di laboratorio si compone di lezioni frontali, esercizi guidati e attività pratiche svolte in aula informatica.
La frequenza, per quanto non obbligatoria, è fortemente consigliata.
Materiale di riferimento
Il materiale di riferimento per studenti frequentanti e non frequentanti è il medesimo.
Per la parte di teoria, si consideri un testo a scelta tra:
- R. Elmasri, S.B. Navathe, Sistemi di basi di dati - Fondamenti e Complementi (7 ed.), Pearson, 2018.
- P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, Basi di dati (VI ed.), McGraw-Hill, 2023.

Per la parte di laboratorio, si considerino i manuali online degli strumenti utilizzati:
- PostgreSQL (https://www.postgresql.org/docs/manuals/)
- PHP (https://www.php.net/download-docs.php)

Ulteriore materiale integrativo viene reso disponibile sul sito web dell'insegnamento (piattaforma Ariel) durante lo svolgimento del corso.
Modalità di verifica dell’apprendimento e criteri di valutazione
Studenti frequentanti e non frequentanti. L'esame consiste di due prove obbligatorie che riguardano rispettivamente la parte di teoria e la parte di laboratorio. Lo studente può sostenere la prova di teoria e la prova di laboratorio nell'ordine che preferisce. Tra le due prove, non dovrà trascorrere un periodo di tempo superiore ad un anno, pena l'annullamento del voto della prova già sostenuta.

Prova di teoria
Si svolge in forma scritta, verte sull'intero programma della parte di teoria e ha una durata indicativa di due ore. La prova è composta da una parte A con domande a risposta chiusa e da una parte B con esercizi. Per poter sostenere la prova è necessario iscriversi ad una delle sessioni d'esame indicate da calendario. La prova di teoria è valutata in trentesimi (voto S) e tiene conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di esercizi, completezza delle risposte, correttezza dei ragionamenti nello svolgimento degli esercizi. Se si consegue un voto almeno pari a 25/30 è facoltà dello studente chiedere di sostenere una discussione orale per migliorare il voto. Se non si sostiene la discussione orale, il voto della prova di teoria è automaticamente confermato. Se si consegue un voto inferiore a 25/30 la discussione orale NON è possibile.

Prova di laboratorio
Consiste in un progetto e una prova orale della durata indicativa di trenta minuti, entrambe obbligatorie. Il progetto mira ad approfondire gli aspetti pratici di uno o più argomenti trattati nel laboratorio. La discussione orale si concentra sugli argomenti affrontati nello sviluppo del progetto e mira a valutarne la qualità. Le tematiche e le specifiche del progetto sono proposte al termine delle lezioni di laboratorio. Il progetto viene svolto solo individualmente entro i 12 mesi successivi alla pubblicazione. Per poter sostenere la prova orale è necessario iscriversi ad una delle sessioni d'esame indicate da calendario e inviare il materiale prodotto secondo le specifiche del progetto. La prova di laboratorio è valutata in trentesimi (voto P) e tiene conto dei seguenti parametri: grado di conoscenza degli argomenti, capacità di applicare le conoscenze alla risoluzione di un progetto concreto, qualità del progetto sviluppato, capacità di ragionamento critico, chiarezza espositiva e proprietà di linguaggio.

Voto finale
Dopo aver sostenuto la prova di teoria e la prova di laboratorio, lo studente riceve una proposta di voto in trentesimi corrispondente alla media pesata delle due prove sostenute così calcolata: voto=(2S+P)/3. Lo studente ha facoltà di rifiutare la proposta di voto. In questo caso, è facoltà dei docenti permettere allo studente di conservare il voto ricevuto in una delle due prove (teoria o laboratorio).
INF/01 - INFORMATICA - CFU: 12
Laboratori: 48 ore
Lezioni: 72 ore
Turni:
Turno
Docente: Montanelli Stefano
Turno A
Docente: Bellandi Valerio
Turno B
Docente: Livraga Giovanni
Docente/i
Ricevimento:
su appuntamento
stanza 7008
Ricevimento:
su appuntamento
Ricevimento:
Su appuntamento da concordare via email
Stanza 7015, Dipartimento di Informatica "Giovanni degli Antoni", Via Celoria 18 - 20133 Milano