Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Esercizi su Modello Entità-Relazioni Ing. Roberto Tronci roberto.tronci@diee.unica.it Basi di Dati A.A. 2009/2010 Docente: Prof. Ing. Giorgio Giacinto
2 Esercizio 5.2 (1/8) La base di dati di una università contiene informazioni sui professori (identificati dal codice fiscale cf ) e sui corsi (identificati da corsoid ). I professori insegnano nei corsi; ciascuna delle situazioni seguenti interessa l insieme di relazioni InsegnaIn. Per ciascuna situazione, disegnare un diagramma ER che la descrive (ipotizzando che non vi siano altri vincoli).
3 Esercizio 5.2 (2/8) 1. I professori possono insegnare lo stesso corso in diversi semestri, e ciascuna offerta didattica deve essere registrata. Semestre semestreid cf corsoid Professore InsegnaIn Corso
4 Esercizio 5.2 (3/8) 2. I professori possono insegnare lo stesso corso in diversi semestri, e solo l ultima di queste edizioni deve essere memorizzata (supporre che questa condizione valga in tutte le domande seguenti). cf semestre corsoid Professore InsegnaIn Corso
5 Esercizio 5.2 (4/8) 3. Ogni professore deve insegnare in qualche corso. cf semestre corsoid Professore InsegnaIn Corso
6 Esercizio 5.2 (5/8) 4. Ogni professore insegna esattamente in un corso (nessuno di più, nessuno di meno). cf semestre corsoid Professore InsegnaIn Corso
7 Esercizio 5.2 (6/8) 5. Ogni professore insegna esattamente in un corso (nessuno di più, nessuno di meno), e ogni corso deve essere tenuto da qualche professore. cf semestre corsoid Professore InsegnaIn Corso
8 Esercizio 5.2 (7/8) 6. Ora si supponga che certi corsi possano essere tenuti congiuntamente da un gruppo di professori, ma che sia possibile che nessun professore in un gruppo possa insegnare in quel corso. Modellare questa situazione, introducendo altri insiemi di entità e relazioni, se necessario.
9 Esercizio 5.2 (8/8) cf gid Professore Membro_di Gruppo semestre InsegnaIn corsoid Corso
10 Riassunto notazione cardinalità Notazione cardinalità Notazione libro (0,N) (0,1) (1,N) (1,1) Vincolo di partecipazione parziale (minimo 0) Vincolo di partecipazione parziale (min 0) + Vincolo di chiave (max 1) Vincolo di partecipazione totale (minimo 1) Vincolo di partecipazione totale (min 1) + Vincolo di chiave (max 1)
11 Esercizio A (1/3) Rappresentare, utilizzando i costrutti del modello ER, un giardino zoologico in cui ci sono degli animali appartenenti ad una specie e aventi una certa età; ogni specie è localizzata in un settore (avente un nome) del giardino zoologico.
12 Esercizio A (2/3) nome nome Settore Collocazione Specie Appartenenza id età Animale
13 Esercizio A (3/3) Nome Settore (0,N) (1,1) Collocazione Specie Nome (0,N) Appartenenza Età Id (1,1) Animale
14 Esercizio B (1/3) Rappresentare, utilizzando i costrutti del modello ER, una agenzia di noleggio di autovetture che ha un parco macchine ognuna delle quali ha una targa, un colore e fa parte di una categoria; per ogni categoria c è una tariffa di noleggio.
15 Esercizio B (2/3) Targa Colore Autoveicolo Codice Costo Appartenenza Tariffa Prezzo Categoria nome
16 Esercizio B (3/3) Colore Targa Autoveicolo (1,1) Codice Costo Appartenenza (1,N) Tariffa (1,N) (1,1) Prezzo Categoria Nome
17 Esercizio C (1/3) Rappresentare, utilizzando i costrutti del modello ER, una casa discografica che produce dischi aventi un codice ed un titolo; ogni disco è inciso da uno o più cantanti, ognuno dei quali ha un nome, un indirizzo e, qualcuno, un nome d arte.
18 Esercizio C (2/3) Codice Titolo Nome Indirizzo Disco Registrazione Cantante Nome d arte
19 Esercizio C (3/3) Codice Titolo Nome Indirizzo Disco (1,N) Registrazione (1,N) Cantante (0,1) Nome d arte
20 Esercizio D (1/6) Definire uno schema E-R che descriva i dati di una applicazione relativa ad un reparto ospedaliero. Sono di interesse le seguenti informazioni: I pazienti, con codice fiscale, nome, cognome, data di nascita I ricoveri dei pazienti, ognuno con data di inizio (identificante nell ambito dei ricoveri di ciascun paziente) e medico curante; inoltre, per i ricoveri conclusi, la data di dimissione e la motivazione (dimissione, trasferimento, ecc.), e, per i ricoveri in corso, il recapito di un parente (che si può assumere sia semplicemente una stringa) ( )
21 Esercizio D (2/6) Sono di interesse, inoltre: I medici, con un numero di matricola, cognome, nome, specializzazione e data di laurea Le visite, con la data, l ora, i medici visitanti, le medicine prescritte (con le relative quantità) e le malattie diagnosticate; ogni visita è identificata dal paziente coinvolto, dalla data e dall ora Per ogni medicina sono rilevanti un codice identificativo, un nome e un costo Per ogni malattia sono rilevanti un codice identificativo e un nome
22 Esercizio D (3/6) cf nome cognome data di nascita data matricola nome cognome Paziente Cura Ricovero Medico Responsabile motivo Data di dimissione Ricoveri conclusi ISA Ricoveri in corso specializzazione Data laurea recapito parente Analisi data Visita Presenza ora
23 Esercizio D (4/6) data ora Visita Prescrizione dosaggio Diagnosi codice Medicina nome costo codice nome Malattia
24 Esercizio D (5/6) Nome Cognome Data di Nascita Data Cognome Matricola Nome CF Paziente (0,N) Cura (1,1) Ricovero (1,1) (0,N) Responsabile Medico Analisi (0,N) Data di dimissione Motivo Ricoveri conclusi Data Ricoveri in Corso Specializzazione Recapito parente (1,1) (1,N) Visita Ora (0,N) Data di laurea Presenza
25 Esercizio D (6/6) Data Ora Dosaggio (0,N) Visita (1,1) Prescrizione Diagnosi Codice (0,N) Codice (0,N) Medicina Malattia Nome Costo Nome
26 Esercizio 5.7 (1/13) La catena di farmacie Prescrizioni-R-X si è offerta di darvi una fornitura a vita di medicine se le progettate la basi di dati. Visti l aumento dei costi della sanità, voi accettate. Ecco le informazioni che raccogliete: I pazienti sono identificati dal loro CF, e nomi, indirizzi ed età vanno registrati. I medici sono identificati dal loro CF. Per ciascun dottore vanno registrati nome, specializzazione ed anni di esperienza. Ogni compagnia farmaceutica è identificata dal nome e ha un numero di telefono. ( )
27 Esercizio 5.7 (2/13) Per ciascun preparato, la marca e la formula devono essere registrati. Ciascuno è venduto da una certa compagnia farmaceutica, e il nome li identifica univocamente tra tutti i prodotti di quella compagnia. Se una compagnia viene eliminata, non c è più possibilità di tenere traccia dei suoi prodotti. Ogni farmacia ha un nome, un indirizzo ed un numero di telefono. Ogni paziente ha un medico principale. Ogni medico ha almeno un paziente. Ogni farmacia vende diversi preparati, e ha un prezzo per ciascuno di essi. Un preparato potrebbe essere venduto da diverse farmacie, e il prezzo può variare dall una all altra. ( )
28 Esercizio 5.7 (3/13) I medici prescrivono le medicine ai pazienti. Un medico può prescrivere una o più medicine a pazienti diversi, e un paziente può ottenere una prescrizione da medici diversi. Ciascuna prescrizione ha associata una data e una quantità. Potete assumere che se un medico prescrive la stessa medicina per lo stesso paziente più di una volta, solo l ultima di queste prescrizioni debba essere memorizzata. Le compagnie farmaceutiche hanno contratti a lungo termine con le farmacie. Una compagnia può avere contatti con più farmacie, e una farmacia può avere contatti con più compagnie. Per ciascun contratto dovete memorizzare la data di inizio, la data di fine e il testo del contratto stesso.
29 Esercizio 5.7 (4/13) 1. Disegnare un diagramma ER che cattura le informazioni precedenti. Identificare ogni vincolo non catturato dal diagramma. 2. Come cambierebbe il progetto se ciascuna medicina dovesse essere venduta a un prezzo fisso da tutte le farmacie? 3. Come cambierebbe il progetto se i requisiti cambiassero come segue: se un dottore prescrive la stessa medicina per lo stesso paziente più di una volta, andrebbero memorizzate tutte queste prescrizioni?
30 Esercizio 5.7 (5/13) I pazienti sono identificati dal loro CF, e nomi, indirizzi ed eta vanno registrati. I medici sono identificati dal loro CF. Per ciascun dottore vanno registrati nome, specializzazione ed anni di esperienza. Ogni paziente ha un medico principale. Ogni medico ha almeno un paziente. I medici prescrivono le medicine ai pazienti. Un medico può prescrivere una o più medicine a pazienti diversi, e un paziente può ottenere una prescrizione da medici diversi. Ciascuna prescrizione ha associata una data e una quantità. Potete assumere che se un medico prescrive la stessa medicina per lo stesso paziente più di una volta, solo l ultima di queste prescrizioni debba essere memorizzata.
31 Esercizio 5.7 (6/13) CF nome età indirizzo CF nome esperienza specializzazione Paziente Medico_Pri Medico Prescrizione data quantità Medicina
32 Esercizio 5.7 (7/13) Per ciascun preparato, la marca e la formula devono essere registrati. Ciascuno è venduto da una certa compagnia farmaceutica, e il nome li identifica univocamente tra tutti i prodotti di quella compagnia. Se una compagnia viene eliminata, non c è più possibilità di tenere traccia dei suoi prodotti. Ogni compagnia farmaceutica è identificata dal nome e ha un numero di telefono. Ogni farmacia ha un nome, un indirizzo ed un numero di telefono.
33 Esercizio 5.7 (8/13) Ogni farmacia vende diversi preparati, e ha un prezzo per ciascuno di essi. Un preparato potrebbe essere venduto da diverse farmacie, e il prezzo può variare dall una all altra. Le compagnie farmaceutiche hanno contratti a lungo termine con le farmacie. Una compagnia può avere contatti con più farmacie, e una farmacia può avere contatti con più compagnie. Per ciascun contratto dovete memorizzare la data di inizio, la data di fine e il testo del contratto stesso.
34 Esercizio 5.7 (9/13) indirizzo formula nome telefono Medicina marca Farmacia Vendita prezzo Produzione data_inizio data_fine Contratto telefono testo supervisore Compagnia nome
35 Esercizio 5.7 (10/13)
36 Esercizio 5.7 (11/13) 2. Come cambierebbe il progetto se ciascuna medicina dovesse essere venduta a un prezzo fisso da tutte le farmacie? R. Se le medicine devono essere vendute a prezzo fisso, l attributo prezzo viene aggiunto all entità Medicina ed eliminato della relazione Vendita. indirizzo formula nome telefono Medicina marca Farmacia Vendita prezzo prezzo
37 Esercizio 5.7 (12/13) 3. Come cambierebbe il progetto se i requisiti cambiassero come segue: se un dottore prescrive la stessa medicina per lo stesso paziente più di una volta, andrebbero memorizzate tutte queste prescrizioni? R. L informazione sulla data non può più essere modellato come attributo di Prescrizione. Bisogna creare una nuova entità chiamata Data_Prescrizione a far diventare Prescrizione una relazione quaternaria che coinvolga questa entità aggiuntiva.
38 Esercizio 5.7 (13/13) CF nome età indirizzo CF nome esperienza specializzazione Paziente Medico_Pri Dottore Prescrizione data quantità data marca formula Medicina Data_Prescrizione quantità
39 Esercizio 5.5 (1/7) La Notown Records ha deciso di memorizzare informazioni sui musicisti che suonano nei suoi dischi (così come altri dati sulla compagnia) in una base di dati. L azienda ha saggiamente scelto di assumervi come progettista di base di dati. Ciascun musicista che incide alla Notown ha un CF, un nome, un indirizzo e un numero di telefono. Alcuni musicisti possono condividere lo stesso indirizzo. Nessun indirizzo ha più di un telefono. ( )
40 Esercizio 5.5 (2/7) Ciascun strumento usato nelle canzoni incise alla Notown ha un nome (es. chitarra, sintetizzatore, flauto) e una chiave musicale (es. Do, Si bemolle, Mi bemolle). Ciascun disco inciso ha un etichetta con titolo, una data di copyright, un formato (es. CD o musicassetta), e un identificatore del disco. Ogni canzone incisa alla Notown ha un titolo ed un autore. Ogni musicista può suonare diversi strumenti, e un dato strumento può essere suonato da diversi musicisti. Ogni disco ha un certo numero di canzoni, ma nessuna canzone può apparire su più di un disco. ( )
41 Esercizio 5.5 (3/7) Ogni canzone è eseguita da uno o più musicisti, e un musicista può eseguire un certo numero di canzoni. Ciascun disco ha esattamente un musicista che lo produce. Un musicista può ovviamente produrre diversi dischi. Progettare uno schema concettuale per la Notown e disegnare un diagramma E-R per tale schema. Le informazioni precedenti descrivono la situazione che la base di dati della Notown deve modellare. Assicuratevi di specificare tutti i vincoli di chiave e di cardinalità e tutte le ipotesi che fate. Identificate ciascun vincolo che non riuscite a catturare nel diagramma E-R e spiegare brevemente perché non avete potuto esprimerlo.
42 Esercizio 5.5 (4/6) CF nome indirizzo Musicista Residenza Luogo Suona strumentoid nome Strumento chiave Abitazione Telefono numero
43 Esercizio 5.5 (5/6) CF nome titolo formato Musicista discoid data_ Produzione Disco Esecuzione canzoneid titolo autore Apparizione Canzone
Esercizio 5.5 (6/6) 44
45 Esercizio 5.3 (1/13) Considerate le seguenti informazioni su una base di dati universitaria: I professori hanno un CF, un nome, un età, un ruolo e una specifica area di ricerca. I progetti hanno un numero di progetto, un nome di sponsor (per esempio NSF), una data di inizio, una data di fine e un budget. Gli studenti laureati hanno un CF, un nome, un età e un programma post-laurea (es. dottorato o specializzazione). Ciascun progetto è gestito da un professore (noto come principale responsabile del progetto ). ( )
46 Esercizio 5.3 (2/13) A ciascun progetto lavorano uno o più professori (noti come co-responsabile del progetto ). I professori possono gestire e/o lavorare su progetti multipli. A ciascun progetto lavorano uno o più laureati (noti come assistenti di ricerca del progetto ) Quando i laureati lavorano su un progetto, un professore deve supervisionare il loro lavoro. I laureati possono lavorare su progetti multipli, nel qual caso avranno un supervisore (potenzialmente diverso) per ciascuno. I dipartimenti hanno un numero di dipartimento, un nome ed un ufficio di riferimento. ( )
47 Esercizio 5.3 (3/13) I dipartimenti hanno un professore (noto come direttore ) che gestisce il dipartimento. I professori lavorano in uno o più dipartimenti, e per ciascun dipartimento in cui lavorano viene calcolata una percentuale del tempo lavorato. I laureati hanno un dipartimento principale in cui lavorano al loro programma post-laurea. Progettare e disegnare un diagramma E-R che catturi le informazioni sull Università. Usate solo il modello E-R di base, qui: ossia, entità, relazioni e attributi. Assicuratevi di indicare tutti i vincoli di chiave e di partecipazione.
48 Esercizio 5.3 (4/13) I professori hanno un CF, un nome, un età, un ruolo e una specifica area di ricerca. I dipartimenti hanno un numero di dipartimento, un nome ed un ufficio di riferimento. I professori lavorano in uno o più dipartimenti, e per ciascun dipartimento in cui lavorano viene calcolata una percentuale del tempo lavorato. I dipartimenti hanno un professore (noto come direttore ) che gestisce il dipartimento.
49 Esercizio 5.3 (5/13) nome ruolo cf specialità Professore Per_tempo Lavora_Dip Dipartimento Dirige_Dip dnumero nome ufficio
50 Esercizio 5.3 (6/13) I progetti hanno un numero di progetto, un nome di sponsor (per esempio NSF), una data di inizio, una data di fine e un budget. Ciascun progetto è gestito da un professore (noto come principale responsabile del progetto ). A ciascun progetto lavorano uno o più professori (noti come co-responsabile del progetto ). I professori possono gestire e/o lavorare su progetti multipli.
51 Esercizio 5.3 (7/13) nome ruolo cf specialità Professore Lavora_In Progetto Gestisce pid sponsor inizio budget fine
52 Esercizio 5.3 (8/13) Gli studenti laureati hanno un CF, un nome, un età e un programma post-laurea (es. dottorato o specializzazione). I laureati hanno un dipartimento principale in cui lavorano al loro programma post-laurea.
53 Esercizio 5.3 (9/13) nome età cf prog_post Studente Lavora_post_laurea Dipartimento dnumero ufficio nome
54 Esercizio 5.3 (10/13) A ciascun progetto lavorano uno o più laureati (noti come assistenti di ricerca del progetto ) Quando i laureati lavorano su un progetto, un professore deve supervisionare il loro lavoro. I laureati possono lavorare su progetti multipli, nel qual caso avranno un supervisore (potenzialmente diverso) per ciascuno.
55 Esercizio 5.3 (11/13) nome età cf prog_post Studente Assiste_ricerca Progetto cf pid sponsor inizio budget fine
56 Esercizio 5.3 (12/13) cf nome ruolo specialità cf nome età prog_post Studente Professore Assiste_ricerca Progetto cf pid sponsor inizio budget fine Supervisiona
57 Esercizio 5.3 (13/13)