Corso di Basi di Dati A.A. 2011-12 Informazioni Generali Il corso di Basi di Dati vale 10 crediti (4 dei quali dedicati alle attività di laboratorio) e si svolge nel primo semestre del II anno del Corso di Laurea in Informatica. Obiettivi formativi Obiettivo del corso è fornire gli strumenti e le metodologie per la progettazione, per la progettazione, la gestione e il mantenimento di basi di dati. L’attenzione è focalizzata sulle basi di dati relazionali e sui relativi sistemi di gestione fondati sul linguaggio standard per DBMS relazionali SQL. In particolare, si fornirà agli studenti la conoscenza dei costrutti di base e avanzati di SQL, delle tecnologia per la gestione della concorrenza e il recovery di transazioni, delle tecniche di memorizzazione, organizzazione, accesso ai dati. Le attività di laboratorio sono dedicate allo svolgimento di un progetto didattico che permetta allo studente di mettere in pratica le conoscenze acquisite durante le lezioni teoriche. Programma del Corso 1. Introduzione: le basi di dati e i DBMS 2. Progettazione di basi di dati: 2.1. Progettazione concettuale 2.2. Progettazione logica 3. La progettazione concettuale 3.1. Il modello Entità-Relazione: entità, attributi, associazioni, generalizzazioni 3.2. Progettazione di uno schema concettuale 4. Il modello dei dati relazionale 4.1. Relazioni, chiavi primarie, chiavi secondarie, vincoli d’integrità 5. La progettazione logica 5.1. Ristrutturazione di schemi E-R 5.2. Traduzione di uno schema concettuale ristrutturato in uno schema logico relazionale 6. Algebra Relazionale 6.1. Operatori insiemistici (unione, intersezione, differenza) 6.2. Ridenominazione, selezione, proiezione 6.3. Join 6.4. L’Algebra Relazionale come linguaggio di interrogazione 7. SQL 7.1. SQL Data Definition Language: 7.2. Definizione di schemi in SQL: Definizione di tabelle, di vincoli (intra-relazionali semplici, di integrità referenziale, generici). 7.3. Interrogazioni semplici 7.4. Operatori aggregati 7.5. Interrogazioni con raggruppamento 7.6. Interrogazioni di tipo insiemistico 7.7. Interrogazioni nidificate (operatori : in, not in, exists, not exist) Corso di Basi di Dati A.A. 2011-12 8. Viste, asserzioni e trigger in SQL, Procedure memorizzate (stored procedure e function) 9. Transazioni 9.1. Concetti generali 9.1.1. Specifica delle transazioni: commit e rollback 9.1.2. Proprietà “acide” delle transazioni 9.2. Controllo di affidabilità 9.2.1. Organizzazione del log Esecuzione delle transazioni e scrittura del log 9.2.2. 9.2.3. Gestione dei guasti 9.3. Controllo di concorrenza 9.3.1. Anomalie delle transazioni concorrenti 9.3.2. Teoria del controllo di concorrenza: serializzabilità e grafo dei conflitti 9.3.3. Meccanismi per la gestione dei lock: protocolli 2PL e 2PL stretto 9.3.4. Blocco critico 10. Organizzazione fisica di una base di dati 10.1. Metodi di accesso primari e secondari 10.2. Accesso sequenziale, funzioni hash, B-Tree e B+-tree 11. Ottimizzazione di interrogazioni 11.1. Ottimizzazione logica 11.2. Ottimizzazione fisica 11.3. Piani di esecuzione Testi consigliati: 1. Atzeni et al, “Basi di Dati – Modelli e linguaggi di interrogazioni”, Terza Edizione, McGraw-Hill 2. Ramez A. Elmasri, Shamkant B. Navathe, Sistemi di basi di dati - Fondamenti e Complementi, Pearson - Addison Wesley 3. A. Albano, Costruire Sistemi per Basi di Dati, Addison-Wesley, Milano, 2001.