G. Mecca – – 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)
2 G. Mecca - - Basi di Dati Concetti Fondamentali m Introduzione m Base di dati, tabella, ennupla, attributo Sintassi per la Descrizione delle Tabelle m Valori nulli m Vincoli di chiave, di ennupla, di riferimento m Caratteristiche del modello Rappresentazione di Informazione Nidificata DBMS Relazionali – Modello Logico >> Sommario
3 G. Mecca - - Basi di Dati Introduzione m Modello logico dei DBMS commerciali m Storia: Basato sul Modello Relazionale [E. F. Codd, 1970] Centrato sullindipendenza dei dati Disponibile in DBMS reali dal 1981 ANSI/ISO SQL-92 DBMS Relazionali – Modello Logico >> Concetti Fondamentali
4 G. Mecca - - Basi di Dati Attenzione m Lobiettivo di questa lezione è descrivere le caratteristiche del modello m 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 DBMS Relazionali – Modello Logico >> Concetti Fondamentali
5 G. Mecca - - Basi di Dati Intuizione m Base di dati insieme di tabelle m Tabella collezione di ennuple m Ennupla: insieme di coppie (attributo, valore) analogo nei linguaggi di programmazione: struttura o record DBMS Relazionali – Modello Logico >> Concetti Fondamentali
6 G. Mecca - - Basi di Dati Esempio: Studenti, Corsi, Esami m Base di dati universitari m Studenti nome, cognome, matricola, data di nascita m Corsi codice, nome del corso, nome del docente m Esami sostenuti corso, studente, voto DBMS Relazionali – Modello Logico >> Concetti Fondamentali
7 G. Mecca - - Basi di Dati Studenti, Corsi, Esami m Studenti nome: stringa cognome: stringa matricola: intero data di nascita: data m Corsi codice: stringa nome: stringa nome del docente: stringa m Esami sostenuti corso: riferimento ad un corso studente: riferimento ad uno studente voto: intero lode: sì/no DBMS Relazionali – Modello Logico >> Concetti Fondamentali
8 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Concetti Fondamentali Studenti TABLE Studenti(matricola integer, cognome char(20), nome char(20), dataNascita date); matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 ennupla attributovalore schema (esempio di sintassi) dominio (tipo) tabella (istanza) Studenti
9 G. Mecca - - Basi di Dati Corsi DBMS Relazionali – Modello Logico >> Concetti Fondamentali TABLE Corsi (codice char(3), titolo char(50), docente char(20)); codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero Corsi
10 G. Mecca - - Basi di Dati matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami DBMS Relazionali – Modello Logico >> Concetti Fondamentali TABLE Esami (matricola integer, voto integer, corso char(3), lode bool); matricola di uno studente codice di un corso Esami
11 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Concetti Fondamentali matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero Corsi matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami Base di Dati
12 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Concetti Fondamentali Schema della Base 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);
13 G. Mecca - - Basi di Dati Valori Nulli DBMS Relazionali – Modello Logico >> Concetti Fondamentali matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/ PaoloRossiNULL Studenti codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero POOProg. a OggettiNULL Corsi valore nullo
14 G. Mecca - - Basi di Dati Vincoli sui Dati m Regole della realtà di interesse m Unicità di codici di corso e matricole identificatori m Voti degli studenti da 18 a 30 lode solo se il voto è 30 m Correttezza dei riferimenti DBMS Relazionali – Modello Logico >> Concetti Fondamentali
15 G. Mecca - - Basi di Dati matricolacorsovotolode 333PR127false 77777PR135false 77777ASD20true 88888PR130false 9999INFT30true matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Una Base di Dati Scorretta DBMS Relazionali – Modello Logico >> Concetti Fondamentali unicità della matricola voti scorretti riferimento scorretto Studenti Esami
16 G. Mecca - - Basi di Dati Vincoli di Integrità m Regole imposte sui valori della base di dati m Vincoli sulle singole tabelle vincoli di chiave vincoli di ennupla m Vincoli tra tabelle diverse vincoli di riferimento o di integrità referenziale DBMS Relazionali – Modello Logico >> Concetti Fondamentali
17 G. Mecca - - Basi di Dati Vincoli di Integrità m Vincoli di chiave chiave: identificatore per le ennuple es: matricola è una chiave per Studenti m Vincoli di ennupla predicati sui valori delle ennuple es: (voto>=18 and voto<=30) m Vincoli di Riferimento assenza di riferimenti inesistenti es: esistono esami solo per gli studenti della bd DBMS Relazionali – Modello Logico >> Concetti Fondamentali
18 G. Mecca - - 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 matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti
19 G. Mecca - - 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)); matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami
20 G. Mecca - - 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)); matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami
21 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Concetti Fondamentali Schema con 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));
22 G. Mecca - - Basi di Dati Caratteristiche del Modello m Legami tra i dati basati sui valori assenza di puntatori m 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) DBMS Relazionali – Modello Logico >> Concetti Fondamentali
23 G. Mecca - - 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) 1Carburatore57,00 2Pasticche freni120,00 1Manodopera70,57 Totale247,57 Da Gigino – Officina Meccanica via della Fisica – Potenza FATTURA n. 50 del 12/10/2003 Cliente: Pinco Pietro (tel. 0971/23456) 1Testata motore257,00 1Punterie motore150,00 2Semiassi anteriori170,00 1Manodopera300,00 Totale877,00
24 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Concetti Fondamentali Una Possibile Rappresentazione numdataclientetelefonototale 2312/10/2003Pinco Palla 0971/ , /10/2003Pinco Pietro 0971/ ,00 Fatture fatturaquantitagenerecostoTot 231Carburatore57,00 232Pasticche freni120,00 231Manodopera70,57 501Testata motore257,00 501Punterie motore150,00 502Semiassi anteriori170,00 501Manodopera300,00 Voci
25 G. Mecca - - Basi di Dati Concetti Fondamentali m Introduzione m Base di dati, tabella, ennupla, attributo Sintassi per la Descrizione delle Tabelle m Valori nulli m Vincoli di chiave, di ennupla, di riferimento m Caratteristiche del modello Rappresentazione di Informazione Nidificata DBMS Relazionali – Modello Logico >> Sommario
26 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Concetti Fondamentali matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero Corsi matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami Base di Dati
27 G. Mecca - - Basi di Dati Ringraziamenti m Lesempio Studenti-Corsi-Esami è stato ispirato dal corrispondente esempio utilizzato dal Prof. Paolo Atzeni nel suo materiale didattico per il corso di Basi di Dati. m Lesempio delle Fatture è stato ispirato dallesempio delle Ricevute del Ristorante utilizzato dal Prof. Paolo Atzeni nel suo materiale didattico per il corso di Basi di Dati.
28 G. Mecca - - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.