Basi di Dati
Sistemi per Basi di Dati
Relazionali: Modello Logico
Concetti Fondamentali
versione 2.0
Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons
(vedi ultima pagina)
G. Mecca – [email protected] – Università della Basilicata
DBMS Relazionali – Modello Logico >> Sommario
Concetti Fondamentali
 Introduzione
 Base
di dati, tabella, ennupla, attributo
Sintassi per la Descrizione delle Tabelle
 Valori
nulli
 Vincoli di chiave, di ennupla, di riferimento
 Caratteristiche del modello
Rappresentazione di Informazione Nidificata
G. Mecca - [email protected] - Basi di Dati
2
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Introduzione
 Modello
logico dei DBMS commerciali
 Storia:
Basato sul “Modello Relazionale”
[E. F. Codd, 1970]
Centrato sull’indipendenza dei dati
Disponibile in DBMS reali dal 1981
ANSI/ISO SQL-92
G. Mecca - [email protected] - Basi di Dati
3
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Attenzione
 L’obiettivo
di questa lezione è descrivere
le caratteristiche del modello
 Non ci occupiamo, per ora:
delle tecniche per manipolare i dati
>> linguaggio
dei metodi per costruire la base di dati (come
scegliere le tabelle e valutare la qualità)
>> metodologia di progetto
G. Mecca - [email protected] - Basi di Dati
4
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Intuizione
 Base
di dati
insieme di tabelle
 Tabella
collezione di ennuple
 Ennupla:
insieme di coppie (attributo, valore)
analogo nei linguaggi di programmazione:
“struttura” o “record”
G. Mecca - [email protected] - Basi di Dati
5
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Esempio: Studenti, Corsi, Esami
 Base
di dati universitari
 Studenti
nome, cognome, matricola, data di nascita
 Corsi
codice, nome del corso, nome del docente
 Esami
sostenuti
corso, studente, voto
G. Mecca - [email protected] - Basi di Dati
6
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Studenti, Corsi, Esami

nome: stringa
cognome: stringa
matricola: intero
data di nascita: data

nome del docente:
stringa
Studenti
Corsi
codice: stringa
nome: stringa
G. Mecca - [email protected] - Basi di Dati

Esami sostenuti
corso: “riferimento” ad
un corso
studente: “riferimento”
ad uno studente
voto: intero
lode: sì/no
7
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Studenti
Studenti
tabella
(istanza)
ennupla
matricola
cognome
nome
dataNascita
333
John
Smith
15/06/1980
444
Pinco
Palla
01/10/1984
77777
Bruno
Pasquale
05/07/1983
88888
Pinco
Pietro
01/10/1984
attributo
TABLE Studenti(matricola integer,
cognome char(20),
nome char(20),
dataNascita date);
G. Mecca - [email protected] - Basi di Dati
valore
schema
(esempio di
sintassi)
dominio
(tipo) 8
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Corsi
Corsi
codice
titolo
docente
PR1
Programmazione I
F. Totti
ASD
Algoritmi e Str. Dati
C. Vieri
INFT
Informatica Teorica
A. Del Piero
TABLE Corsi (codice char(3),
titolo char(50),
docente char(20));
G. Mecca - [email protected] - Basi di Dati
9
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
matricola di uno studente
Esami
Esami
matricola
corso
voto
lode
333
PR1
27
false
77777
PR1
21
false
77777
ASD
20
false
88888
PR1
30
false
88888
INFT
30
true
codice
di un corso
TABLE Esami (matricola integer,
voto integer,
corso char(3),
lode bool);
G. Mecca - [email protected] - Basi di Dati
10
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Studenti
Corsi
Esami
matricola
cognome
nome
dataNascita
333
John
Smith
15/06/1980
444
Pinco
Palla
01/10/1984
77777
Bruno
Pasquale
05/07/1983
88888
Pinco
Pietro
01/10/1984
codice
titolo
docente
PR1
Programmazione I
F. Totti
ASD
Algoritmi e Str. Dati
C. Vieri
INFT
Informatica Teorica
A. Del Piero
matricola
corso
voto
lode
333
PR1
27
false
77777
PR1
21
false
77777
ASD
20
false
88888
PR1
30
false
88888
INFT
30
true
G. Mecca - [email protected] - Basi di Dati
Base di
Dati
11
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
TABLE Studenti(matricola integer,
cognome char(20),
nome char(20),
dataNascita date);
TABLE Corsi (codice char(3),
titolo char(50),
docente char(20));
TABLE Esami (matricola integer,
voto integer,
corso char(3),
lode bool);
G. Mecca - [email protected] - Basi di Dati
Schema
della
Base di Dati
12
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Valori Nulli
Studenti
Corsi
matricola
cognome
nome
dataNascita
333
John
Smith
15/06/1980
444
Pinco
Palla
01/10/1984
77777
Bruno
Pasquale
05/07/1983
88888
Pinco
Pietro
01/10/1984
123
Paolo
Rossi
NULL
codice
titolo
docente
PR1
Programmazione I
F. Totti
ASD
Algoritmi e Str. Dati
C. Vieri
INFT
Informatica Teorica
A. Del Piero
POO
Prog. a Oggetti
NULL
G. Mecca - [email protected] - Basi di Dati
valore nullo
13
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Vincoli sui Dati
 Regole
