Basi di dati Esercitazione 07 novembre 2002 Ing. Gianluca Di Tomassi Esercizio 3.1.1 (1/2) Per ciascuno dei seguenti schemi logici (in cui A- indica che l'attributo A ammette valori nulli), mostrare uno schema concettuale dal quale possa essere stato ottenuto (indicando anche cardinalità e identificatori). Schema (a) Libri(Codice, Titolo, Genere-, Autore) con vincolo di integrità referenziale: fra Autore e la relazione Scrittori Edizioni(Libro, Editore, Collana-, Anno) fra Libro e la relazione Libri fra Editore e la relazione Editori Editori(, Città) Scrittori(Codice, Cognome, ) Basi di dati - Esercitazione Gianluca Di Tomassi 2
Soluzione esercizio 3.1.1 schema (a) Codice Cognome Codice Titolo Genere Collana Anno SCRITTORE Autore LIBRO Edizione Citta EDITORE Basi di dati - Esercitazione Gianluca Di Tomassi 3 Esercizio 3.1.1 (2/2) Schema (b) Libri(Codice, Titolo, Genere-) con vincolo di integrità referenziale: fra Genere e la relazione Generi Edizioni(Libro, Editore, Collana-, Anno) fra Libro e la relazione Libri fra Editore e la relazione Editori fra Collana e la relazione Collane Autori(Libro, Scrittore) fra Libro e la relazione Libri fra Scrittore e la relazione Scrittori Collane(SiglaCollana, ) Editori(, Città) Scrittori(Codice, Cognome, ) Generi(SiglaGenere, ) Basi di dati - Esercitazione Gianluca Di Tomassi 4
Soluzione esercizio 3.1.1 schema (b) SiglaCollana COLLANA Codice Cognome Codice Titolo SCRITTORE LIBRO EDIZIONE Anno GENERE SiglaGenere EDITORE Citta Basi di dati - Esercitazione Gianluca Di Tomassi 5 Esercizio 3.2.1 (1/2) Si consideri la seguente relazione CodMateria Materia CS Semestre CodDocente Doc Dipartimento I01 Analisi I Inf I NR1 Neri Matematica I01 Analisi I El I NR2 Neri Matematica I02 Analisi II El-Inf I NR1 Neri Matematica I04 Fisica I El II BN1 Bianchi Fisica I04 Fisica I Mec I BR1 Bruni Meccanica I04 Fisica I Inf I BR1 Bruni Meccanica I05 Fisica II El II BR1 Bruni Meccanica I06 Chimica Tutti I RS1 Rossi Fisica (nota: l'attributo CS assume valori di tipo stringa che indicano in qualche modo il corso di studio o i corsi di studio cui un corso è destinato) Individuare la chiave (o le chiavi) della relazione e le dipendenze funzionali definite su di essa (ignorando quelle che si ritiene siano eventualmente occasionali") e spiegare perché essa non soddisfa la BCNF. Decomporla in BCNF nel modo che si ritiene più opportuno Basi di dati - Esercitazione Gianluca Di Tomassi 6
Soluzione esercizio 3.2.1 Dipendenze CodMateria Materia Materia CodMateria CodMateria, CS Semestre, CodDocente CodDocente Doc, Dipartimento Chiavi CodMateria, CS Materia, CS Decomposizione Materie (CodMateria, Materia) Corsi (CodMateria, CS, Semestre, Docente) Docenti (CodDocente, Doc, Dipartimento) Basi di dati - Esercitazione Gianluca Di Tomassi 7 Esercizio 3.3.1 Data Dato il seguente schema Entity-Relationship (Esercizio 2.1.1) ristrutturare lo schema e tradurre lo schema E-R ottenuto in uno schema concettuale argomentando le scelte fatte. R2 POSTAZIONE R3 Num_pos (1,N) R4 R1 Cod_lab Risorsa senza autorizzazione RISORSA Risorsa con autorizzazione PRENOTAZI LABORATOR UTILIZZO ONE IO abbreviato intero R1 Assegnamento Data Durata R2 Posto_Pren R3 Post_ut R5 R6 R7 R8 R4 Composizione R5 Fare_pren R6 Fare_ut Mat_resp ResidenzaTelefono RESPONSAB R7 Frequenza ILE R8 Controllo Matr. STUDENTE R9 Autorizzazione R9 Cognome Luogo Data nascita nascita Basi di dati - Esercitazione Gianluca Di Tomassi 8 t, e Cod_ris
Soluzione esercizio 3.3.1 (1/3) La gerarchia viene collassata verso il basso perché esclusiva e totale, e perché esiste una relazione con una delle due sottoentità. Era possibile comunque non collassare la relazione, la scelta definitiva la si può fare una volta che si conoscono delle statistiche sui dati Laboratorio(COD_LAB,mat_resp) Postazione(NUM_POS,COD_LAB) Ris_senza_autoriz(COD_RIS,cod_lab,num_pos) Studente(MAT_STUD,nome,cognome,data_n,luogo_nascita,tel,residenza) Ris_con_autoriz(COD_RIS,cod_lab,num_pos) Utilizzo(DATA,durata,num_pos,cod_lab,MAT_STUD) Prenotazione(DATA,num_pos,cod_lab,MAT_STUD) Frequenza(MAT_STUD,COD_LAB) Autorizzazione(MAT_STUD,COD_RIS) Responsabile(mat_resp) Basi di dati - Esercitazione Gianluca Di Tomassi 9 Soluzione esercizio 3.3.1 (2/3) Postazione(NUM_POS,COD_LAB) fra COD_LAB e la relazione Laboratorio Utilizzo(DATA,durata,num_pos,cod_lab,MAT_STUD) Prenotazione(DATA,num_pos,cod_lab,MAT_STUD) Frequenza(MAT_STUD,COD_LAB) fra MAT_STUD e la relazione Studente fra COD_LAB e la relazione Laboratorio Autorizzazione(MAT_STUD,COD_RIS) fra MAT_STUD e la relazione Studente fra COD_RIS e la relazione Ris_con_autoriz Basi di dati - Esercitazione Gianluca Di Tomassi 10
Soluzione esercizio 3.3.1 (3/3) Laboratorio(COD_LAB,mat_resp) fra mat_resp e la relazione Responsabile Ris_senza_autoriz(COD_RIS,cod_lab,num_pos) Ris_con_autoriz(COD_RIS,cod_lab,num_pos) Basi di dati - Esercitazione Gianluca Di Tomassi 11 Esercizio 3.4.1 Realizzare uno schema ER relativo alla seguente descrizione: si deve una base di dati per una società che gestisce un insieme di taxi. il taxi e' caratterizzato dalla targa, il tipo di macchina, il nome in codice. Ogni macchina e' caratterizzata dalla capienza e da caratteristiche (che possono anche non essere presenti). Ai taxi sono associati gli autisti, ognuno caratterizzato dai propri dati anagrafici, da un codice e dall indirizzo dell'abitazione. I clienti telefonano alla sede centrale per richiedere un taxi. La sede centrale assegna i taxi alle richieste dei clienti. Nella richiesta il cliente specifica il proprio nome, il luogo, la data e l'ora a cui desidera il taxi e la destinazione richiesta. Qualora abbia bisogno di un veicolo particolarmente capiente, ciò deve essere comunicato al momento della richiesta. Al termine della corsa, al cliente viene fornita una ricevuta per l'importo della corsa. Sulla ricevuta sono indicati il nome del cliente, il codice del taxi, il luogo e l'ora sia della partenza che dell'arrivo, la distanza percorsa e l'ammontare che evidenzia le varie voci ed i vari supplementi. Ad ogni Ricevuta deve corrispondere una prenotazione, ma il viceversa può non essere vero. In questo caso la prenotazione viene conservata, ma etichettata come "annullata" Basi di dati - Esercitazione Gianluca Di Tomassi 12
Soluzione esercizio 3.4.1 (1/2) Tipo Capienza MACCHINA Caratteristiche R3 CodiceAutista AUTISTA Cognome Targa R1 TAXI Tipo Codice Numero-r Importo Distanza R2 R4 RICEVUTA Supplementi R6 Ora APPUNTAME NTO R5 Data Luogo abbreviato R1 R2 R3 R4 R5 R6 Capienza PRENOTAZI Annullata ONE intero Tipo Assegnazione Conduzione Emissione Richiesta Relativa Indirizzo Data Luogo nascita nascita Ora partenza Ora arrivo Data Cognome Destinazione Basi di dati - Esercitazione Gianluca Di Tomassi 13 Soluzione esercizio 3.4.1 (2/2) Commenti: Una prima analisi porterebbe a pensare che tra l entità TAXI e PRENOTAZIONE ci sia l associazione APPUNTAMENTO con attributi chiave DATA, ORA, TARGA e NOME del cliente. Tale soluzione però permette ad uno stesso taxi di servire più clienti allo stesso orario e data. Si è operata quindi l oggettificazione dell associazione e inserito vincoli imposti dall identificazione esterna con l entità TAXI. L entità APPUNTAMENTO è stata inserita per impedire che uno stesso taxi a parità di data e ora si trovi in posti diversi. L entità CLIENTI non è stata inserita in quanto non è necessario avere un anagrafica dei clienti;le ricevute sono identificate da un numero progressivo. Basi di dati - Esercitazione Gianluca Di Tomassi 14