Anno accademico 2022-2023

BASI DI DATI E LABORATORIO

Docenti

Angelo Montanari
Dario Della Monica
Nicola Saccomanno
Anno di corso
3
Totale crediti
12
Periodo didattico
Primo Periodo
Tipologia
Caratterizzante
Prerequisiti. Lo studente deve conoscere le nozioni fondamentali fornite dai corsi di programmazione, algoritmi e strutture dati e sistemi operativi. Non vi sono propedeuticità.
Metodi didattici. Il corso si articola in un insieme di lezioni e di esercitazioni, entrambe svolte in classe, più un’attività di laboratorio, che consiste nella progettazione, nello sviluppo, nell’implementazione e nell’analisi di una base di dati. L’attività di laboratorio e le esercitazioni hanno l’obiettivo di mostrare allo studente come affrontare e risolvere problemi di (i) progettazione e sviluppo di una base di dati, (ii) sintesi di operazioni di definizione, interrogazione e aggiornamento di una base di dati, (iii) definizione di indici e (iv) gestione delle transazioni. In particolare, l’attività di laboratorio vuole consentire agli studenti di sperimentare sul campo le nozioni via via apprese durante il corso.
Modalità di verifica. L’esame prevede un’estesa parte scritta (obbligatoria), che copre tutti i contenuti del corso, una parte orale (che può essere richiesta dal docente o dallo studente), che di norma inizia con una discussione della prova scritta, in particolare delle eventuali criticità di alcune delle soluzioni proposte, e si estende a tutti i contenuti del corso, e un progetto di laboratorio.
Altre informazioni. Tutto il materiale didattio del corso, inclusi gli esercizi e i dati per le attività laboratoriali, sono disponibili attraverso la piattaforma di elearning d’ateneo

e le pagine web dei docenti.

Obiettivi formativi
Obiettivo fondamentale del corso è l’acquisizione dei concetti, degli strumenti e delle metodologie fondamentali nel campo delle basi di dati, con particolare attenzione ai modelli (concettuale, logico e fisico), ai linguaggi (di definizione, di aggiornamento e di interrogazione) e all’architettura dei sistemi per basi di dati. Vengono fornite le nozioni fondamentali inerenti ai linguaggi per la definizione, l’interrogazione e l’aggiornamento dei dati (algebra relazionale, calcolo relazionale, SQL). Vengono inoltre forniti elementi di progettazione concettuale (raccolta e analisi dei requisiti, costruzione di modelli Entità/Relazioni), logica (ristrutturazione di schemi concettuali, trasformazione di schemi concettuali in schemi logici, normalizzazione dei dati) e fisica (strutture di indicizzazione). Infine, viene introdotta la nozione di transazione e vengono analizzate le componenti principali di un sistema di gestione dei dati. Dopo aver superato l’esame si ritiene che lo studente sia in grado di formalizzare in un linguaggio relazionale operazioni di definizione e manipolazione dei dati espresse in linguaggio naturale e di progettare semplici basi di dati a livello concettuale (costruzione di schemi Entità/Relazioni a partire da insiemi di requisiti espressi in linguaggio naturale), logico (trasformazione di schemi Entità/Relazioni in schemi relazionali, formalizzazione della semantica intesa delle relazioni tramite dipendenze funzionali, normalizzazione di schemi relazionali) e fisico (definizione degli opportuni indici).

CAPACITÀ RELATIVE ALLE DISCIPLINE

1.1. Conoscenza e capacità di comprensione

Concetto di “modello dei dati”.

Modelli per la progettazione concettuale di una base di dati.

Il modello relazionale.

Linguaggi formali per la definizione e la manipolazione dei dati: algebra relazionale e calcolo relazionale.

Elementi architetturali di un sistema di gestione dei dati.

Politiche e meccanismi per la gestione concorrente delle transazioni.

Algoritmi e strutture dati per l’indicizzazione efficiente dei dati.

1.2. Conoscenza e capacità di comprensione applicate

Elementi di progettazione concettuale: analisi e raccolta dei requisiti, diagrammi Entità/Relazione.

Progettazione logica e fisica di una base di dati.

Il linguaggio SQL.

Procedure memorizzate, funzioni definite dall’utente e trigger.

Casi di studio: i sistemi di gestione dei dati PostgreSQL e MySQL.

CAPACITÀ TRASVERSALI / SOFT SKILLS

2.1. Autonomia di giudizio

Analizzare e formalizzare i requisiti fondamentali di un sistema informativo.

Confrontare soluzioni diverse di un problema di gestione dei dati.

Formulare in modo corretto interrogazioni complesse.

Valutare l’opportunità o meno di usare strutture d’indicizzazione per l’ottimizzazione delle interrogazioni.

2.2. Abilità comunicative

Interagire con i soggetti direttamente o indirettamente coinvolti in un progetto di gestione dei dati.

