Antonio Albano, Giorgio Ghelli, Renzo Orsini

BASI DI DATI RELAZIONALI E A OGGETTI

Zanichelli, 1997 (ISBN 88-08-17270-8)


INDICE
 1  Sistemi per basi di dati
 2  I modelli dei dati
 3  La progettazione di basi di dati
 4  I linguaggi per basi di dati ad oggetti
 5  Il modello relazionale
 6  Normalizzazione di schemi relazionali
 7  SQL per l'uso interattivo di basi di dati
 8  SQL per definire e amministrare basi di dati
 9  SQL per programmare le applicazioni
10  SQL per sistemi relazionali ad oggetti
11  Sistemi per nuovi tipi di dati
12  Architetture dei DBMS
13  Sviluppo di applicazioni in ambienti
14  Realizzazione dei DBMS
15  Sistemi commerciali


Prefazione

In questo libro vengono trattati quegli argomenti che sono considerati 
fondamentali, nel campo delle basi di dati, per la formazione degli 
informatici: i modelli dei dati, i linguaggi, i sistemi e le metodologie di 
progettazione di applicazioni che usano basi di dati.  Questi argomenti 
sono trattati dal punto di vista del progettista di applicazioni e del 
responsabile di basi di dati, con cenni agli aspetti realizzativi dei 
sistemi.
L'approccio seguito nel presentare questi argomenti si basa sulla presentazione rigorosa di concetti e principi fondamentali, per aiutare il lettore a comprendere sia la tecnologia attuale che le inevitabili innovazioni del futuro. Questa presentazione non è però astratta ma è costantemente corredata da esemplificazioni tratte da applicazioni e sistemi reali.
Questo libro è caratterizzato inoltre dalla decisione di presentare non solo le tecnologie più diffuse attualmente, ma anche quelle che sono destinate ad influenzare le basi di dati del futuro. Per questo motivo, oltre ad un'ampia descrizione del modello relazionale, molto spazio è dedicato anche ai modelli e linguaggi ad oggetti e relazionale ad oggetti, per mostrarne sia i vantaggi che i limiti nel passaggio dalla teoria alla pratica. Analogamente, accanto alla realizzazione tradizionale dei sistemi per basi di dati, ampio spazio è dato alle architetture eterogenee e distribuite che domineranno la scena nei prossimi anni, discutendo anche in questo caso sia i principi che le specifiche tecnologie.
Poiché la tecnologia dei sistemi per basi di dati sta evolvendo passando da sistemi specializzati per la gestione di dati a sistemi generali per linguaggi di programmazione che trattano dati persistenti, nel libro viene posta molta enfasi anche sulle caratteristiche dei linguaggi di programmazione per basi di dati, prendendo come riferimento una versione didattica di un linguaggio ad oggetti con un sistema di tipi forte e statico che, sebbene non sia il linguaggio usato da un sistema commerciale, consente di chiarire in modo rigoroso i concetti fondamentali sui quali si basano i linguaggi attuali e come essi potrebbero evolvere nel futuro.

Organizzazione del testo

