Basi di dati

Programma del corso 2008/2009

Introduzione
Sistemi informativi e sistemi informatici. Le basi di dati. Il DBMS. I modelli dei dati. Schemi e livelli di astrazione in una base di dati. L'architettura ANSI/SPARC a tre livelli. Tipologie di utenti di un DBMS. Linguaggi per basi dati: DDL e DML. Cenni a JDBC e SQLJ.

Il modello relazionale
Prodotti cartesiani e relazioni. Relazioni con attributi: tuple, domini. Relazioni e basi di dati. Schemi e istanze di basi di dati. Corrispondenze fra relazioni. Informazione incompleta e valori nulli. Vincoli di integrità. Vincoli intrarelazionali: vincoli di tupla, vincolo di chiave. Vincoli interrelazionali: vincoli di integrità referenziale.

L'algebra relazionale
Operatori dell'algebra relazionale: operatori insiemistici, ridenominazione, proiezione, selezione, join. Join naturale. Join esterno. Theta-join. Interrogazioni in algebra relazionale. Trasformazioni di equivalenza per espressioni in algebra relazionale. Algebra con valori nulli. Viste.

Calcolo relazionale
Calcolo su domini. Costruzione delle formule: operatori logici and, or e not; quantificatore esistenziale e universale; leggi di De Morgan. Interrogazioni in calcolo sui domini. Calcolo su tuple con dichiarazione di range. Interrogazioni in calcolo su tuple. Limitazioni del calcolo relazionale. Il caso della chiusura transitiva.

Progettazione di basi di dati
Il ciclo di vita dei sistemi informativi. Raccolta e analisi dei requisiti. Le fasi di progettazione: progettazione concettuale, progettazione logica, progettazione fisica. I modelli concettuali. Il modello entità-relazione (ER): entità, relazioni, attributi, cardinalità delle relazioni, identificatori delle entità, gerarchie di entità. Documentazione degli schemi concettuali. Il dizionario dei dati. Vincoli di integrità e regole aziendali.

Progettazione concettuale
Fonti dei requisiti. Organizzazione e scrittura dei requisiti. Sviluppo del modello ER. Strategie di progetto: bottom-up, top-down, inside-out e ibrida. Qualità di uno schema concettuale. Strumenti CASE per la progettazione. Esempio di progettazione concettuale.

Progettazione logica
Analisi delle prestazioni su schemi ER. Volume dei dati. Caratteristiche delle operazioni: schema di operazioni e tavola degli accessi. Ristrutturazione di schemi ER: analisi delle ridondanze, eliminazione delle generalizzazioni, partizionamento/accorpamento di entità e associazioni, scelta degli identificatori primari. Traduzione verso il modello relazionale. Traduzione di relazioni molti-a-molti, uno-a-molti e uno-a-uno. Un esempio di progettazione logica. Uso di strumenti CASE per la progettazione logica.

Forme normali
Ridondanze e anomalie. Le dipendenze funzionali. Dipendenze non banali. Dipendenze e chiavi. Forma normale di Boyce e Codd. Normalizzazione in BCNF. Decomposizioni senza perdite. Decomposizioni con conservazione delle dipendenze. La terza forma normale. Decomposizione in 3FN. Normalizzazione e schemi concettuali.

Linguaggio SQL
Lo standard SQL-2. Definizione di schemi in SQL: tipi di dato di base e definiti dall'utente, definizione di tabelle; definzione dello schema; definizione di vincoli (intrarelazionali semplici, di integrità referenziale, e generici). Definizione di indici. Istruzioni per la modifica dello schema. Interrogazioni in SQL: il comando select; formule di selezione; ordinamento del risultato; join di tabelle. Uso di varaibili. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni nidificate. Operatori su insiemi. Istruzioni di inserimento, cancellazione e modifica. Le asserzioni. Le viste. Controllo degli accessi: identificazione, risorse e privilegi.

Esercitazioni

Uso di un DBMS
Esercitazioni in laboratorio con PostgreSQL: creazione di tabelle e interrogazioni in SQL.

Accesso a basi di dati da programma
Embedded SQL in C: i cursori, SQL dinamico, prepare, transazioni. Procedure SQL. Accesso a basi di dati con programmazione ad oggetti: JDBC in Java. Il driver JDBC. Connessione ad un DBMS. Esecuzione di interrogazioni e accesso ai risultati. Il catalogo di una base di dati. Controllo delle transazioni con JDBC.

Testo consigliato

[1] Atzeni, Ceri, Paraboschi, Torlone, "Basi di dati - seconda edizione", McGraw-Hill

Testi di consultazione

[1] C. J. Date, "An Introduction to Database Systems - seventh edition", Addison Wesley