della realtà di interesse
 Unicità di codici di corso e matricole
“identificatori”
 Voti
degli studenti
da 18 a 30
lode solo se il voto è 30
 Correttezza
dei riferimenti
G. Mecca - [email protected] - Basi di Dati
14
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Una Base di Dati Scorretta
Studenti
Esami
unicità della
matricola
matricola
cognome
nome
dataNascita
333
John
Smith
15/06/1980
444
Pinco
Palla
01/10/1984
77777
Bruno
Pasquale
05/07/1983
77777
Pinco
Pietro
01/10/1984
matricola
corso
voto
lode
333
PR1
27
false
77777
PR1
35
false
77777
ASD
20
true
88888
PR1
30
false
9999
INFT
30
true
G. Mecca - [email protected] - Basi di Dati
voti scorretti
riferimento
scorretto
15
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Vincoli di Integrità
 Regole
imposte sui valori della base di
dati
 Vincoli sulle singole tabelle
vincoli di chiave
vincoli di ennupla
 Vincoli
tra tabelle diverse
vincoli di riferimento o di integrità referenziale
G. Mecca - [email protected] - Basi di Dati
16
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Vincoli di Integrità

Vincoli di chiave
chiave: identificatore per le ennuple
es: “matricola” è una chiave per “Studenti”

Vincoli di ennupla
predicati sui valori delle ennuple
es: (voto>=18 and voto<=30)

Vincoli di Riferimento
assenza di riferimenti inesistenti
es: esistono esami solo per gli studenti della bd
G. Mecca - [email protected] - Basi di Dati
17
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Vincoli di Chiave
Studenti
matricola
cognome
nome
dataNascita
333
John
Smith
15/06/1980
444
Pinco
Palla
01/10/1984
77777
Bruno
Pasquale
05/07/1983
88888
Pinco
Pietro
01/10/1984
TABLE Studenti(matricola integer,
cognome char(20),
nome char(20),
dataNascita date,
UNIQUE(matricola));
G. Mecca - [email protected] - Basi di Dati
18
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Vincoli di Ennupla
Esami
matricola
corso
voto
lode
333
PR1
27
false
77777
PR1
21
false
77777
ASD
20
false
88888
PR1
30
false
88888
INFT
30
true
TABLE Esami (matricola integer,
voto integer,
corso char(3),
lode bool,
CHECK (voto>=18 and voto<=30),
CHECK (not lode or voto=30));
G. Mecca - [email protected] - Basi di Dati
19
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Vincoli di Riferimento
Esami
matricola
corso
voto
lode
333
PR1
27
false
77777
PR1
21
false
77777
ASD
20
false
88888
PR1
30
false
88888
INFT
30
true
TABLE Esami (matricola integer
corso char(3)
voto integer,
lode bool,
CHECK (voto>=18 and voto<=30),
CHECK (not lode or voto=30),
FOREIGN KEY(matricola)
REFERENCES Studenti(matricola),
FOREIGN KEY(corso)
REFERENCES Corsi(codice));
G. Mecca - [email protected] - Basi di Dati
20
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
TABLE Studenti(matricola integer,
cognome char(20),
nome char(20),
dataNascita date,
UNIQUE(matricola));
Schema
con
vincoli di
integrità
TABLE Corsi (codice char(3),
titolo char(50),
docente char(20),
UNIQUE(codice));
TABLE Esami (matricola integer,
corso char(3),
voto integer,
lode bool,
CHECK (voto>=18 and voto<=30),
CHECK (not lode or voto=30),
FOREIGN KEY(matricola)
REFERENCES studenti(matricola),
FOREIGN KEY(corso)
REFERENCES corsi(codice),
UNIQUE (matricola, corso));
G. Mecca - [email protected] - Basi di Dati
21
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Caratteristiche del Modello
 Legami
