Database
prof. Maurizio Naldi
LUMSA
A.A. 2015-16
I database
Permettono di archiviare, elaborare e recuperare dati in forma
strutturata
DBMS = Database Management Systems
Database gerarchici e relazionali
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
2 / 39
Elementi di un database
Tabelle
Record (entità, in righe)
Campi (attributi, in colonne)
Esempio: Database degli studenti
Record: studenti
Campi: nome, cognome, data di nascita, classe, sezione
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
3 / 39
Tipi di dati
Stringa di testo (alfanumerico)
Numero (intero o reale, cioè dotato di parte decimale)
Data
Valore booleano (Vero o Falso)
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
4 / 39
Esempio di tabella degli alunni
Nome
Cognome
Data di nascita
Classe
Sezione
Giuseppe
Maria
Vittorio
Rosa
Verdi
Bianchi
Marroni
Rossi
20-02-1999
04-03-2004
25-06-2002
19-09-2003
5
1
3
2
A
B
A
B
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
5 / 39
Tipi di dati nel database degli studenti
Nome: Stringa
Cognome: Stringa
Data di nascita: Data
Classe: Numero
Sezione: Stringa
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
6 / 39
Il tipo NULL
Per indicare che un campo è vuoto si usa il tipo NULL
Questo può accadere per diversi casi:
Dato esistente ma sconosciuto
Dato inesistente o attributo non applicabile
Assenza completa di informazioni
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
7 / 39
Identificazione univoca delle entità
Obiettivo: assenza di ridondanza (record identici)
Identificazione univoca dei record ⇐⇒ Scelta di uno o più campi in
modo tale che tutti i record di quella tabella presentino valori diversi
in quei campi
Chiave primaria = Campi impiegati per distinguere i record
Chiavi primarie semplici e composte
Uso di identificativi numerici progressivi
Esempi di chiavi primarie
Codice ISBN di un libro
Matricola di uno studente universitario
Numero di una carta di credito
Codice PIN
Partita IVA
Codice fiscale
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
8 / 39
Definizioni di chiave
Una superchiave è un insieme di campi tali che non esistono due
record che abbiano lo stesso valore di quei campi
Una chiave è una superchiave minimale (cioè non esiste un’altra
superchiave che la contenga)
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
9 / 39
Esempi di chiavi
L’insieme {Matricola, Corso} è superchiave
Il campo Matricola è una chiave
L’insieme {Cognome, Nome, Nascita} è una superchiave ma nessuno dei
singoli campi è una superchiave
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
10 / 39
Tabella con identificativo progressivo
ID
Nome
Cognome
Data di nascita
Classe
Sezione
1
2
3
4
5
Giuseppe
Maria
Vittorio
Rosa
Maria
Verdi
Bianchi
Marroni
Rossi
Bianchi
20-02-1999
04-03-2004
25-06-2002
19-09-2003
05-012-2003
5
1
3
2
2
A
B
A
B
B
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
11 / 39
Valori NULL nelle chiavi
Le chiavi non possono contenere valori NULL
La presenza di valori NULL nelle chiavi (primarie o esterne)
impedirebbe l’identificazione di un record od il riferimento ad un altro
record
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
12 / 39
Vincoli di integrità
Servono a garantire la correttezza dei dati inseriti
Vincoli all’interno di una tabella
Vincoli di valore (sul singolo campo)
Vincoli sul singolo record
Vincoli tra tabelle
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
13 / 39
Esempi di vincoli all’interno di una tabella
Vincolo sul voto del singolo esame, compreso tra 18 e 30 (vincolo sul
singolo campo)
Vincolo sulla presenza della lode, solo se il voto è 30 (vincolo tra due
campi)
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
14 / 39
Le dipendenze funzionali
Una dipendenza funzionale costituisce un vincolo di integrità tra due
campi (o insiemi di campi) di una medesima tabella
Il campo Z ha una dipendenza funzionale dal campo Y (Y −→ Z ) se
per ogni coppia di record che hanno il medesimo valore del campo Y ,
risulta che hanno lo stesso valore anche nel campo Z
Il vincolo di dipendenza funzionale non è simmetrico in generale
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
15 / 39
Esempi di dipendenze funzionali
Esistono le seguenti dipendenze funzionali
Impiegato −→ Stipendio
Progetto −→ Bilancio
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
16 / 39
Chiavi e dipendenze funzionali
Per una qualunque chiave esiste una dipendenza funzionale tra quella
chiave ed ogni altro campo della tabella
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
17 / 39
Relazioni tra tabelle
Relazione uno-a-uno;
Relazione uno-a-molti;
Relazione molti-a-molti.
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
18 / 39
Rappresentazione delle relazioni
Editori
Id_Ed
Nome_Ed
Libri
ISBN
Titolo
Id_Ed
1
1
∞
Autore-Libro
ISBN
Id_autore
∞
M. Naldi (LUMSA)
Corso AbInfo
1
∞
Autori
Id_autore
Nome_autore
Cognome_autore
A.A. 2015-16
19 / 39
Vincoli di integrità referenziale
Per ogni coppia di tabelle collegate da una relazione occorre garantire
che il riferimento utilizzato sia reperibile
Se condieriamo una relazione tra la tabella A e la tabella B, per ogni
record della tabella A il valore scritto nella chiave esterna deve essere
presente nella chiave primaria della tabella B
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
20 / 39
Esempio di database con vincoli di integrità referenziale
soddisfatti
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
21 / 39
Rappresentazione delle relazioni
Infrazioni
Codice
Data
Agente
Articolo
Prov
Numero
1
∞
Agenti
Matricola
CF
Cognome
Nome
∞
1
Auto
Prov
Numero
Proprietario
Indirizzo
Relazione Infrazioni-Agenti: Chiave esterna=Agente
Relazione Infrazioni-Auto: Chiave esterna=Provincia+Numero
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
22 / 39
Database con vincoli di integrità non soddisfatti
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
23 / 39
La normalizzazione
La ridondanza
Le anomalie
Le sei forme normali
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
24 / 39
Esempio di tabella con anomalie
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
25 / 39
Ridondanze e anomalie
Ridondanza: Ripetizione di dati in più punti della tabella
Anomalia di aggiornamento: Modifica contemporanea dello stesso
campo in più record
Anomalia di cancellazione: Cancellazione di informazioni di interesse a
causa della cancellazione di alcuni record
Anomalia di inserimento: Impossibilità di inserire informazioni di
interesse per la necessità di inserire un intero record
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
26 / 39
Decomposizione di una tabella
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
27 / 39
Le prime tre forme normali
1
Tutti i campi devono contenere valori atomici, ovvero semplici e
indivisibili
2
Tutti i campi devono dipendere dall’intero campo della chiave primaria
3
Tutti i campi diversi dalla chiave primaria devono essere indipendenti
tra di loro, ovvero nessun campo può essere derivato da un altro
campo oppure cambia se cambia un altro campo
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
28 / 39
Tabella con valori non atomici
M. Naldi (LUMSA)
Nome e cognome
Città
CAP
Mario Rossi
Giuseppe Bianchi
Vittorio Verdi
Roma
Palermo
Milano
00133
90139
20125
Corso AbInfo
A.A. 2015-16
29 / 39
Tabella con valori atomici e chiave primaria corretta
Nome
Cognome
Città
CAP
CF
Mario
Giuseppe
Vittorio
Rossi
Bianchi
Verdi
Roma
Palermo
Milano
00133
90139
20125
RSSMRA66R14H501N
BNCGPP66D25G273C
VRDVTR65A01F205!
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
30 / 39
Tabella con attributi multivalori
ID
Nome
Cognome
N. telefono
123
456
789
Mario
Giuseppe
Vittorio
Rossi
Bianchi
Verdi
09251111
09323333 09329999
09815555
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
31 / 39
Tabella in prima forma normale
ID
Nome
Cognome
N. telefono 1
N. telefono 2
123
456
789
Mario
Giuseppe
Vittorio
Rossi
Bianchi
Verdi
09251111
09323333
09815555
09329999
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
32 / 39
Utilizzo di relazioni uno-a-molti
Tabella degli utenti
ID
Nome
Cognome
123
456
789
Mario
Giuseppe
Vittorio
Rossi
Bianchi
Verdi
M. Naldi (LUMSA)
Tabella dei numeri di telefono
Corso AbInfo
ID
N. telefono
123
456
456
789
09251111
09323333
09329999
09815555
A.A. 2015-16
33 / 39
Definizione di Seconda Forma Normale
Una tabella è in seconda forma normale se non ci sono dipendenze
funzionali tra un sottoinsieme proprio della chiave ed altri campi
Una tabella con una chiave costituita da un solo campo è in seconda
forma normale
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
34 / 39
Esempio di tabella che viola la seconda forma normale
La chiave è costituita dall’insieme {Progetto, Impiegato}
Ci sono due dipendenze parziali Impiegato−→Stipendio e
Progetto−→Budget
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
35 / 39
Tabella in seconda forma normale
La chiave è costituita dal campo Impiegato
Non ci sono due dipendenze parziali
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
36 / 39
Definizione di Terza forma normale
Per ogni dipendenza funzionale non banale X −→ Y si verifica almeno una
delle seguenti condizioni
X contiene una chiave della tabella
A appartiene ad almeno una chiave della tabelle
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
37 / 39
Esempio di tabella in 3FN
L’insieme {Progetto, Sede} è una chiave
Esistono le dipendenze {Progetto, Sede} −→ Dirigente e
Dirigente−→Sede
La dipendenza {Progetto, Sede} −→ Dirigente ha come primo
membro una chiave
Nella dipendenza Dirigente−→Sede il secondo membro fa parte della
chiave {Progetto, Sede}
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
38 / 39
Accesso a database relazionali
Il linguaggio SQL
I comandi SQL
1
2
3
Comandi per creare, cancellare o modificare una tabella (Data
Definition Language, DDL);
Comandi per inserire, cancellare, modificare e leggere i dati del
database (Data Manipulation Language, DML);
Comandi per gestire le autorizzazioni ad intervenire sul database (Data
Control Language, DCL).
M. Naldi (LUMSA)
Corso AbInfo
A.A. 2015-16
39 / 39