Castano Silvana
BASI DI DATI
Obiettivi (dettagli AF)
Il corso si propone di fornire i concetti fondamentali relativamente alle basi di dati e ai sistemi per la
loro gestione, con particolare riguardo ai sistemi di basi di dati relazionali. Il corso prevede una parte
di teoria dedicata a modelli, linguaggi, metodologie di progettazione e agli aspetti di sicurezza e
transazioni, e una parte di laboratorio dedicata all'acquisizione e uso di strumenti di gestione e
progettazione di basi di dati relazionali e alle principali tecnologie di basi di dati e Web.
Programma in Italiano
Modulo di basi di dati
Introduzione alle basi di dati: Sistemi informativi, informazioni e dati. Basi di dati e sistemi di gestione
di basi di dati. Modelli dei dati. Concetti di schema e istanza. Livelli di astrazione nei DBMS.
Indipendenza dei dati. Linguaggi e utenti delle basi di dati.
Il modello relazionale: Relazioni e tabelle. Schema e istanza di una relazione. Caratteristiche delle
relazioni. Informazione incompleta e valori nulli. Chiavi. Vincoli di integrità. Algebra relazionale:
definizioni, operatori. Definizione di equivalenza di espressioni relazionali e trasformazioni di
equivalenza.
Il linguaggio SQL: Definizione dei dati in SQL. Definizione di schemi, tabelle, domini. Rappresentazione
di vincoli. Operazioni di modifica e cancellazione degli elementi dello schema. Interrogazioni in SQL:
interrogazioni semplici, operatori aggregati, interrogazioni con raggruppamento, interrogazioni di tipo
insiemistico, interrogazioni nidificate. Manipolazione dei dati in SQL: operazioni di insert, delete, e
update. Asserzioni. Vincoli di integrità generici. Trigger: definizione e uso (cenni). Viste: definizione,
uso, problemi di aggiornabilità (cenni).
Il modello Entità-Relazione: I costrutti di base (entità, relazioni, attributi). Gerarchie di
generalizzazione e identificatori. Vincoli di integrità. Documentazione di schemi ER.
Progettazione di basi di dati: Metodologie di progettazione. Analisi dei requisiti sui dati. Strategie
top-down, bottom-up e mixed per la progettazione di schemi concettuali. Qualità di uno schema
concettuale. Progettazione logica e modellazione del carico della base di dati; ristrutturazione dello
schema dati in funzione del carico. Progettazione logica di basi di dati relazionali: regole di traduzione
da schemi Entità-Relazione a schemi relazionali. Concetto di indice e criteri per la definizione di indici
nella progettazione fisica di basi di dati (cenni).
La normalizzazione: Concetto di dipendenza funzionale. Forme normali di schemi di relazione: 1NF,
2NF, 3NF, Boyce-Codd NF. Decomposizione di relazioni: decomposizione senza perdita e
conservazione delle dipendenze.
Sicurezza delle basi di dati: Il problema della protezione dei dati. Concetti di autenticazione, controllo
dell'accesso e auditing. Politiche di sicurezza. Politiche discrezionali e mandatorie. Il problema del
cavallo di Troia. Il modello di autorizzazione del SystemR. Revoca ricorsiva di autorizzazioni.
Transazioni: Concetto di transazione in un DBMS. Proprietà ACIDe delle transazioni.
Modulo di laboratorio
DBMS. Tipologie di DBMS e architettura client/server dei DBMS. Confronto fra i principali prodotti
disponibili. PostgreSQL: installazione e configurazione, architettura, principali comandi, creazione di
basi di dati e utenti, creazione di tabelle, chiavi primarie e chiavi esterne, implementazione di vincoli
di integrità referenziale. Strumenti CASE di supporto alla progettazione di basi di dati. Principali
caratteristiche dello strumento ERWin. Reverse engineering di una base di dati.
Embedded SQL e PL/SQL. Sviluppo di applicazioni in ambiente SQL. Introduzione a embedded SQL. Il
concetto di cursore. Introduzione a Oracle PL/SQL. La struttura delle istruzioni di PL/SQL. Variabili e
tipi. L'uso di query SQL in programmi PL/SQL. Cicli e controllo di flusso: if, loop, while, for. Uso di
cursori in PL/SQL. Introduzione a PLpgSQL. Procedure, funzioni e trigger in PLpgSQL.
Basi di dati e Web. Introduzione all’architettura Web. Il protocollo HTTP e la condizione stateless del
Web. I Web Server: funzionalità generali e configurazione del Web server Apache. Programmazione
lato client, programmazione lato server e tecnologia CGI. Architettura Web con impiego di script lato
server. PHP: installazione e caratteristiche principali. Parametri e passaggio di valori fra pagine. I
metodi GET e POST. Strutture di controllo, tipi di dato, variabili superglobal. Interazione con i
database, il driver ODBC, il driver JDBC, librerie di comunicazione con PostgreSQL, le librerie PEAR.
Persistenza nelle comunicazioni client/server: cookie e sessioni. Interazione con il file system:
upload/download di oggetti. Invio di posta elettronica tramite script PHP. Linguaggio XML e utilizzo di
XML con PHP.
Programma in Inglese
Database module
Introduction to databases. Information systems, information, data. Database and Database
Management System (DBMS). Data models. Database schema and instance. Abstraction levels in
DBMSs. Data independence. Database languages and users.
Relational data model. Relations and tables. Relational schema and instance. Properties of relations.
Null values. Definitions and properties of keys. Integrity constraints. Relational algebra: definitions,
operations. Equivalence of relational algebra expressions and transformation rules.
SQL. SQL Data Definition Language. Definition of schemas, tables, domains. Specifying constraint in
SQL. Schema change statements in SQL. SQL Query Language: basic SQL queries, complex SQL queries.
SQL Data Manipulation Language: insert, delete, and update statements. Specifying constraints as
assertions. Triggers in SQL: specification and use. Views in SQL: specification and use. View update
problems.
Entity-Relationship model. Basic elements: entity, relationship, attribute. Generalization hierarchies.
Identifiers. Integrity constraints. ER schema documentation.
Database design. Database design methodology. Requirements collection and analysis. Conceptual
database design strategies: top-down, bottom-up, inside-out, mixed. Quality of ER schemas. Logical
design. Schema restructuring. Relational database logical design by ER-to-relational mapping. Physical
design. Introduction to indexes and general guidelines for relational database physical design.
Normalization. Definition of functional dependency. Relation Normal Forms: 1NF, 2NF, 3NF, BoyceCodd NF. Relation decomposition. Dependency preservation property and lossless join property of
decompositions.
Database security. Introduction to data security. Authentication, access control, auditing. Security
policies. Discretionary and mandatory access control policies. The Trojan horse problem. The System
R authorization model. Gran and revoke of authorizations. SQL GRANT and REVOKE statements.
Cascade revoke.
Transactions. Introduction to transactions in DBMS. ACID transaction properties.
Laboratory module
DBMS. DBMS classification and client/server architecture of DBMS. Comparison of the main existing
DBMS. PostgreSQL: installation and configuration, architecture, main commands, database and user
creation, table creation, primary key and foreign key constraints, referential integrity constraints.
CASE tools for database design support. Main features and commands of the PowerDesigner CASE
tool. Reverse database engineering.
Embedded SQL and PL/SQL. Application development in a DBMS environment with the SQL language.
Introduction to embedded SQL. The notion of cursor. Introduction to the Oracle PL/SQL. Loops and
flow control: if, loop, while, for statements. Use of cursors in PL/SQL. Introduction to PLpgSQL.
Procedures, functions, and triggers in PLpgSQL.
Web and databases. Introduction to the Web architecture. The HTTP protocol. Stateless property of
the Web. Web Server: general functionalities; configuration of the Apache Web server. Client-side
programming, server-side programming, CGI technology. Web architecture with server-side script.
PHP: installation and general features. Parameter exchange between pages. GET and POST methods
in HTTP. Control stuctures, data types, superglobal variables. Interaction with DBMS, the ODBC driver,
the JDBC driver, the PostgreSQL library, the PEAR libraries. Persistency in client/server
communications: cookie and sessions. Interaction with the file system: object upload/download.
Email transmission in PHP. XML language and use of XML in PHP.
Propedeuticità consigliate
Programmazione
Materiale di riferimento
 R. Elmasri, S.B. Navathe, Sistemi di basi di dati – Fondamenti (6 ed.), edizione italiana a cura
di S. Castano, Pearson-Addison Wesley, 2011
(Capp.1-9, Capp.9-13, Cap. 15 (§15.1,§15.2), Cap.16)




S.Castano. M. Fugini, G. Martella, P. Samarati, Database security, Addison Wesley, 1995.
(Cap. 1, Cap. 4 (§4.2.2). Su questo tema è disponibile una dispensa fornita dal docente)
PostgreSQL. http://www.postgresql.org/
PHP. www.php.net
Materiale didattico integrativo disponibile sul sito web del corso
Modalità di esame:
Scritto con (eventuale) orale + progetto di laboratorio
Modalità di frequenza:
Fortemente consigliata
Modalità di erogazione:
Lezioni frontali e di laboratorio
Lingua in cui è tenuto l’insegnamento
Italiano
Pagina web del corso
http://islab.di.unimi.it/bdlab1/