Ingegneria Informatica
Appunti di
BASI DI DATI
A cura di Baldi F. e Sangeniti C.
2025-2026
Indice
1 Sistema organizzativo 7
1.1 Sistema informativo . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Informazioni e dati . . . . . . . . . . . . . . . . . . . . . . . 8
2 Base di Dati (database) 10
2.1 Caratteristiche delle Basi di Dati . . . . . . . . . . . . . . . 10
2.1.1 Grandi dimensioni . . . . . . . . . . . . . . . . . . . 10
2.1.2 Persistenza . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.3 Condivisione . . . . . . . . . . . . . . . . . . . . . . 10
2.1.4 Eterogeneità delle informazioni . . . . . . . . . . . . 11
2.2 Compiti del DBMS . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Persistenza . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Condivisione . . . . . . . . . . . . . . . . . . . . . . 11
2.2.3 Sicurezza . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 Integrità . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.5 Gestione di grandi volumi . . . . . . . . . . . . . . . 12
2.2.6 Transazioni . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.7 Indipendenza dei dati . . . . . . . . . . . . . . . . . 13
2.3 DBMS vs File System . . . . . . . . . . . . . . . . . . . . . 14
2.3.1 Descrizione dei dati nei File System . . . . . . . . . . 14
2.3.2 Descrizione dei dati nei DBMS . . . . . . . . . . . . 14
2.4 Schema e istanza . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Modello di dati . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5.1 Modelli concettuali . . . . . . . . . . . . . . . . . . . 16
2.5.2 Modelli logici . . . . . . . . . . . . . . . . . . . . . . 16
2.6 Architettura (semplificata) di un DBMS . . . . . . . . . . . 16
2.6.1 Schema logico . . . . . . . . . . . . . . . . . . . . . . 17
2.6.2 Schema fisico (o interno) . . . . . . . . . . . . . . . . 17
2.7 Linguaggi per Basi di Dati . . . . . . . . . . . . . . . . . . . 17
2.8 Attori del sistema . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Il modello relazionale 19
3.1 Modelli logici e struttura dei dati . . . . . . . . . . . . . . . 19
3.2 Dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Prodotto cartesiano . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 Relazione matematica . . . . . . . . . . . . . . . . . . . . . 20
3.5 Attributo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.6 Schema di relazione . . . . . . . . . . . . . . . . . . . . . . . 21
3.6.1 Schema di base di dati . . . . . . . . . . . . . . . . . 21
1
3.7 Istanza di relazione . . . . . . . . . . . . . . . . . . . . . . . 22
3.7.1 Istanza di base di dati . . . . . . . . . . . . . . . . . 22
3.8 Tupla su un insieme di attributi . . . . . . . . . . . . . . . . 22
3.9 Informazione incompleta . . . . . . . . . . . . . . . . . . . . 23
3.10 Vincoli di integrità . . . . . . . . . . . . . . . . . . . . . . . 23
3.10.1 Vincoli intra-relazionali . . . . . . . . . . . . . . . . . 24
3.10.2 Vincoli inter-relazionali . . . . . . . . . . . . . . . . . 25
3.11 Dipendenze funzionali . . . . . . . . . . . . . . . . . . . . . 25
3.12 Chiave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.12.1 Superchiave . . . . . . . . . . . . . . . . . . . . . . . 25
3.12.2 Chiave primaria (primary key) . . . . . . . . . . . . . 26
3.12.3 Integrità referenziale . . . . . . . . . . . . . . . . . . 27
3.13 Operazioni di aggiornamento . . . . . . . . . . . . . . . . . . 28
3.13.1 Azioni compensative . . . . . . . . . . . . . . . . . . 29
4 Interrogazione di una database 30
4.1 Algebra relazionale . . . . . . . . . . . . . . . . . . . . . . . 30
4.1.1 Operatori insiemistici . . . . . . . . . . . . . . . . . . 31
4.1.2 Operatori di rimozione . . . . . . . . . . . . . . . . . 32
4.1.3 Operatori di ridenominazione . . . . . . . . . . . . . 35
4.1.4 Operatori di combinazione . . . . . . . . . . . . . . . 36
4.1.5 Equivalenza di espressioni . . . . . . . . . . . . . . . 39
4.1.6 Ottimizzazione delle interrogazioni . . . . . . . . . . 40
4.1.7 Esecuzione delle interrogazioni . . . . . . . . . . . . . 40
4.1.8 Procedura euristica di ottimizzazione . . . . . . . . . 41
4.1.9 Profili delle relazioni . . . . . . . . . . . . . . . . . . 42
4.2 Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.1 Cammino e ciclo . . . . . . . . . . . . . . . . . . . . 43
4.2.2 Albero . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Progettazione concettuale 44
5.1 Raccolta e analisi dei requisiti . . . . . . . . . . . . . . . . . 44
5.1.1 Acquisizione dei requisiti . . . . . . . . . . . . . . . . 44
5.2 Progettazione . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 Modello E-R . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.3.1 Entità . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.3.2 Associazione . . . . . . . . . . . . . . . . . . . . . . . 47
5.3.3 Attributo . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4 Modello E-R esteso . . . . . . . . . . . . . . . . . . . . . . . 49
5.4.1 Cardinalità di attributo . . . . . . . . . . . . . . . . 49
5.4.2 Identificatore di entità interno . . . . . . . . . . . . . 50
2
5.4.3 Cardinalità di associazione . . . . . . . . . . . . . . . 51
5.4.4 Identificatore di entità esterno . . . . . . . . . . . . . 53
5.4.5 Relazione IS-A . . . . . . . . . . . . . . . . . . . . . 54
5.4.6 Generalizzazione . . . . . . . . . . . . . . . . . . . . 54
5.4.7 Documentazione di supporto . . . . . . . . . . . . . . 56
5.5 Strategie di progetto . . . . . . . . . . . . . . . . . . . . . . 56
5.5.1 Strategia top-down . . . . . . . . . . . . . . . . . . . 57
5.5.2 Strategia bottom-up . . . . . . . . . . . . . . . . . . 57
6 Progettazione logica 58
6.1 Valutare le prestazioni . . . . . . . . . . . . . . . . . . . . . 58
6.2 Attività di ristrutturazione . . . . . . . . . . . . . . . . . . . 61
6.2.1 Analisi delle ridondanze . . . . . . . . . . . . . . . . 61
6.2.2 Eliminazione delle generalizzazioni . . . . . . . . . . 63
6.2.3 Partizionamento/accorpamento di entità e associazioni 63
6.2.4 Scelta degli identificatori principali . . . . . . . . . . 65
6.3 Traduzione verso il modello relazionale . . . . . . . . . . . . 66
6.3.1 Traduzione di un’entità forte . . . . . . . . . . . . . . 66
6.3.2 Traduzione di un’entità debole . . . . . . . . . . . . . 67
6.3.3 Traduzione associazioni binarie molti a molti . . . . . 68
6.3.4 Traduzione associazioni binarie uno a molti . . . . . 69
6.3.5 Traduzione associazioni binarie uno a uno . . . . . . 70
6.3.6 Traduzione associazioni ricorsive molti a molti . . . . 71
6.3.7 Traduzione associazioni ricorsive uno a molti . . . . . 72
6.3.8 Traduzione associazioni . . . . . . . . . . . . . 73
n-arie
6.4 Linee guida per la progettazione . . . . . . . . . . . . . . . . 74
7 Dipendenze funzionali 76
7.1 Dipendenze funzionali particolari . . . . . . . . . . . . . . . 76
7.2 Implicazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.2.1 Regole di inferenza di Armstrong . . . . . . . . . . . 77
7.3 Derivazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7.3.1 Regole di derivazione comuni . . . . . . . . . . . . . 78
7.4 Chiusura degli attributi . . . . . . . . . . . . . . . . . . . . 79
7.4.1 Calcolo di . . . . . . . . . . . . . . . . . . . . . . 79
+
X
7.5 Correttezza e completezza di un RI . . . . . . . . . . . . . . 80
7.6 Chiusura di un insieme di dipendenze funzionali . . . . . . . 81
7.6.1 Calcolo di . . . . . . . . . . . . . . . . . . . . . . 81
+
F
7.7 Chiavi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.7.1 Trovare tutte le chiavi . . . . . . . . . . . . . . . . . 82
7.7.2 Verifica di una chiave . . . . . . . . . . . . . . . . . . 82
3
7.8 Equivalenza . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.9 Ridondanza . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.10 Copertura minimale . . . . . . . . . . . . . . . . . . . . . . 84
7.10.1 Calcolo della copertura minimale . . . . . . . . . . . 84
8 Forme normali 86
8.1 Normalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.2 Forma normale di Boyce-Codd . . . . . . . . . . . . . . . . . 86
8.2.1 Verificare una BNCF . . . . . . . . . . . . . . . . . . 86
8.3 Decomposizione di schemi . . . . . . . . . . . . . . . . . . . 89
8.3.1 Teorema della perdita dei dati . . . . . . . . . . . . . 90
8.3.2 Decomposizione che preserva i dati . . . . . . . . . . 91
8.3.3 Teorema di preservazione dei dati . . . . . . . . . . . 91
8.3.4 Proiezioni di un insieme di dipendenze . . . . . . . . 91
8.3.5 Decomposizione che preserva le dipendenze . . . . . . 92
8.3.6 Verificare una decomposizione . . . . . . . . . . . . . 92
8.3.7 Algoritmo per decomposizione in BCNF . . . . . . . 93
8.4 Terza forma normale . . . . . . . . . . . . . . . . . . . . . . 94
8.4.1 Verifica di 3NF . . . . . . . . . . . . . . . . . . . . . 95
8.4.2 Algoritmo per decomposizione in 3NF . . . . . . . . 95
9 Transazioni 98
9.1 Gestione delle transazioni . . . . . . . . . . . . . . . . . . . 100
9.1.1 Problemi legati a mancanza di controllo . . . . . . . 100
9.1.2 Scheduler . . . . . . . . . . . . . . . . . . . . . . . . 104
9.2 Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
9.2.1 Schedule seriali . . . . . . . . . . . . . . . . . . . . . 105
9.2.2 Schedule serializzabili . . . . . . . . . . . . . . . . . . 105
9.2.3 -equivalenza . . . . . . . . . . . . . . . . . . . . 107
View
9.2.4 . . . . . . . . . . . . . . . . . . 108
Conflict-equivalenza
9.2.5 Grafo dei conflitti . . . . . . . . . . . . . . . . . . . . 110
9.2.6 Serializzabilità a confronto . . . . . . . . . . . . . . . 111
9.3 Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
9.3.1 Locking scheduler e 2PL . . . . . . . . . . . . . . . . 113
9.3.2 Implementazione . . . . . . . . . . . . . . . . . . . . 116
9.3.3 Deadlock . . . . . . . . . . . . . . . . . . . . . . . . 117
10 Linguaggio SQL 119
10.1 Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
10.2 Operatori logici . . . . . . . . . . . . . . . . . . . . . . . . . 121
10.3 Intervallo di valori . . . . . . . . . . . . . . . . . . . . . . . 121
4
10.4 Duplicati . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
10.5 Controllo su valori NULL . . . . . . . . . . . . . . . . . . . 123
10.6 Gestione delle date . . . . . . . . . . . . . . . . . . . . . . . 123
10.6.1 Estrazione di giorno, mese, anno . . . . . . . . . . . 123
10.6.2 Lassi di tempo in giorni . . . . . . . . . . . . . . . . 123
10.6.3 Sommare/sottrarre intervalli di tempo . . . . . . . . 124
10.6.4 Funzioni di utilità sulle date . . . . . . . . . . . . . . 124
10.7 Operatori di aggregazione . . . . . . . . . . . . . . . . . . . 125
10.7.1 Conteggio . . . . . . . . . . . . . . . . . . . . . . . . 125
10.7.2 Somma . . . . . . . . . . . . . . . . . . . . . . . . . 126
10.7.3 Massimo/minimo . . . . . . . . . . . . . . . . . . . . 127
10.7.4 Media . . . . . . . . . . . . . . . . . . . . . . . . . . 127
10.8 Query su più tabelle . . . . . . . . . . . . . . . . . . . . . . 128
10.8.1 Inner join . . . . . . . . . . . . . . . . . . . . . . . . 128
10.8.2 Join naturale . . . . . . . . . . . . . . . . . . . . . . 129
10.8.3 Prodotto cartesiano . . . . . . . . . . . . . . . . . . . 130
10.8.4 Join esterni . . . . . . . . . . . . . . . . . . . . . . . 131
10.8.5 Join multipli . . . . . . . . . . . . . . . . . . . . . . 133
10.8.6 Self join . . . . . . . . . . . . . . . . . . . . . . . . . 134
10.8.7 Ambiguità . . . . . . . . . . . . . . . . . . . . . . . . 134
10.8.8 Derived table . . . . . . . . . . . . . . . . . . . . . . 136
10.9 Subquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
10.9.1 Noncorrelated subquery . . . . . . . . . . . . . . . . 137
10.9.2 Subquery scalari . . . . . . . . . . . . . . . . . . . . 138
10.9.3 Subquery-join . . . . . . . . . . . . . . . . . . . . . . 138
10.9.4 Correlated subquery . . . . . . . . . . . . . . . . . . 139
10.9.5 Costrutto EXISTS . . . . . . . . . . . . . . . . . . . 141
10.9.6 Divisione . . . . . . . . . . . . . . . . . . . . . . . . 142
10.10 Common Table Expression (CTE) . . . . . . . . . . . . . . . 143
10.11 Raggruppamenti . . . . . . . . . . . . . . . . . . . . . . . . 144
10.11.1 Condizione sui gruppi . . . . . . . . . . . . . . . . . 146
10.11.2 HAVING vs WHERE . . . . . . . . . . . . . . . . . . 148
10.12 Modificatori ANY e ALL . . . . . . . . . . . . . . . . . . . . 148
10.13 Stored procedure . . . . . . . . . . . . . . . . . . . . . . . . 149
10.13.1 Creazione . . . . . . . . . . . . . . . . . . . . . . . . 150
10.13.2 Chiamata . . . . . . . . . . . . . . . . . . . . . . . . 152
10.13.3 Variabili locali . . . . . . . . . . . . . . . . . . . . . 152
10.13.4 Variabili user-defined . . . . . . . . . . . . . . . . . . 154
10.13.5 Parametri di una stored procedure . . . . . . . . . . 154
10.13.6 Istruzioni condizionali . . . . . . . . . . . . . . . . . 156
10.13.7 Istruzioni iterative . . . . . . . . . . . . . . . . . . . 157
5
10.13.8 Cursori e handler . . . . . . . . . . . . . . . . . . . . 159
10.14 Data manipulation . . . . . . . . . . . . . . . . . . . . . . . 160
10.14.1 Inserimento . . . . . . . . . . . . . . . . . . . . . . . 160
10.14.2 Aggiornamento . . . . . . . . . . . . . . . . . . . . . 162
10.14.3 Cancellazione . . . . . . . . . . . . . . . . . . . . . . 163
10.14.4 Errore comune . . . . . . . . . . . . . . . . . . . . . 163
10.15 Database attivi . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.15.1 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.15.2 Gestione di una ridondanza . . . . . . . . . . . . . . 167
10.15.3 Event . . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.16 Window function . . . . . . . . . . . . . . . . . . . . . . . . 169
10.16.1 Clausola OVER . . . . . . . . . . . . . . . . . . . . . 169
10.16.2 Aggregate functions utilizzabili con OVER . . . . . . 171
10.16.3 Non-aggregate functions utilizzabili con OVER . . . 172
10.16.4 Window functions non-aggregate . . . . . . . . . . . 173
10.16.5 Funzione ROW_NUMBER . . . . . . . . . . . . . . 173
10.16.6 Funzione RANK . . . . . . . . . . . . . . . . . . . . 174
10.16.7 Clausola WINDOW . . . . . . . . . . . . . . . . . . 178
10.16.8 Funzione LAG . . . . . . . . . . . . . . . . . . . . . 178
10.16.9 Funzione LEAD . . . . . . . . . . . . . . . . . . . . . 180
6
1 Sistema organizzativo
È un sistema costituito da (persone, denaro, materiali,
Definizione: risorse
informazioni) e per lo svolgimento coordinato di attività (processi) per
regole
perseguire gli scopi propri di un’organizzazione (azienda o ente).
1.1 Sistema informativo
È la componente del sistema organizzativo che acquisisce, ela-
Definizione:
bora, conserva, produce le informazioni di interesse (cioè utili al perseguimen-
to degli scopi); inoltre, esegue/gestisce i processi informativi (cioè i processi
che coinvolgono informazioni).
Nelle attività umane, le informazioni sono gestite:
• In forme diverse:
idee informali;
◦ linguaggio naturale (scritto o parlato, formale o colloquiale, in
◦ varie lingue);
disegni, grafici, schemi;
◦ numeri e codici.
◦
• Su supporti diversi:
mente umana;
◦ carta;
◦ dispositivi elettronici.
◦
Questo modo di gestire delle informazioni, se non ben organizzato, può por-
tare a molti problemi: fragilità, errori, difficoltà nella condivisione, impossi-
bilità di scalare.
Ecco perché esiste il sistema informativo, il quale gestisce informazioni utili
al perseguimento degli scopi dell’organizzazione.
̸ =
Sistema informativo Sistema informatico
Mentre il primo è concettuale e organizzativo, il secondo è tecnologico. Que-
sto significa che il sistema informativo è indipendente da da ogni processo
automatizzato. 7
La parte del sistema informativo che gestisce le informazioni con tecnologia
informatica è chiamato sistema informativo automatizzato.
Graficamente, l’organizzazione dei vari sistemi appare così:
Azienda Sistema organizzativo
Sistema informativo
Sistema informatico
1.2 Informazioni e dati Notizia o elemento che consente di avere
Definizione di informazione:
conoscenza più o meno esatta di fatti, situazioni, modi di essere.
ciò che è immediatamente presente alla conoscen-
Definizione di dato:
za, prima di ogni elaborazione; (in informatica) elementi di informazione
costituiti da simboli che debbono essere elaborati.
Mentre l’informazione ha un significato intrinseco e viene interpretata da un
soggetto (persona o organizzazione) per prendere decisioni, il dato è solo una
grezza rappresentazione che non ha valore in sé, se non viene interpretato.
ESEMPIO La temperatura di fusione dell’oro è °C.
1064
Informazione:
01000001 01110101 00000100 00101000 01000011
Dato: | {z } | {z } | {z }
Au C
1064
L’informazione è immediatamente comprensibile, mentre il dato (in
questo caso è il numero binario), senza interpretazione, non ha alcun
senso. 8
Le attività umane producono informazioni, però i sistemi informativi auto-
matizzati non le possono gestire direttamente. Quest’ultimi gestiscono solo i
dati, che sono una codifica formale delle informazioni. Essi acquistano valore
informativo solo attraverso l’elaborazione e l’interpretazione.
Perché usano i dati? Perché essi costituiscono spesso una risorsa strategica,
poiché più stabili nel tempo di altre componenti (processi, tecnologie, ruoli
umani). 9
2 Base di Dati (database)
È un insieme di dati utilizzati per il supporto allo
Definizione: organizzato
svolgimento delle attività di un ente (azienda, ufficio, persona). È il cuore di
un sistema informativo automatizzato.
Perché è definito "organizzato"? Perché i dati:
• non sono casuali;
&bu
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti Basi di dati
-
Appunti di Basi di dati
-
Appunti Basi di dati completi
-
Appunti personali Basi di dati