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