G. Mecca – [email protected] – Università della BasilicataG. Mecca – [email protected] – Università della Basilicata
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)
2G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
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
DBMS Relazionali – Modello Logico >> Sommario
3G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Introduzione
Modello logico dei DBMS commerciali Storia:
Basato sul “Modello Relazionale” [E. F. Codd, 1970]
Centrato sull’indipendenza dei datiDisponibile in DBMS reali dal 1981ANSI/ISO SQL-92
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
4G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Attenzione
L’obiettivo di questa lezione è descrivere le caratteristiche del modello
Non ci occupiamo, per ora:delle tecniche per manipolare i dati
>> linguaggiodei metodi per costruire la base di dati (come
scegliere le tabelle e valutare la qualità)>> metodologia di progetto
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
5G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Intuizione
Base di datiinsieme di tabelle
Tabellacollezione di ennuple
Ennupla:insieme di coppie (attributo, valore)analogo nei linguaggi di programmazione:
“struttura” o “record”
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
6G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
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
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
7G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Studenti, Corsi, Esami
Studentinome: stringacognome: stringamatricola: interodata di nascita: data
Corsicodice: stringanome: stringa
nome del docente: stringa
Esami sostenuticorso: “riferimento” ad
un corsostudente: “riferimento”
ad uno studentevoto: interolode: sì/no
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
8G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Studenti
TABLE Studenti(matricola integer, cognome char(20), nome char(20), dataNascita date);
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
ennupla attributo valore
schema(esempio disintassi)
dominio(tipo)
tabella(istanza)
Studenti
9G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Corsi
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
TABLE Corsi (codice char(3), titolo char(50), docente char(20));
codice titolo docente
PR1 Programmazione I F. Totti
ASD Algoritmi e Str. Dati C. Vieri
INFT Informatica Teorica A. Del Piero
Corsi
10G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
matricola corso voto lode
333 PR1 27 false
77777 PR1 21 false
77777 ASD 20 false
88888 PR1 30 false
88888 INFT 30 true
Esami
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
TABLE Esami (matricola integer, voto integer, corso char(3), lode bool);
matricola di uno studente
codicedi un corso
Esami
11G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
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
Studenti
codice titolo docente
PR1 Programmazione I F. Totti
ASD Algoritmi e Str. Dati C. Vieri
INFT Informatica Teorica A. Del Piero
Corsi
matricola corso voto lode
333 PR1 27 false
77777 PR1 21 false
77777 ASD 20 false
88888 PR1 30 false
88888 INFT 30 true
Esami Base diDati
12G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
SchemadellaBase di Dati
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);
13G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Valori Nulli
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
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
Studenti
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
Corsivalore nullo
14G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Vincoli sui Dati
Regole della realtà di interesse Unicità di codici di corso e matricole
“identificatori” Voti degli studenti
da 18 a 30lode solo se il voto è 30
Correttezza dei riferimenti
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
15G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
matricola corso voto lode
333 PR1 27 false
77777 PR1 35 false
77777 ASD 20 true
88888 PR1 30 false
9999 INFT 30 true
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
Una Base di Dati Scorretta
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
unicità della matricola
voti scorretti
riferimentoscorretto
Studenti
Esami
16G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Vincoli di Integrità
Regole imposte sui valori della base di dati
Vincoli sulle singole tabellevincoli di chiavevincoli di ennupla
Vincoli tra tabelle diversevincoli di riferimento o di integrità
referenziale
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
17G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Vincoli di Integrità
Vincoli di chiavechiave: identificatore per le ennuplees: “matricola” è una chiave per “Studenti”
Vincoli di ennuplapredicati sui valori delle ennuplees: (voto>=18 and voto<=30)
Vincoli di Riferimentoassenza di riferimenti inesistenties: esistono esami solo per gli studenti della bd
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
18G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Vincoli di Chiave
TABLE Studenti(matricola integer, cognome char(20), nome char(20), dataNascita date, UNIQUE(matricola));
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
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
Studenti
19G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Vincoli di Ennupla
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
TABLE Esami (matricola integer, voto integer, corso char(3), lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30));
matricola corso voto lode
333 PR1 27 false
77777 PR1 21 false
77777 ASD 20 false
88888 PR1 30 false
88888 INFT 30 true
Esami
20G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Vincoli di Riferimento
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
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));
matricola corso voto lode
333 PR1 27 false
77777 PR1 21 false
77777 ASD 20 false
88888 PR1 30 false
88888 INFT 30 true
Esami
21G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Schemacon
vincoli di integrità
TABLE Corsi (codice char(3), titolo char(50), docente char(20), UNIQUE(codice));
TABLE Studenti(matricola integer, cognome char(20), nome char(20), dataNascita date, UNIQUE(matricola));
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));
22G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Caratteristiche del Modello
Legami tra i dati basati sui valoriassenza di puntatori
I valori devono essere semplicivalori “atomici” : numeri, caratteri, stringhe,
booleani, date ecc.non sono consentite “nidificazioni” (base di
dati in “I forma normale”)differenza con altri modelli (es: strutture)
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
23G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
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
Cliente: Pinco Palla (tel. 0971/56789)
1 Carburatore 57,00
2 Pasticche freni 120,00
1 Manodopera 70,57
Totale 247,57
Da Gigino – Officina Meccanica
via della Fisica – Potenza
FATTURA n. 50 del 12/10/2003
Cliente: Pinco Pietro (tel. 0971/23456)
1 Testata motore 257,00
1 Punterie motore 150,00
2 Semiassi anteriori 170,00
1 Manodopera 300,00
Totale 877,00
24G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
Una Possibile Rappresentazionenum data cliente telefono totale
23 12/10/2003 Pinco Palla 0971/56789 247,57
50 12/10/2003 Pinco Pietro 0971/23456 877,00
Fatture
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
Voci
25G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
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
DBMS Relazionali – Modello Logico >> Sommario
26G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
DBMS Relazionali – Modello Logico >> Concetti Fondamentali
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
Studenti
codice titolo docente
PR1 Programmazione I F. Totti
ASD Algoritmi e Str. Dati C. Vieri
INFT Informatica Teorica A. Del Piero
Corsi
matricola corso voto lode
333 PR1 27 false
77777 PR1 21 false
77777 ASD 20 false
88888 PR1 30 false
88888 INFT 30 true
Esami Base diDati
27G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
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.
28G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati
Termini della Licenza
Termini della Licenza
This work is licensed under the Creative Commons Attribution-ShareAlike 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.