tra i dati basati sui valori
assenza di puntatori
I
valori devono essere semplici
valori “atomici” : numeri, caratteri, stringhe,
booleani, date ecc.
non sono consentite “nidificazioni” (base di
dati in “I forma normale”)
differenza con altri modelli (es: strutture)
G. Mecca - [email protected] - Basi di Dati
22
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Un Esempio di Informazione Nidificata
Da Gigino – Officina Meccanica
via della Fisica – Potenza
FATTURA n. 23 del 12/10/2003
Da Gigino – Officina Meccanica
via della Fisica – Potenza
FATTURA n. 50 del 12/10/2003
Cliente: Pinco Palla (tel. 0971/56789)
Cliente: Pinco Pietro (tel. 0971/23456)
1
Carburatore
57,00
1
Testata motore
257,00
2
Pasticche freni
120,00
1
Punterie motore
150,00
1
Manodopera
70,57
2
Semiassi anteriori
170,00
1
Manodopera
300,00
Totale
247,57
G. Mecca - [email protected] - Basi di Dati
Totale
877,00
23
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Una Possibile Rappresentazione
Fatture
Voci
num
data
cliente
telefono
totale
23
12/10/2003
Pinco Palla
0971/56789
247,57
50
12/10/2003
Pinco Pietro
0971/23456
877,00
fattura
quantita
genere
costoTot
23
1
Carburatore
57,00
23
2
Pasticche freni
120,00
23
1
Manodopera
70,57
50
1
Testata motore
257,00
50
1
Punterie motore
150,00
50
2
Semiassi anteriori
170,00
50
1
Manodopera
300,00
G. Mecca - [email protected] - Basi di Dati
24
DBMS Relazionali – Modello Logico >> Sommario
Concetti Fondamentali
 Introduzione
 Base
di dati, tabella, ennupla, attributo
Sintassi per la Descrizione delle Tabelle
 Valori
nulli
 Vincoli di chiave, di ennupla, di riferimento
 Caratteristiche del modello
Rappresentazione di Informazione Nidificata
G. Mecca - [email protected] - Basi di Dati
25
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Studenti
Corsi
Esami
matricola
cognome
nome
dataNascita
333
John
Smith
15/06/1980
444
Pinco
Palla
01/10/1984
77777
Bruno
Pasquale
05/07/1983
88888
Pinco
Pietro
01/10/1984
codice
titolo
docente
PR1
Programmazione I
F. Totti
ASD
Algoritmi e Str. Dati
C. Vieri
INFT
Informatica Teorica
A. Del Piero
matricola
corso
voto
lode
333
PR1
27
false
77777
PR1
21
false
77777
ASD
20
false
88888
PR1
30
false
88888
INFT
30
true
G. Mecca - [email protected] - Basi di Dati
Base di
Dati
26
Ringraziamenti
Ringraziamenti


L’esempio Studenti-Corsi-Esami è stato ispirato dal corrispondente
esempio utilizzato dal Prof. Paolo Atzeni ([email protected])
nel suo materiale didattico per il corso di Basi di Dati.
L’esempio delle Fatture è stato ispirato dall’esempio delle Ricevute
del Ristorante utilizzato dal Prof. Paolo Atzeni
([email protected]) nel suo materiale didattico per il corso di
Basi di Dati.
G. Mecca - [email protected] - Basi di Dati
27
Termini della Licenza
Termini della Licenza

This work is licensed under the Creative Commons AttributionShareAlike License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to
Creative Commons, 559 Nathan Abbott Way, Stanford, California
94305, USA.

Questo lavoro viene concesso in uso secondo i termini della
licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere
una copia della licenza, è possibile visitare
http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una
lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way,
Stanford, California 94305, USA.
G. Mecca - [email protected] - Basi di Dati
28
Scarica

concetti fondamentali () - Corso di Laurea in Informatica