Il libro inizia presentando le ragioni che motivano la tecnologia delle basi di dati ed i concetti principali che caratterizzano le basi di dati ed i sistemi per la loro gestione.
Il testo prosegue trattando poi aspetti relativi alla progettazione di applicazioni su basi di dati (Capitoli 2 e 3) e alla loro realizzazione in sistemi relazionali e ad oggetti (Capitoli dal 4 al 10). Infine, il testo tratta aspetti relativi ai sistemi commerciali per la gestione di basi di dati e alla loro realizzazione, con particolare attenzione alle più recenti tendenze: gestione di dati multimediali e spazio-temporali e costruzione di applicazioni distribuite in ambienti eterogenei (Capitoli dall'11 al 15).
In maggior dettaglio, il Capitolo 2 si sofferma sulle nozioni fondamentali di modello informatico finalizzato al trattamento delle informazioni di interesse dei sistemi informativi delle organizzazioni e sui meccanismi d'astrazione per costruire modelli informatici. Il modello di riferimento è il modello ad oggetti, motivato non solo dalla sua naturalezza per la progettazione di basi di dati, ma anche per essere il modello dei dati della nuova tecnologia ad oggetti per basi di dati.
Il Capitolo 3 presenta una panoramica del problema della progettazione di basi di dati soffermandosi sulle fasi dell'analisi dei requisiti e della progettazione concettuale di basi di dati usando il modello ad oggetti e il formalismo grafico proposto nel Capitolo 2 e descrivendo un metodo di lavoro per queste fasi.
Il Capitolo 4 tratta diffusamente le caratteristiche dei linguaggi ad oggetti per basi di dati, mostrando sia quelle ormai consolidate dagli attuali sistemi commerciali che quelle considerate necessarie per superare alcune limitazioni della tecnologia. L'aspetto interessante della trattazione è l'uso del Galileo97, un linguaggio di programmazione didattico con un sistema di tipi forte e statico per focalizzare l'attenzione sui concetti in gioco. In questo modo si ottengono due vantaggi: si astrae dalle particolarità degli attuali linguaggi dei sistemi commerciali e si fornisce un quadro di riferimento per comprendere le caratteristiche dei linguaggi esistenti e di quelli nuovi che inevitabilmente appariranno nel futuro. Il Galileo97 viene confrontato con i linguaggi dei sistemi O2 e UniSQL. Il linguaggio è a disposizione di chi desideri utilizzarlo in ambienti Windows e Macintosh.
I Capitoli 5 e 6 sono dedicati alla presentazione rigorosa del modello relazionale dei dati e ad un'introduzione alla teoria della normalizzazione. La scelta di dedicare questo spazio all'argomento è giustificata dal ruolo fondamentale che svolge il modello relazionale per la comprensione della tecnologia delle basi di dati e per la formazione degli addetti.
I Capitoli 7, 8 e 9 trattano il linguaggio relazionale SQL da tre punti di vista, che corrispondono ad altrettante categorie di utenti: (1) gli utenti interessati ad usare interattivamente basi di dati relazionali, (2) i responsabili di basi di dati interessati a definire e gestire basi di dati, (3) i programmatori delle applicazioni.
Il Capitolo 10 presenta il modello relazionale ad oggetti, la nuova tecnologia dei sistemi relazionali e le estensioni dell'SQL per questo modello dei dati. A titolo di esempio si presenta la soluzione offerta dal sistema Illustra e dal linguaggio OQL dello standard ODMG.
Il Capitolo 11 è dedicato alle estensioni della tecnologia delle basi di dati per trattare nuovi tipi di dati, in particolare testi, immagini, dati spaziali e tempo. L'attenzione è centrata sia sulle novità introdotte da questi tipi, che sulla possibilità di inquadrare anche le applicazioni che usano questi dati nell'ambito delle applicazioni basate sulla tecnologia di basi di dati, opportunamente estesa.
Il Capitolo 12 tratta le architetture centralizzate, distribuite e parallele dei sistemi per basi di dati. Particolare attenzione è dedicata alle architetture distribuite, illustrando i motivi di interesse di questa tecnologia e le soluzioni architetturali disponibili.
Il Capitolo 13 allarga la visione delineata nel Capitolo 12, illustrando i diversi strumenti esistenti per lo sviluppo di applicazioni in ambienti distribuiti ed eterogenei. In questo modo il lettore ha modo di inquadrare il ruolo specifico dei sistemi di gestione di basi di dati, centralizzati e distribuiti, nella costruzione di un'applicazione distribuita, e di capire quali funzionalità sia più opportuno demandare a strumenti diversi. Particolare spazio è dedicato alle tecnologie emergenti per lo sviluppo di applicazioni basate su oggetti distribuiti, secondo l'approccio CORBA, e di applicazioni basate sul Web, presentando concetti ed esempi.
Il Capitolo 14 presenta una panoramica delle principali tecniche per la realizzazione dei sistemi relazionali e ad oggetti. Vengono presentate in particolare la gestione delle interrogazioni e dei metodi di accesso e la gestione dell'atomicità e della concorrenza in sistemi centralizzati e distribuiti. Vengono inoltre trattati gli aspetti peculiari della realizzazione dei sistemi ad oggetti, quali, in particolare, la gestione della memoria.
Il Capitolo 15, infine, si sofferma sulle caratteristiche di alcuni ben noti sistemi commerciali. In particolare, il capitolo descrive prima una possibile classificazione delle applicazioni per basi di dati, dedicando un certo spazio alle applicazioni di analisi del dati, la cui importanza sta crescendo fortemente. Descrive poi le caratteristiche più importanti che differenziano tra loro i sistemi commerciali. Infine, dedica un ampio spazio alla descrizione dei maggiori sistemi commerciali, descrivendo sistemi relazionali, ad oggetti e relazionali ad oggetti.

Possibili usi del libro

Il materiale presentato nel libro può essere usato per corsi con obiettivi diversi. A titolo di esempio si mostrano alcune possibilità sperimentate in corsi del Diploma e della Laurea in Informatica dell'Università di Pisa.

Per alcuni corsi il libro offre capitoli che coprono aspetti non strettamente necessari, ma si ritiene ugualmente utile mettere a disposizione del lettore tale materiale per consentire approfondimenti e per favorire la formazione di un'idea più completa delle possibilità offerte dalla tecnologia delle basi di dati. In particolare, i capitoli finali del libro permettono al lettore di acquisire informazioni precise e aggiornate sull'effettiva evoluzione dei sistemi commerciali e della tecnologia; queste informazioni non sono in genere facili da reperire. Per altri corsi ovviamente il materiale del libro è insufficiente ed è richiesto anche l'uso di testi complementari. In particolare, per i corsi che richiedono un maggiore approfondimento degli aspetti realizzativi dei sistemi per basi di dati e della progettazione fisica di basi di dati, si suggerisce di prendere in considerazione il volume dedicato all'argomento: A. Albano, Basi di dati: strutture ed algoritmi, per i tipi Addison-Wesley.


INDICE
1 Sistemi per basi di dati 1.1 Sistemi informativi e informatici 1.2 Evoluzione dei sistemi informatici 1.3 I sistemi per basi di dati 1.4 Funzionalità dei DBMS 1.4.1 Definizione della base di dati 1.4.2 Uso della base di dati 1.4.3 Controllo della base di dati 1.4.4 Distribuzione della base di dati 1.4.5 Amministrazione della base di dati 1.5 Vantaggi e problemi nell'uso dei DBMS 1.6 Conclusioni Esercizi Note bibliografiche 2 I modelli dei dati 2.1 Progettazione e modellazione 2.2 Considerazioni preliminari alla modellazione 2.2.1 Aspetto ontologico 2.2.2 Aspetto linguistico astratto 2.2.3 Aspetto linguistico concreto 2.2.4 Aspetto pragmatico 2.3 Il modello dei dati ad oggetti 2.3.1 Rappresentazione della struttura della conoscenza concreta 2.3.2 Rappresentazione degli altri aspetti della conoscenza astratta 2.3.3 Rappresentazione della conoscenza procedurale 2.3.4 Rappresentazione della comunicazione 2.4 Altri modelli dei dati 2.4.1 Il modello semantico dei dati 2.4.2 Il modello entità-relazione 2.4.3 Il modello reticolare 2.4.4 Il modello gerarchico 2.4.5 Il modello relazionale 2.5 Conclusioni Esercizi Note bibliografiche 3 La progettazione di basi di dati 3.1 Introduzione 3.2 Le metodologie di progettazione 3.2.1 Il ruolo delle metodologie 3.2.2 Le metodologie con più fasi 3.2.3 Le metodologie con prototipazione 3.3 Gli strumenti formali 3.3.1 I diagrammi di flusso dati 3.3.2 I diagrammi di stato 3.4 L'analisi dei requisiti 3.4.1 Scopo dell'analisi dei requisiti 3.4.2 Come procedere 3.4.3 Un esempio di analisi dei requisiti 3.5 La progettazione concettuale 3.5.1 Scopo della progettazione concettuale 3.5.2 Come procedere 3.5.3 I passi della progettazione concettuale 3.6 Riepilogo della metodologia di progettazione 3.7 Conclusioni Esercizi Note bibliografiche 4 I linguaggi per basi di dati ad oggetti 4.1 I linguaggi per basi di dati ad oggetti 4.2 La struttura del Galileo 97 4.3 Le definizioni 4.4 Il sistema dei tipi 4.4.1 Registrazioni 4.4.2 Sequenze 4.4.3 Valori modificabili 4.4.4 Funzioni 4.5 Tipo oggetto 4.6 L'identità degli oggetti 4.7 Definizione di tipi oggetto per ereditarietà 4.8 Gerarchie di tipi 4.8.1 Le regole di sottotipo 4.8.2 Ereditarietà e controvarianza 4.8.3 Uso della relazione di sottotipo 4.9 Interpretazione dei messaggi e semantica degli autoriferimenti 4.10 Classi 4.10.1 Le associazioni 4.10.2 Sottoclassi 4.10.3 Classi virtuali 4.11 I vincoli d'integrità 4.11.1 Descrizione dichiarativa dei vincoli 4.11.2 Immersione dei vincoli nelle procedure 4.11.3 Violazione dei vincoli e fallimenti 4.12 Il linguaggio di interrogazione 4.13 Riepilogo 4.14 Oggetti che cambiano tipo 4.14.1 Estensione e tipi di sottoclassi 4.15 Alcune scelte alternative 4.15.1 Tipi oggetto con implementazione multipla 4.15.2 Classi con inserzione esplicita 4.15.3 La rappresentazione esplicita dell'associazione 4.16 I linguaggi dei sistemi O2 e UniSQL 4.16.1 Definizione di basi di dati in O2 4.16.2 Definizione di basi di dati in UniSQL 4.16.3 Confronto 4.17 Lo standard ODMG 4.18 Conclusioni Esercizi Note bibliografiche 5 Il modello relazionale 5.1 Il modello dei dati 5.1.1 La relazione 5.1.2 I vincoli d'integrità 5.2 Una rappresentazione grafica del modello relazionale 5.2.1 Operatori 5.3 Progettazione logica relazionale 5.3.1 Rappresentazione delle associazioni binarie uno a molti e uno ad uno 5.3.2 Rappresentazione di associazioni molti a molti o non binarie 5.3.3 Rappresentazione delle gerarchie fra classi 5.3.4 Identificazione delle chiavi primarie 5.3.5 Rappresentazione delle proprietà multivalore 5.3.6 Appiattimento gli attributi composti 5.4 Algebra relazionale 5.4.1 Gli operatori primitivi 5.4.2 Operatori derivati 5.4.3 Proprietà algebriche degli operatori relazionali 5.4.4 Altri operatori 5.5 Calcolo relazionale su ennuple 5.6 I linguaggi logici 5.7 Conclusioni Esercizi Note bibliografiche 6 Normalizzazione di schemi relazionali 6.1 Le anomalie 6.2 Dipendenze funzionali 6.2.1 Definizione 6.2.2 Dipendenze derivate 6.2.3 Chiusura di un insieme di dipendenze funzionali 6.2.4 Chiavi 6.2.5 Copertura di un insieme di dipendenze 6.3 Decomposizione di schemi 6.3.1 Decomposizioni che preservano i dati 6.3.2 Decomposizioni che preservano le dipendenze 6.4 Forme normali 6.4.1 Forma Normale di Boyce-Codd 6.4.2 Normalizzazione di schemi in BCNF 6.4.3 Terza forma normale 6.4.4 Normalizzazione di schemi in 3NF 6.5 Dipendenze multivalore 6.6 La denormalizzazione 6.7 Uso della teoria della normalizzazione 6.8 Conclusioni Esercizi Note bibliografiche 7 SQL per l'uso interattivo di basi di dati 7.1 Operatori per il recupero dei dati 7.1.1 Attributi 7.1.2 Tabelle 7.1.3 Condizione 7.1.4 Operatore di ordinamento 7.1.5 Funzioni statistiche 7.1.6 Operatore di raggruppamento 7.1.7 Condizioni con quantificatore universale 7.1.8 Sintassi completa del SELECT 7.2 Operatori per la modifica dei dati 7.3 Il potere espressivo di SQL 7.4 QBE: un esempio di linguaggio basato sulla grafica 7.5 Conclusioni Esercizi Note bibliografiche 8 SQL per definire e amministrare basi di dati 8.1 Definizione della struttura di una base di dati 8.1.1 Base di dati 8.1.2 Tabelle 8.1.3 Tabelle virtuali 8.2 Vincoli d'integrità 8.3 Aspetti procedurali 8.3.1 Procedure memorizzate 8.3.2 Trigger 8.4 Aspetti fisici 8.4.1 Parametri fisici 8.4.2 Definizione di indici 8.5 Evoluzione dello schema 8.6 Autorizzazioni 8.7 Schemi esterni 8.8 Cataloghi 8.9 Strumenti per l'amministrazione di basi di dati 8.10 Conclusioni Esercizi Note bibliografiche 9 SQL per programmare le applicazioni 9.1 Linguaggi che ospitano l'SQL 9.2 Linguaggi con interfaccia API 9.3 Linguaggi integrati 9.4 La programmazione di transazioni 9.4.1 Ripetizione esplicita delle transazioni 9.4.2 Transazioni con livelli diversi di isolamento 9.5 Conclusioni Esercizi Note bibliografiche 10 SQL per sistemi relazionali ad oggetti 10.1 Il modello relazionale ad oggetti 10.1.1 Il modello relazionale non in prima forma normale 10.1.2 Il modello relazionale ad oggetti 10.1.3 Definizione di tipi oggetto per ereditarietà 10.1.4 Inclusione tra relazioni 10.1.5 Definizione dei metodi 10.1.6 L'uguaglianza tra oggetti 10.1.7 SQL per basi di dati ad oggetti 10.2 Definizione di basi di dati in Illustra 10.3 L'interrogazione di basi di dati in Illustra 10.3.1 Restrizioni 10.3.2 Espressioni di cammino 10.3.3 Tipi di giunzione 10.3.4 Ortogonalità 10.3.5 Funzioni 10.4 Conclusioni Esercizi Note bibliografiche 11 Sistemi per nuovi tipi di dati 11.1 Basi di dati multimediali 11.1.1 Gestione di dati multimediali 11.1.2 Rappresentazione del contenuto 11.1.3 Interrogazioni e tecniche di recupero 11.2 Basi di dati spaziali 11.2.1 Interrogazioni per dati spaziali 11.3 Basi di dati temporali 11.3.1 Modello del tempo 11.3.2 Tempo rappresentato 11.3.3 Estensioni dell'SQL 11.4 Conclusioni Note bibliografiche 12 Architetture dei DBMS 12.1 Sistemi di archiviazione 12.1.1 Sistemi procedurali 12.1.2 Sistemi dichiarativi 12.1.3 Sistemi con interfaccia SQL 12.2 Sistemi per basi di dati centralizzate 12.2.1 Sistemi centralizzati 12.2.2 Sistemi con architettura cliente-servente 12.3 Sistemi per basi di dati distribuite 12.3.1 Basi di dati distribuite: problemi 12.3.2 Modelli di sistemi distribuiti 12.4 Sistemi paralleli per basi di dati 12.5 Conclusioni Note bibliografiche 13 Sviluppo di applicazioni in ambienti distribuiti eterogenei 13.1 Introduzione 13.2 Architettura di un'applicazione distribuita 13.3 I gateway per basi di dati 13.3.1 L'API ODBC 13.3.2 L'API JDBC 13.4 TP Monitor 13.5 Gli ambienti ad oggetti distribuiti 13.5.1 Gli ORB CORBA 13.5.2 Un esempio di applicazione CORBA 13.5.3 ActiveX 13.6 Clienti e serventi per il World Wide Web 13.6.1 Le applicazioni Web 13.6.2 Un esempio di applicazione Web 13.6.3 Vantaggi e svantaggi dei DBMS Web 13.6.4 Web e CORBA 13.7 Generatori di interfacce 13.8 Conclusioni Note bibliografiche 14 Realizzazione dei DBMS 14.1 Realizzazione dei sistemi relazionali 14.1.1 Gestore delle interrogazioni 14.1.2 Gestore dei metodi d'accesso 14.1.3 Gestore della concorrenza 14.1.4 Gestore dell'affidabilità 14.2 Realizzazione dei sistemi relazionali distribuiti e paralleli 14.2.1 Esecuzione delle interrogazioni nei sistemi distribuiti 14.2.2 Esecuzione delle interrogazioni nei sistemi paralleli 14.2.3 Gestione delle transazioni distribuite 14.3 Realizzazione dei sistemi ad oggetti 14.3.1 Sistemi con due livelli di memoria 14.3.2 Sistemi con un livello di memoria 14.4 Conclusioni Note bibliografiche 15 Sistemi commerciali 15.1 Classi di applicazioni che usano DBMS 15.1.1 Applicazioni personali 15.1.2 Applicazioni gestionali 15.1.3 Applicazioni con dati complessi 15.1.4 Applicazioni transazionali interattive 15.1.5 Applicazioni di supporto alle decisioni 15.2 Caratteristiche di un DBMS 15.3 Come scegliere un DBMS 15.4 Sistemi relazionali per calcolatori personali 15.4.1 Il sistema Microsoft Access 15.4.2 Il sistema Fourth Dimension 15.4.3 Il sistema Butler 15.5 I sei grandi sistemi relazionali 15.5.1 Il sistema Sybase 15.5.2 Il sistema DB2 15.5.3 Oracle 15.5.4 Informix 15.5.5 CA-OpenIngres 15.5.6 Microsoft SQL Server 15.6 Sistemi relazionali ad oggetti 15.6.1 Il sistema Informix Universal Server 15.6.2 Il sistema UniSQL 15.7 Sistemi ad oggetti 15.7.1 Il sistema O2 15.8 Conclusioni Note bibliografiche Bibliografia Indice analitico



Back Back to the Main Page