Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto IL MODELLO ER PER LA PROGETTAZIONE CONCETTUALE DI UNA BASE DI DATI http://www.diee.unica.it/giacinto/lab Introduzione alla progettazione delle basi di dati! Progettazione concettuale (in questa fase si usa il modello ER)! Quali sono le entità e le relazioni dell organizzazione?! Quali informazioni su queste entità e relazioni dovrebbero essere memorizzate nella base di dati?! Quali sono i vincoli di integrità o le regole aziendali (business rules) in vigore? Giorgio Giacinto 2010 Laboratorio d'informatica 2
Introduzione alla progettazione delle basi di dati 1. Analisi dei requisiti! Dati, applicazioni, operazioni più frequenti! Analisi informale con gli utenti 2. Progettazione concettuale! Descrizione ad alto livello dei dati da memorizzare! Uso del modello ER! produzione di uno schema di base di dati rappresentato graficamente da un diagramma Giorgio Giacinto 2010 Laboratorio d'informatica 3 Introduzione alla progettazione delle basi di dati 3. Progettazione logica! Scelta di un DBMS per l implementazione della base di dati! Tradurre del diagramma ER nello schema logico del DBMS (noi considereremo il relazionale) 4. Raffinamento dello schema (normalizzazione)! controllo dello schema relazionale per trovare ridondanze e relative anomalie. 5. Progettazione fisica e ulteriore raffinamento dello schema! si considerano il carico di lavoro e le prestazioni del sistema per effettuare ulteriori modifiche sullo schema. Giorgio Giacinto 2010 Laboratorio d'informatica 4
Introduzione alla progettazione delle basi di dati 6. Progettazione delle applicazioni e della sicurezza! Ingegneria del software! Limiti d uso della base di dati da parte di diversi gruppi di utenti In tutti i momenti della progettazione si deve prevedere un feedback per le fasi precedenti Giorgio Giacinto 2010 Laboratorio d'informatica 5 IL MODELLO ENTITY-RELATIONSHIP (ER)
Basi del modello ER Entità: oggetto del mondo reale distinguibile da altri oggetti! Una entità è descritta (nel DB) usando un insieme di attributi! Insieme di entità: una collezione di entità simili (es., tutti gli impiegati)! Tutte le entità in un insieme di entità hanno lo stesso insieme di attributi Impiegati Ciascun insieme di entità ha una chiave Ciascun attributo ha un dominio pp Giorgio Giacinto 2010 Laboratorio d'informatica 7 Basi del modello ER (segue) Relazione: associazione tra 2 o più entità. Ad esempio, Bianchi lavora nel reparto Farmacia! Insieme di relazioni: collezione di relazioni simili! Ciascuna relazione è denotata da una n-tupla {(e 1,,e n ) e 1! E 1,,e n! En} che correla n insiemi di entità E 1... E n! Le relazioni possono anche avere attributi descrittivi! Lo stesso insieme di entità può partecipare a diversi insiemi di relazioni, o in ruoli differenti all interno dello stesso insieme Giorgio Giacinto 2010 Laboratorio d'informatica 8
Basi del modello ER (segue) dal r pp rid budget Impiegati Lavora_In Reparti pp Impiegati Località subordinato supervisore Indirizzo capienza Dipende_da Giorgio Giacinto 2010 Laboratorio d'informatica 9 Relazioni! Una relazione è univocamente identificata dalle entità che vi partecipano! Lavora_in (binaria) è identificata da e rid! Lavora_in (ternaria) è identificata da, rid e Indirizzo Giorgio Giacinto 2010 Laboratorio d'informatica 10
Vincoli di chiave! Lavora_In! un impiegato può lavorare in molti reparti! un reparto può avere molti impiegati! Di contro, ciascun reparto ha al più un direttore! Un reparto compare al più in una relazione di Dirige Impiegati pp dal Dirige rid r Reparti budget 1-a-1 1-a-Molti Molti-a-1 Molti-a-molti Giorgio Giacinto 2010 Laboratorio d'informatica 11 Vincoli di partecipazione! C è un direttore per ogni reparto?! Se sì, questo è un vincolo di partecipazione: la partecipazione di Reparti in Dirige viene detta totale (piuttosto che parziale)! Ogni valore rid della tabella Reparti deve apparire in almeno una riga della tabella Dirige! Il vincolo di chiave impone che il valore di rid compaia in una sola riga di Dirige Giorgio Giacinto 2010 Laboratorio d'informatica 12
Vincoli di partecipazione pp dal rid r budget Impiegati Dirige Reparti Lavora_In dal Giorgio Giacinto 2010 Laboratorio d'informatica 13 Vincoli di cardinalità! Vincoli di chiave e di partecipazione considerati insieme sono anche detti vincoli di cardinalità! definiscono rispettivamente una cardinalità massima e minima! cardinalità massima pari a 1 (vincolo di chiave) o N (relazione a molti)! cardinalità minima pari a 0 (partecipazione opzionale) o 1 (partecipazione obbligatoria) Giorgio Giacinto 2010 Laboratorio d'informatica 14
Entità deboli! Una entità debole può essere identificata univocamente solo considerando la chiave primaria di un altra entità (proprietario)! L insieme di entità proprietarie e l insieme di entità deboli devono partecipare in un insieme di relazioni uno-a-molti (1 proprietario, molte entità deboli)! L insieme di entità deboli deve avere partecipazione totale in questo insieme di relazioni identificanti pp costo p età Impiegati Polizza Familiari Giorgio Giacinto 2010 Laboratorio d'informatica 15 PROGETTAZIONE CONCETTUALE
Progettazione concettuale usando il modello ER! Scelte di progetto! Un concetto dovrebbe essere modellato come una entità o come un attributo?! Un concetto dovrebbe essere modellato come una entità o come una relazione?! Identificare le relazioni: binarie o ternarie?! Rappresentazione di vincoli nel modello ER! molta della semantica dei dati può (e dovrebbe) essere catturata! però alcuni vincoli non possono essere catturati dai diagrammi ER Giorgio Giacinto 2010 Laboratorio d'informatica 17 Progettazione concettuale usando il modello ER! Necessità di ulteriori raffinamenti dello schema! lo schema relazionale ottenuto dai diagrammi ER è un buon punto di partenza. Ma il progetto ER è soggettivo e non può esprimere certi vincoli Quindi lo schema relazionale può aver bisogno di raffinamenti Giorgio Giacinto 2010 Laboratorio d'informatica 18
Entità o Attributi?! Indirizzo dovrebbe essere un attributo di Impiegati o una entità (connessa a Impiegati da una relazione)?! Dipende dall uso che vogliamo fare delle informazioni sull indirizzo, e dalla semantica dei dati! se abbiamo diversi indirizzi per impiegati, indirizzo deve essere una entità (poiché gli attributi non possono assumere più valori)! se la struttura (città, via, etc) è importante, ad esempio vogliamo trovare gli impiegati in una data città, indirizzo deve essere modellato come una entità (poiché i valori degli attributi sono atomici) Giorgio Giacinto 2010 Laboratorio d'informatica 19 Entità o Attributi? (segue)! Lavora_In2 non permette a un impiegato di lavorare in un reparto per due o più periodi! Simile al problema della registrazione di indirizzi multipli per un impiegato: vogliamo registrare diversi valori degli attributi descrittivi per ciascuna istanza della relazione Impiegati Impiegati pp dal dal pp al Lavora_In2 Lavora_In3 Durata rid rid r Reparti al budget r budget Reparti Giorgio Giacinto 2010 Laboratorio d'informatica 20
Relazioni binarie o relazioni ternarie? pp p età Impiegati Copre Familiari Polizze! Vincoli aggiuntivi polizzaid costo! Una polizza non può essere posseduta congiuntamente da due o più impiegati! Ogni polizza deve essere posseduta da qualche impiegato! Familiari è un insieme di entità deboli! Identificata da p e polizzaid! Un vincolo di chiave su Polizze significherebbe che una polizza può coprire solo un familiare! Giorgio Giacinto 2010 Laboratorio d'informatica 21 Relazioni binarie o relazioni ternarie? pp p età Impiegati Familiari Intestatario Beneficiario Polizze polizzaid costo Giorgio Giacinto 2010 Laboratorio d'informatica 22
Relazioni binarie o relazioni ternarie? (segue)! L esempio precedente illustra un caso in cui due relazioni binarie sono migliori di una relazione ternaria! Un esempio nell altra direzione: una relazione ternaria Contratti mette in relazione gli insiemi Pezzi, Reparti e Fornitori, e ha l attributo descrittivo quantità. Nessuna combinazione di relazioni binarie è un sostituto adeguato! F può fornire P, D ha bisogno di P, e D tratta con F non implicano che D sia d accordo sul comprare P da F! Come registriamo quantità? Giorgio Giacinto 2010 Laboratorio d'informatica 23 Riassunto della progettazione concettuale! La progettazione concettuale segue l analisi dei requisiti! Porta a una descrizione ad alto livello dei dati che devono essere memorizzati! Il modello ER è molto usato per la progettazione concettuale! I costrutti sono espressivi, vicini al modo in cui la gente pensa alle applicazioni! Costrutti di base: entità, relazioni e attributi (di entità e relazioni)! Alcuni costrutti addizionali: entità deboli, gerarchie ISA e aggregazione! Nota: ci sono molte varianti del modello ER Giorgio Giacinto 2010 Laboratorio d'informatica 24
Riassunto della progettazione concettuale (segue)! Nel modello ER si possono esprimere diversi tipi di vincoli di integrità! vincoli di chiave! vincoli di partecipazione e vincoli di sovrapposizione/copertura per le gerarchie ISA.! Nella definizione di insieme di relazioni sono anche impliciti alcuni vincoli di chiave esterna. Giorgio Giacinto 2010 Laboratorio d'informatica 25 Riassunto della progettazione concettuale (segue)! Alcuni vincoli (in particolare le dipendenze funzionali) non possono essere espressi nel modello ER! I vincoli giocano un ruolo importante nel determinare il miglior progetto di base di dati per una organizzazione. Giorgio Giacinto 2010 Laboratorio d'informatica 26
ESEMPI DI PROGETTAZIONE CONCETTUALE MEDIANTE DIAGRAMMI ER Esercizio 1 (1/8)! La base di dati di una università contiene informazioni sui professori (identificati dal codice fiscale ) 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). Giorgio Giacinto 2010 Laboratorio d'informatica 28
Esercizio 1 (2/8)! I professori possono insegnare lo stesso corso in diversi semestri, e ciascuna offerta didattica deve essere registrata. Semestre semestreid corsoid Professore InsegnaIn Corso Giorgio Giacinto 2010 Laboratorio d'informatica 29 Esercizio 1 (3/8)! 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). semestre corsoid Professore InsegnaIn Corso Giorgio Giacinto 2010 Laboratorio d'informatica 30
Esercizio 1 (4/8)! Ogni professore deve insegnare in qualche corso. semestre corsoid Professore InsegnaIn Corso Giorgio Giacinto 2010 Laboratorio d'informatica 31 Esercizio 1 (5/8)! Ogni professore insegna esattamente in un corso (nessuno di più, nessuno di meno). semestre corsoid Professore InsegnaIn Corso Giorgio Giacinto 2010 Laboratorio d'informatica 32
Esercizio 1 (6/8)! Ogni professore insegna esattamente in un corso (nessuno di più, nessuno di meno), e ogni corso deve essere tenuto da qualche professore. semestre corsoid Professore InsegnaIn Corso Giorgio Giacinto 2010 Laboratorio d'informatica 33 Esercizio 1 (7/8)! 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. Giorgio Giacinto 2010 Laboratorio d'informatica 34
Esercizio 1 (8/8) gid Professore Membro_di Gruppo semestre InsegnaIn corsoid Corso Giorgio Giacinto 2010 Laboratorio d'informatica 35 Esercizio 2 (1/2)! 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 ) del giardino zoologico. Giorgio Giacinto 2010 Laboratorio d'informatica 36
Esercizio 2 (2/2) Settore Collocazione Specie Appartenenza id età Animale Giorgio Giacinto 2010 Laboratorio d'informatica 37 Esercizio 3 (1/2)! Rappresentare 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. Giorgio Giacinto 2010 Laboratorio d'informatica 38
Esercizio 3 (2/2) Targa Colore Autoveicolo Codice Costo Appartenenza Tariffa Prezzo Categoria Giorgio Giacinto 2010 Laboratorio d'informatica 39 Esercizio 4 (1/2)! Rappresentare 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, un indirizzo e un d arte. Giorgio Giacinto 2010 Laboratorio d'informatica 40
Esercizio 4 (2/2) Codice Titolo Nome Indirizzo Disco Registrazione Cantante Nome d arte Giorgio Giacinto 2010 Laboratorio d'informatica 41 Esercizio 5 (1/4)! 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,, cog, data di nascita! I medici, con un numero di matricola, cog,, specializzazione e data di laurea! Le malattie descritte da un codice identificativo e un! Le medicine descritte con un codice identificativo, un e un costo (continua) Giorgio Giacinto 2010 Laboratorio d'informatica 42
Esercizio 5 (2/4)! I ricoveri dei pazienti, ognuno con data di inizio (identificante nell ambito dei ricoveri di ciascun paziente) e medico curante;! Le visite, identificate dal paziente coinvolto, dalla data e dall ora! Per ogni visita, i medici visitanti, le medicine prescritte (con le relative quantità) e le malattie diagnosticate. Giorgio Giacinto 2010 Laboratorio d'informatica 43 Esercizio 5 (3/4) cog data di nascita data matricola cog Paziente Cura Ricovero Medico Responsabile specializzazione Data laurea Analisi data Visita Presenza ora Giorgio Giacinto 2010 Laboratorio d'informatica 44
Esercizio 5 (4/4) data ora Visita Prescrizione dosaggio Diagnosi codice Medicina costo codice Malattia Giorgio Giacinto 2010 Laboratorio d'informatica 45 Esercizio 6 (1/10)! 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 medico vanno registrati, specializzazione ed anni di esperienza.! Ogni paziente ha un medico principale. Ogni medico ha almeno un paziente. (continua) Giorgio Giacinto 2010 Laboratorio d'informatica 46
Esercizio 6 (2/10)! 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 ipotizzare 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. (continua) Giorgio Giacinto 2010 Laboratorio d'informatica 47 Esercizio 6 (3/10)! Ogni azienda farmaceutica è identificata dal e ha un numero di telefono.! Per ciascun preparato, la marca e la formula devono essere registrati. Ciascuno è venduto da una certa azienda farmaceutica, e il li identifica univocamente tra tutti i prodotti di quella azienda. Se una azienda viene eliminata, non c è più possibilità di tenere traccia dei suoi prodotti.! Ogni farmacia ha un, un indirizzo ed un numero di telefono.! 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. (continua) Giorgio Giacinto 2010 Laboratorio d'informatica 48
Esercizio 6 (4/10)! Le aziende farmaceutiche hanno contratti a lungo termine con le farmacie. Una azienda può avere contatti con più farmacie, e una farmacia può avere contatti con più aziende. Per ciascun contratto dovete memorizzare la data di inizio, la data di fine e il testo del contratto stesso. Giorgio Giacinto 2010 Laboratorio d'informatica 49 Esercizio 6 (5/10) 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. Illustrare come cambierebbe il progetto se i requisiti cambiassero come segue: se un medico prescrive la stessa medicina per lo stesso paziente più di una volta, devono essere memorizzate tutte queste prescrizioni Giorgio Giacinto 2010 Laboratorio d'informatica 50
Esercizio 6 (6/10) CF età indirizzo CF esperienza specializzazione Paziente Medico_Pri Medico Prescrizione data quantità Medicina Giorgio Giacinto 2010 Laboratorio d'informatica 51 Esercizio 6 (7/10) indirizzo formula telefono Medicina marca Farmacia Vendita data_inizio prezzo Produzione data_fine testo supervisore Contratto Azienda telefono Giorgio Giacinto 2010 Laboratorio d'informatica 52
Esercizio 6 (8/10) 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 telefono Medicina marca Farmacia Vendita prezzo Giorgio Giacinto 2010 Laboratorio d'informatica 53 Esercizio 6 (9/10) 3. Come cambierebbe il progetto se i requisiti cambiassero come segue: se un medico 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. Giorgio Giacinto 2010 Laboratorio d'informatica 54