Indice Prefazione XI 1 Sistemi informativi e basi di dati 1.1 La Gestione dell’Informazione . . . . . . . . . . . . . . . . 1.1.1 Sistemi Informativi e Sistemi Informatici . . . . . . 1.2 Esempi di Sistemi Informativi . . . . . . . . . . . . . . . . 1.2.1 Sistemi di Supporto Operativo . . . . . . . . . . . . 1.2.2 Sistemi di monitoraggio e controllo . . . . . . . . . 1.2.3 Sistemi informativi nella Pubblica Amministrazione 1.2.4 Sistemi informativi Ospedalieri . . . . . . . . . . . 1.2.5 Sistemi informativi per i trasporti . . . . . . . . . . 1.3 Informazioni e Dati . . . . . . . . . . . . . . . . . . . . . . 1.4 Cosa sono le Basi di Dati . . . . . . . . . . . . . . . . . . . 1.4.1 L’architettura a tre livelli ANSI-SPARC . . . . . . . 1.4.2 Storia dei DBMS: i diversi modelli dei dati . . . . . . 1.4.3 Funzionalità e caratteristiche di un DBMS . . . . . . 1.4.4 Il Linguaggio per la gestione delle Basi di Dati . . . 1.5 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 5 5 6 8 10 11 12 13 17 20 21 25 25 2 Il modello relazionale 2.1 Il modello relazionale . . . . . . . . . . 2.1.1 I valori Nulli . . . . . . . . . . 2.2 Basi di Dati e vincoli di integrità . . . . 2.2.1 Vincoli Intra-relazionali . . . . 2.2.2 Vincoli Inter-relazionali . . . . 2.3 Esempio di Base di Dati Relazionale . . 2.4 Il modello relazionale in SQL . . . . . . 2.4.1 Modifica e gestione degli schemi 2.5 Gestione della sicurezza dei dati . . . . 2.6 Esempio di creazione di relazioni . . . . 2.7 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 30 31 32 34 36 39 42 45 49 56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Il modello ER 57 3.1 Introduzione: progettazione di una applicazione di basi di dati . . 57 3.2 Entità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.3 Associazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 VI Indice 3.4 3.5 3.6 3.7 3.8 3.3.1 Cardinalità delle Associazioni . . . . . . . . . . . . . . 3.3.2 Identificatore Esterno . . . . . . . . . . . . . . . . . . . Esempio di progettazione concettuale . . . . . . . . . . . . . . Dal modello concettuale dei dati a quello logico relazionale . . . 3.5.1 Eliminazione di attributi composti e multivalore . . . . . 3.5.2 Traduzione dallo schema semplificato verso lo schema logico relazionale . . . . . . . . . . . . . . . . . . . . . Esempio di progettazione logica . . . . . . . . . . . . . . . . . Esempi di progettazione concettuale e logica . . . . . . . . . . . Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . 4 Il modello ER avanzato 4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Il concetto di ereditarietà . . . . . . . . . . . . . . . . . . 4.3 Gerarchie di generalizzazione/specializzazione . . . . . . 4.3.1 Vincoli delle Gerarchie . . . . . . . . . . . . . . . 4.4 Risoluzione delle gerarchie . . . . . . . . . . . . . . . . . 4.4.1 Soluzione 1: accorpamento della superclasse nelle sottoclassi . . . . . . . . . . . . . . . . . . . . . . 4.4.2 Soluzione 2: accorpamento delle sottoclassi nella superclasse . . . . . . . . . . . . . . . . . . . . . 4.4.3 Soluzione 3: sostituzione della generalizzazione con associazioni . . . . . . . . . . . . . . . . . . 4.4.4 Soluzione 4: soluzione mista . . . . . . . . . . . . 4.5 Esempio di risoluzione di gerarchie . . . . . . . . . . . . 4.6 Esempi di progettazione con il modello ER avanzato . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1 Risoluzione di generalizzazioni . . . . . . . . . . 4.6.2 Esempi di riepilogo . . . . . . . . . . . . . . . . . 4.7 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 64 66 68 69 . . . . 70 79 81 87 . . . . . 89 89 89 90 92 93 . . . . 94 . . . . 95 . . . . 96 . . . . 97 . . . . 98 . . . . . . . . . . . . 5 Le operazioni 5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Operazioni Insiemistiche . . . . . . . . . . . . . . . . . . . . . 5.3 Modifica dello Stato della Base di Dati . . . . . . . . . . . . . . 5.3.1 Inserimento . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Cancellazione . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Modifica . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Operazioni Relazionali . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Proiezione . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Selezione . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Query SQL . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 Confronto di stringhe . . . . . . . . . . . . . . . . . . . 5.4.5 Operatori aritmetici, di ordinamento e di manipolazione di stringhe . . . . . . . . . . . . . . . . . . . . . . . . 5.4.6 Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 100 106 115 . . . . . . . . . . . 117 117 117 119 119 120 121 122 122 124 125 125 . 126 . 127 VII Indice 5.5 5.6 Ridenominazione ed Uso di Variabili . . . . . . . . . Funzioni di Aggregazione e Clausole di Raggruppamento . . . . . . . . . . . . . . . . . . 5.7 Query Insiemistiche e query nidificate in SQL . . . . 5.8 Viste . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9 Sintassi delle operazioni in SQL . . . . . . . . . . . 5.9.1 Sintassi semplificata delle interrogazioni . . . 5.9.2 Sintassi delle operazioni di modifica di stato 5.10 Esempi di Interrogazioni in SQL . . . . . . . . . . . 5.10.1 Query n.1 . . . . . . . . . . . . . . . . . . . 5.10.2 Query n.2 . . . . . . . . . . . . . . . . . . . 5.10.3 Query n.3 . . . . . . . . . . . . . . . . . . . 5.10.4 Query n.4 . . . . . . . . . . . . . . . . . . . 5.10.5 Query n.5 . . . . . . . . . . . . . . . . . . . 5.10.6 Query n.6 . . . . . . . . . . . . . . . . . . . 5.10.7 Query n.7 . . . . . . . . . . . . . . . . . . . 5.10.8 Query n.8 . . . . . . . . . . . . . . . . . . . 5.10.9 Query n.9 . . . . . . . . . . . . . . . . . . . 5.10.10 Query n.10 . . . . . . . . . . . . . . . . . . 5.10.11 Query n.11 . . . . . . . . . . . . . . . . . . 5.10.12 Query n.12 . . . . . . . . . . . . . . . . . . 5.10.13 Query n.13 . . . . . . . . . . . . . . . . . . 5.10.14 Query n.14 . . . . . . . . . . . . . . . . . . 5.10.15 Query n.15 . . . . . . . . . . . . . . . . . . 5.10.16 Query n.16 . . . . . . . . . . . . . . . . . . 5.10.17 Query n.17 . . . . . . . . . . . . . . . . . . 5.10.18 Query n.18 . . . . . . . . . . . . . . . . . . 5.10.19 Query n.19 . . . . . . . . . . . . . . . . . . 5.10.20 Query n.20 . . . . . . . . . . . . . . . . . . 5.11 Esempi di operazioni . . . . . . . . . . . . . . . . . 5.12 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . 132 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 140 144 145 145 146 147 147 149 149 150 151 151 152 152 153 154 155 155 156 157 157 158 158 159 160 161 162 178 6 Le forme normali 6.1 Introduzione: i problemi legati alla ridondanza dei dati 6.2 Teoria della Dipendenza funzionale: cenni . . . . . . . 6.3 1NF: Prima Forma Normale . . . . . . . . . . . . . . 6.4 2NF: Seconda Forma Normale . . . . . . . . . . . . . 6.4.1 Decomposizione . . . . . . . . . . . . . . . . 6.5 3NF: Terza Forma Normale . . . . . . . . . . . . . . . 6.6 BCNF: Forma Normale di Boyce e Codd . . . . . . . . 6.7 Esempi di normalizzazione . . . . . . . . . . . . . . . 6.8 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 181 183 184 185 186 188 190 192 199 VIII Indice 7 Estensione del modello relazionale verso il paradigma ad oggetti 7.1 Introduzione . . . . . . . . . . . . . . . . . . . . 7.2 Il tipo tupla . . . . . . . . . . . . . . . . . . . . 7.2.1 Riferimenti a tipi tupla . . . . . . . . . . 7.3 Tipi di Dato Astratto in SQL-3 . . . . . . . . . . 7.4 Le basi di dati multimediali . . . . . . . . . . . . 7.4.1 La memorizzazione dei dati multimediali 7.4.2 Query in basi di dati multimediali . . . . 7.5 Esempio di base di dati ad oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 201 202 203 205 209 210 211 212 8 Applicazioni di basi di dati 8.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Basi di Dati Attive . . . . . . . . . . . . . . . . . . . . 8.2.1 I trigger . . . . . . . . . . . . . . . . . . . . . . 8.2.2 Definizione dei trigger in SQL . . . . . . . . . . 8.2.3 Esempi di trigger . . . . . . . . . . . . . . . . . 8.3 Approcci per la programmazione di una base di dati . . . 8.3.1 Accesso mediante SQL/CLI e lo standard ODBC 8.3.2 JDBC . . . . . . . . . . . . . . . . . . . . . . . 8.3.3 Programmare un’applicazione con JDBC . . . . 8.3.4 L’oggetto Callable Statement . . . . . . . . . . . 8.3.5 Gestione degli errori . . . . . . . . . . . . . . . 8.3.6 I metadati . . . . . . . . . . . . . . . . . . . . . 8.3.7 Cenni alla gestione delle transazioni in JDBC . . 8.3.8 I batch update . . . . . . . . . . . . . . . . . . . 8.4 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 215 216 216 219 221 226 228 229 233 237 239 240 241 241 242 9 Basi di dati direzionali 9.1 Introduzione ai Sistemi Informativi Direzionali . . 9.2 La struttura informatica . . . . . . . . . . . . . . . 9.3 I data warehouse . . . . . . . . . . . . . . . . . . 9.3.1 Struttura di un Data Warehouse . . . . . . 9.4 Tecnologie per il DWH . . . . . . . . . . . . . . . . 9.4.1 Analisi dei Dati . . . . . . . . . . . . . . . 9.4.2 Informazioni sui dati: i metadati . . . . . . 9.4.3 Data marts . . . . . . . . . . . . . . . . . 9.5 Scoperta della Conoscenza e Data Mining . . . . . 9.6 Realizzazione di un Datawarehouse: schemi a stella 9.7 Un esempio di Data Warehouse . . . . . . . . . . . 9.8 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 243 245 247 249 250 250 253 253 254 254 255 257 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX Indice 10 Sistemi gestionali 10.1 Introduzione . . . . . . . . . . . . . . . . . . . . . 10.2 Integrazione dei sistemi informativi d’impresa . . . 10.3 Caratteristiche e struttura dei sistemi ERP . . . . . 10.3.1 La collezione di moduli di un sistema ERP 10.3.2 Paradigma ERP . . . . . . . . . . . . . . . 10.4 Business Process Reengineering . . . . . . . . . . 10.4.1 Approccio di Hammer . . . . . . . . . . . 10.4.2 Approccio di Davenport . . . . . . . . . . 10.5 Struttura del CRM . . . . . . . . . . . . . . . . . . 10.5.1 Schema architetturale dei sistemi CRM . . 10.5.2 Paradigma CRM . . . . . . . . . . . . . . 10.5.3 L’importanza dell’integrazione . . . . . . . 10.6 Esercizi e domande riepilogative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 259 260 261 262 263 264 265 266 267 267 269 270 272 A Oracle A.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Richiami all’architettura di un DBMS . . . . . . . . . . . . . . . A.3 L’architettura del DBMS ORACLE . . . . . . . . . . . . . . . . A.3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . A.3.2 L’Istanza . . . . . . . . . . . . . . . . . . . . . . . . . A.3.3 Il Listner . . . . . . . . . . . . . . . . . . . . . . . . . A.3.4 L’Oracle Database . . . . . . . . . . . . . . . . . . . . A.3.5 Uno sguardo all’architettura completa . . . . . . . . . . A.3.6 Il processo di esecuzione di un’istruzione SQL . . . . . A.4 La memorizzazione dei dati in ORACLE . . . . . . . . . . . . . A.5 Il processo di creazione di un database . . . . . . . . . . . . . . A.5.1 Dimensionamento fisico della base di dati . . . . . . . . A.5.2 Creazione del database . . . . . . . . . . . . . . . . . . A.5.3 La definizione delle politiche di sicurezza e la creazione di utenti e ruoli . . . . . . . . . . . . . . . . . . . . . . A.5.4 La creazione degli oggetti . . . . . . . . . . . . . . . . A.6 La creazione dell’istanza . . . . . . . . . . . . . . . . . . . . . A.7 La distribuzione ORACLE 10g Express Edition . . . . . . . . . . . . . . . . . . . . . . 273 273 274 276 276 277 278 279 280 281 282 283 284 285 . . . . 285 286 287 288 B PL/SQL B.1 Introduzione al linguaggio PL/SQL . . . . . . . . B.2 La struttura di un programma PL/SQL . . . . . . B.2.1 L’intestazione . . . . . . . . . . . . . . . B.2.2 La sezione dichiarativa . . . . . . . . . . B.2.3 La sezione esecutiva . . . . . . . . . . . B.3 La specifica di un programma PL/SQL . . . . . . B.3.1 Gli statement di dichiarazione di variabili B.3.2 Le strutture di controllo . . . . . . . . . B.3.3 Funzioni Bult-in . . . . . . . . . . . . . B.3.4 I commenti . . . . . . . . . . . . . . . . . . . . . . . . . . 289 289 289 290 290 290 291 291 294 296 296 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X Indice B.4 I cursori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 B.5 Procedure e funzioni in PL/SQL . . . . . . . . . . . . . . . . . . 298 B.6 I trigger in PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . 299 C Esempio di progettazione di un’applicazione di basi di dati C.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . C.1.1 Specifiche sui dati . . . . . . . . . . . . . . . . . . C.1.2 Specifiche sulle operazioni . . . . . . . . . . . . . . C.1.3 Vincoli tecnologici e politiche di sicurezza . . . . . C.2 La progettazione della base di dati . . . . . . . . . . . . . . C.2.1 Analisi delle specifiche e ristrutturazione dei requisiti C.2.2 La progettazione concettuale . . . . . . . . . . . . . C.2.3 La progettazione logica . . . . . . . . . . . . . . . . C.2.4 La progettazione fisica . . . . . . . . . . . . . . . . C.3 Cenni alla progettazione delle applicazioni . . . . . . . . . . C.3.1 Il livello Dati . . . . . . . . . . . . . . . . . . . . . C.3.2 Il livello Applicazione . . . . . . . . . . . . . . . . C.3.3 Il livello Presentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 301 301 302 303 303 303 304 307 310 319 319 320 322 Approfondimenti 323 Indice analitico 325