DATABASE P - Z
Anno accademico 2023/2024 - Docente: CONCETTO SPAMPINATORisultati di apprendimento attesi
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 sia alle basi di dati relazionali ed alle tecniche implementative fondate sul linguaggio SQL che alle basi di dati non relazionali (NoSQL).
Gli obiettivi formativi del corso, declinati secondo i descrittori di Dublino, sono:
Conoscenza e capacità di comprensione
- Comprendere i principali concetti di gestione e progettazione di sistemi di database
- Comprendere concetti e strumenti per l'interrogazione di basi di dati di natura differente (quindi con dati strutturati e non) e a diverse scale
- Comprendere il ruolo e l'impatto che i dati ed una loro corretta modellazione hanno sulle applicazioni software che li utilizzano
Conoscenze applicate e capacità di comprensione
- Essere in grado di progettare, partendo dai requisiti, una base di dati relazionale (e non), dal punto di vista concettuale, logico e fisico.
- Essere in grado di comprendere e utilizzare il linguaggio SQL per gestire i dati ed effettuare interrogazioni efficienti.
- Essere in grado di creare ed interrogare basi di dati non strutturate (NoSQL) tramite manipolazione di documenti JSON
Autonomia di giudizio
- Analizzare i requisiti funzionali e non-funzionali
- Comprendere le implicazioni di scelte progettuali relative ai tempi di risposta e di implementazione
- Comprendere le problematiche prestazionali associate ai diversi DBMS
Abilità comunicative
- Redigere un documento di specifiche di una database, facendo riferimento agli aspetti di modellazione concettuale e logica
- Spiegare oralmente le proprie scelte di progetto
Capacità di apprendimento
- Imparare a utilizzare le tecnologie per lo sviluppo di database e della loro scalabilità
- Imparare a confrontare schemi di progetto alternativi da diverse prospettive
- Imparare a riconoscere i principi di progetto alla base di diverse strategie di modellazione e delle tecnologie di sviluppo
Modalità di svolgimento dell'insegnamento
Lezioni frontali, esercitazioni, laboratorio e seminari.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
Prerequisiti richiesti
Conoscenze di base di programmazione.
Frequenza lezioni
Consigliata.
Contenuti del corso
Modelli e Linguaggi per Basi di Dati
- Introduzione ai Database Management Systems (DBMS): Basi di dati e sistemi di gestione delle basi di dati*, modelli dei dati*, indipendenza dei dati*.
- Database relazionali:
- Il modello relazionale: relazioni*, tabelle*, attributi*. Vincoli di integrità*. Chiavi*
- Algebra e calcolo relazionale: operazioni sugli insiemi, ridenominazione, selezione, proiezione, join, interrogazioni. Cenni sul calcolo relazionale
- Il linguaggio SQL: Definizione dei dati*, interrogazioni in SQL* (operatori aggregati, raggruppamento, interrogazioni insiemistiche, interrogazioni nidificate), Istruzioni di modifica dei dati*.
- SQL avanzato: Viste*, funzioni*, stored procedures* e asserzioni. Trigger*, transazioni* e controllo degli accessi
- Un esempio di DMBS relazionale: MySQL.
- Database NoSQL:
- JSON*
- ACID vs BASE*
- Modelli "schema-less"*
- Tipi di database NoSQL*: chiave-valore, document-based, column-based e graph-based
- Teorema CAP*
- Panoramica database NoSQL: MongoDB, Redis, Cassandra, HBase, Neo4j
- MongoDB*: Selettori, Ricerca, Ordinamento, Pipeline, Raggrumenti e Aggregazione
- 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*.
* Conoscenze minime irrinunciabili per il superamento dell'esame.
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. Appunti e dispense del docente
Programmazione del corso
Argomenti | Riferimenti 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 relazionale | Testo 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 MySQL | Dispense del docente |
5 | SQL: viste, asserzioni, funzioni, stored procedures | Testo 1. Capitolo 5 |
6 | SQL: Trigger, transazioni e controllo degli accessi | Testo 1. Capitolo 5 |
7 | Progettazione delle basi di dati: metodologie, Il modello Entità-Relazione, documentazione degli schemi, raccolta dei requisiti, qualità di uno schema concettuale | Testo 1. Cap. 6 e 7, Dispense del docente |
8 | La progettazione logica: analisi delle prestazioni su schemi ER, ristrutturazione di schemi, traduzione nel modello relazionale | Testo 1. Capitolo 8 |
9 | Database NoSQL: Proprietà ACIDE vs BASE, Tipi di database NoSQL, Teorema CAP, | Dispense del docente |
10 | MongoDB: Selettori, Ricerca, Ordinamento, Pipeline, Raggrumenti e Aggregazione | Dispense del docente |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame consiste in due prove da svolgere in laboratorio riguardanti: 1) la progettazione di una base di dati, a partire da un insieme di requisiti e dai dati di carico a regime, e la successiva implementazione in MySQL, e 2) la realizzazione di pipeline MongoDB per l'interrogazione di database non relazionali. La prima prova influirà al 70% sul voto del modulo, mentre la seconda al 30%.
Il voto complessivo sul modulo di database influirà al 50% sul voto totale del corso. La prova viene valutata in base alla capacità di analisi del problema e di giustificare le scelte progettuali, alla correttezza dello schema E/R proposto, alla correttezza e completezza dell'implementazione in SQL, la correttezza e completezza delle query NoSQL.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Esempi di domande e/o esercizi frequenti
Esempi di compiti riguardanti la prova di teoria e di laboratorio sono disponibili su Studium.