Motivare le scelte poste in atto in tutte le fasi della progettazione di un sistema informativo.

2.3. Capacità di apprendimento

Apprendere in modo autonomo il funzionamento di ulteriori software di gestione di gestione dei dati.

Approfondire ulteriori tematiche inerenti alle basi dei dati, quali, ad esempio, le basi di dati XML, i data warehouse, la sicurezza e protezione dei dati.

Affrontare le problematiche di gestione dei dati in applicazioni specifiche, come ad esempio, le basi di dati biologici o spazio-temporali.

Contenuti
Concetti di base. Ruolo e funzionalità di una base di dati; astrazioni sui dati; modelli concettuali, logici e fisici; istanze e schemi; indipendenza logica e fisica; linguaggi per definizione e manipolazione dei dati; DBMS; amministratore e utenti di una base di dati; dizionario dei dati; architettura di una base di dati.

Modelli Entità/Relazioni (ER) e relazionale. Metodologie, tecniche e modelli per il progetto di una base di dati; costrutti di base del modello ER: tipi e istanze di entità e relazioni, attributi e chiavi (identificatori interni ed esterni, entità deboli), dominio di un attributo e utilizzo dei NULL, vincoli di partecipazione e rapporti di cardinalità, relazioni ricorsive e ruoli, relazioni di grado >= 2, diagrammi ER; documentazione di schemi ER: tecniche di documentazione, regole di gestione; costrutti avanzati: specializzazioni e categorie. Modellazione dei dati in UML (cenni). Modello relazionale: nozioni di base, relazioni, vincoli intra- e inter-relazionali, schemi e istanze, operazioni di aggiornamento delle relazioni, politiche di reazione alle violazioni dei vincoli.

Progettazione delle basi di dati. Progettazione concettuale: raccolta e analisi dei requisiti, criteri generali di rappresentazione, strategie di progetto, qualità di uno schema concettuale, strumenti. Progettazione logica: analisi delle prestazioni su schemi ER, ristrutturazione di schemi ER (analisi delle ridondanze, eliminazione delle gerarchie, partizionamento/accorpamento di entità e/o relazioni, scelta delle chiavi primarie), traduzione di schemi ER in schemi relazionali; teoria della progettazione delle basi di dati relazionali: dipendenze funzionali, scomposizione di relazioni (lossless-join e conservazione delle dipendenze), forme normali.

Algebra relazionale, calcolo relazionale e SQL. Algebra relazionale: operazioni di base, derivate e addizionali, interrogazioni, ottimizzazione algebrica, limiti dell’algebra relazionale; calcolo relazionale: nozioni di base, calcoli relazionali su domini e su tuple con dichiarazioni di range, confronto tra i 2 calcoli, legame tra calcolo relazionale e algebra relazionale. SQL: definizione dei dati; interrogazioni; istruzioni di aggiornamento; altre definizioni dei dati (vincoli di integrità generici, viste, specifica di vincoli di addizionali sotto forma di asserzioni); il DBMS PostgreSQL; cenni a SQL e linguaggi di programmazione (trigger, funzioni e procedure).

Organizzazione fisica dei dati. Memorizzazione dei record ed organizzazione dei file primari: introduzione, gestione della memoria secondaria, memorizzazione di file di record su disco, operazioni sui file, file di record non ordinati e ordinati, tecniche di hashing, altre organizzazioni dei file primari, uso della tecnologia RAID per parallelizzare l’accesso a disco. Strutture di indicizzazione dei file: indici ordinati di singolo livello, multilivello statici, multilivello dinamici (B-alberi e B+-alberi), altri tipi di indice (cenni).

Tecnologia delle basi di dati centralizzate. Transazioni: introduzione, proprietà, scheduling e recupero delle transazioni, tecniche di serializzazione, supporto alle transazioni in SQL. Gestore del buffer: architettura, primitive. politiche di gestione, gestore del buffer e file system. Controllo della concorrenza: problematiche, architettura, anomalie delle transazioni concorrenti, tecniche basate su viste, conflitti, locking a due fasi (2PL e 2PL stretto) e timestamp, tecniche multiversione, granularità dei dati. Controllo dell’affidabilità: concetti di base, architettura, memoria stabile, file di log, gestione delle transazioni, gestione dei guasti. Elaborazione e ottimizzazione delle interrogazioni: i cataloghi di sistema; ottimizzazione delle interrogazioni (rappresentazione interna, profili, ottimizzazione basata sui costi); progettazione fisica di una base di dati.

Testi di riferimento
– Appunti delle lezioni.

– Slide e dispense sul sito del materiale didattico e sul sito del docente.

– Uno tra i seguenti due testi:

R. Elmasri, S. Navathe, Fundamentals of Database Systems (7th Edition), Pearson International Education / Addison Wesley, 2016.

P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone, Basi di Dati (quinta edizione), McGraw-Hill, 2018.