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