Progetto logico per il modello relazionale AA 2004-2005 Giovanna Petrone 1 Trasformazione da schema E-R a modello relazionale Risultato: schema relazionale nella forma normale opportuna. SCHEMA E-R passo A: ristrutturazione A Schema E-R ristrutturato passo B: traduzione B Set di relazioni (modello relazionale) AA 2004-2005 Giovanna Petrone 2 1 Passo A: ristrutturazione dello schema E-R E’ una fase di riorganizzazione dello schema ER sulla base del carico applicativo previsto. Il carico applicativo consiste di: 1) Volumi dei dati (memoria d’occupazione); 2) Caratteristiche delle operazioni (piu’ rilevanti). AA 2004-2005 Giovanna Petrone 3 Carico applicativo 1) Volumi dei dati: valutati come N*O, dove N è il numero di occorrenze di ogni entità e/o relazione; O è l’occupazione in bytes di ogni occorrenza. 2) Caratteristiche delle operazioni: - tipo (interattivo o batch); - frequenza (numero medio di operazioni in una certa unità di tempo); - volumi di dati coinvolti. AA 2004-2005 Giovanna Petrone 4 2 Indici di prestazioni n Lo scopo del passo di ristrutturazione è di ottimizzare i seguenti indici di prestazione: n costo di una operazione: valutato come numero di accessi ad occorrenze di entità e/o relazione visitati per rispondere a una operazione; n occupazione di memoria AA 2004-2005 Giovanna Petrone 5 Esempio codice nome stipendio età impiegato N_progetti (0,1) (0,n) afferenza (1,n) dipartimento data_afferenza telefono nome (1,n) partecipazione data_inizio (1,n) progetto nome AA 2004-2005 budget data_consegna Giovanna Petrone 6 3 Tavola dei volumi Dipende dalla cardinalità delle entità e dalla cardinalità media di partecipazione di una occorrenza di entità ad una relazione: n Concetto Impiegato n Tipo entità Volume (n. occ) 2000 Dipartimento entità 80 Progetto entità 500 Partecipazione relazione 6000 Afferenza relazione 1900 Ipotesi: se un impiegato partecipa in media a 3 progetti, la relazione partecipazione ha in media 2000*3 occorrenze; invece afferenza ha cardinalità di poco inferiore a impiegato AA 2004-2005 Giovanna Petrone 7 Tavola delle operazioni n n n Operazione 1: assegna un impiegato ad un progetto. Operazione 2: trova tutti i dati di un impiegato (con i dati del suo dipartimento e l’elenco dei progetti ai quali lavora). Operazione 3: trova tutti i dati di un dipartimento (con l’elenco dei suoi dipendenti). Operazione Tipo Frequenza Operazione 1 interattiva 50 volte al giorno Operazione 2 interattiva 100 volte al giorno Operazione 3 batch AA 2004-2005 1 volta alla settimana Giovanna Petrone 8 4 Costo dell’Operazione 1: “assegna un impiegato ad un progetto” Schema dell’operazione codice nome stipendio età impiegato N_progetti (0,n) +1 partecipazione data_inizio (1,n) progetto nome budget data_consegna AA 2004-2005 Giovanna Petrone 9 Tavola degli accessi Concetto n Tipo N accessi Lettura/Scrittura Impiegato entità 1 S Partecipazione relazione 1 S Costo: 2 operazioni di scrittura * 50 volte al giorno AA 2004-2005 Giovanna Petrone 10 5 Passo A: ristrutturazione dello schema E-R E’ costituito da una sequenza di passi: 1) Analisi delle ridondanze; 2) Eliminazione delle gerarchie di generalizzazione; 3) Partizionamento/accorpamento di entità; 4) Scelta degli identificatori. AA 2004-2005 Giovanna Petrone 11 Analisi delle ridondanze n n n n n Conviene mantenere l’attributo ridondante N_progetti in impiegato? Costo in volumi di dati per l’attributo N_progetti: 2000 impiegati * 2 byte= 4Kbyte. Costo in aggiornamento (Op.1): 1 accesso in scrittura per 50 volte al giorno. Costo in lettura (Op.2): 1 accesso in lettura per 100 volte al giorno. Se supponiamo che un’operazione di scrittura costi il doppio rispetto ad una di lettura si hanno 200 accessi al giorno. AA 2004-2005 Giovanna Petrone 12 6 Eliminazione attributo N_progetti n n n n Alternativamente potrei contare il numero di occorrenze della relazione partecipazione che si riferiscono ad un certo impiegato. Costo in volumi di dati: nullo. Costo di mantenimento: nullo. Costo di lettura: in media 3 operazioni di lettura per 100 volte al giorno: 300 accessi al giorno. AA 2004-2005 Giovanna Petrone 13 Eliminazione delle gerarchie di generalizzazione Vi sono alcune possibilità: 1) Collassamento delle sottoclassi nella superclasse: n gli attributi delle sottoclassi sono uniti a quelli dell’entità superiore n si aggiunge un attributo discriminante 2) Eliminazione della superclasse: n propagazione degli attributi della superclasse in tutte sottoclassi 3) Mantenimento di tutte le entità, correlate da relazioni che rappresentano la generalizzazione. AA 2004-2005 Giovanna Petrone 14 7 Esempio TUTORE GRADO(a.d.,(0,1)) TITOLO_TESI (0,1) C_FISC NOME CORSO_DI_STUDI STUDENTE C_FISC NOME CORSO_DI_ STUDI STUDENTE (p,e) LAUREANDO (1,1) UNIVERSITARIO (0,1) TITOLO_ TESI SOCIO_ DI HA_ RELATORE (1,n) FACOLTA` TUTORE HA_ RELATORE (1,n) (1,n) ASSOCIAZIONE_ STUDENTESCA AA 2004-2005 (0,1) FACOLTA` (0,1) SOCIO_ DI (1,n) ASSOCIAZIONE_ STUDENTESCA Giovanna Petrone 15 Scelta 1 Svantaggi: Incremento di occupazione di memoria (presenza di valori nulli per gli attributi non significativi). Vantaggi: Conviene quando le operazioni non fanno distinzione rispetto all’appartenenza di una occorrenza a una sottoclasse: numero minore di accessi perché le occorrenze di interesse sono tutte concentrate in una stessa entità. AA 2004-2005 Giovanna Petrone 16 8 Esempio C_FISC NOME (0,1) IMPIEGATO (1,1) PAGA_ CONTR CONTRIBUTI (0,1) DIRETTORE (t,e) SEGRETARIO INGEGNERE MANAGER (1,n) (0,m) NUM_SOTTOPOSTI SPECIALIZZAZIONE CAPACITA` (1,n) USA (0,n) WORD_PROCESSOR Rappresentazione di gerarchie di generalizzazione mediante sottoclassi AA 2004-2005 Giovanna Petrone 17 (0,1) (0,1) CONTRIBUTI (0,1) CONTR_2 CONTR_1 (0,1) NUM_SOTTOPOSTI (0,1) C_FISC C_FISC NOME CONOSC SEGRETARIO NOME C_FISC INGEGNERE NOME CONTR_3 MANAGER (0,1) (1,n) (0,m) SPECIALIZ (1,n) (1,1) DIRETT_1 (0,n) (0,1) (1,n) DIRETT_3 USA (1,1) (1,n) DIRETT_2 WORD_PROCESSOR AA 2004-2005 Giovanna Petrone 18 9 Scelta 2 Svantaggi: E’ possibile solo se la generalizzazione è totale, altrimenti le occorrenze della sopraclasse non sarebbero rappresentate. Occorre duplicare il numero di relazioni per ciascuna sottoclasse. Vantaggi: Conviene se le operazioni fanno accesso solo ad occorrenze di una o delle altre sottoclassi. Si risparmia in memoria perché si eliminano i valori nulli degli attributi. Si riducono gli accessi rispetto alla scelta 3 perché per accedere ad un’occorrenza di una sottoclasse non si deve passare per la sopraclasse. AA 2004-2005 Giovanna Petrone 19 Esempio NUM_PROG NOME_PROG PROGETTO (1,n) (1,m) HA MEMBRI_ PROGETTO BUDGET (p,o) PROGETTO_ SW PROGETTO_ HW (1,n) SOTTOCONTRATTO NUM_ SCHEDE CONTRAENTE_ PRINCIPALE MESI_UOMO USA (0,m) COMPONENTI_HW Rappresentazione di gerarchie di generalizzazione tramite relazioni AA 2004-2005 Giovanna Petrone 20 10 NUM_PROG NOME_PROG PROGETTO (1,m) HA (1,n) MEMBRI_ PROGETTO BUDGET (0,1) (0,1) (0,1) TIPO_SW TIPO_HW (1,1) (1,1) PROGETTO_ SW TIPO_ SOTTOCONTR (1,1) PROGETTO_ HW (1,n) MESI_UOMO SOTTOCONTRATTO NUM_ SCHEDE CONTRAENTE_ PRINCIPALE USA (0,m) COMPONENTI_HW AA 2004-2005 Giovanna Petrone 21 Scelta 3 Svantaggi Si incrementa il numero di accessi per le occorrenze delle sottoclassi. Se la generalizzazione è totale ed esclusiva, occorre aggiungere dei vincoli: una occorrenza della sopraclasse deve partecipare ad una ed una sola relazione con una delle sottoclassi. Vantaggi Conviene quando la generalizzazione non è totale, e le operazioni fanno accesso o ad occorrenze della sopraclasse, o di sottoclassi. Si risparmia memoria e ciò può aumentare il numero di dati che si recuperano con l’accesso ad un singolo buffer di disco. AA 2004-2005 Giovanna Petrone 22 11 Partizionamento di entità (e relazioni) n n n Il partizionamento d’entità (relazioni) corrisponde a separare i concetti che vengono acceduti da operazioni diverse. Si può decomporre: verticalmente selezionando gli attributi (tramite proiezione). Ha il vantaggio che generano entità semplici, con pochi attributi. orizzontalmente (selezionando le occorrenze sulla base dei valori degli attributi). Ciò può anche essere visto come l’introduzione di una nuova generalizzazione a livello logico. Ha lo svantaggio che si duplicano le relazioni per le due nuove entità. AA 2004-2005 Giovanna Petrone 23 Esempio:partizionamento verticale di entità cognome livello indirizzo stipendio impiegato Data_nascita ritenute codice livello cognome indirizzo (1,1) Dati anagrafici (1,1) Dati_impiegato Dati lavorativi stipendio ritenute Data_ nascita codice AA 2004-2005 Giovanna Petrone 24 12 Partizionamento di relazione nome cognome ruolo (1,n) (1,n) composizione Giocatore Data_ acquisto cognome ruolo (1,1) Squadra Data_ cessione (0,1) nome (1,n) Composizione attuale Giocatore città Squadra città Data_ acquisto (0,n) (1,n) Composizione precedente Data_acquisto AA 2004-2005 Data_cessione Giovanna Petrone 25 Accorpamento di entità n L’accorpamento d’entità corrisponde a raggruppare i concetti che vengono acceduti insieme dalle stesse operazioni. Ciò ad esempio permette di ridurre il numero di join tra entità. Uno svantaggio però consiste nel fatto che potrebbero essere introdotti attributi con valori nulli. Inoltre si introduce una certa ridondanza, il che è equivalente ad una operazione di de-normalizzazione. Perciò viene utilizzata dove sussistono relazioni 1:1 o 0:1 tra le entità da accorpare, e raramente se le relazioni sono 1:molti. AA 2004-2005 Giovanna Petrone 26 13 Esempio indirizzo cognome indirizzo (0,1) Persona (1,1) intestazione appartamento interno Data_ nascita CF cognome indirizzo Persona Indirizzo (0,1) Interno (0,1) Data_ nascita CF AA 2004-2005 Giovanna Petrone 27 Eliminazione di attributi composti Due possibilità: a) considerare l’attributo composto come insieme di attributi singoli Problema: si perde la nozione di collegamento tra gli attributi b)eliminare le componenti individuali considerando solo i valori aggregati Problema: il singolo attributo deve poi essere scisso dall’applicazione per individuare i valori separati AA 2004-2005 Giovanna Petrone 28 14 Esempio COGNOME PERSONA ETA` SESSO VIA INDIRIZZO CITTA` STATO (a) Schema con un attributo composto PERSONA COGNOME ETA` SESSO VIA CITTA` PERSONA COGNOME ETA` SESSO INDIRIZZO STATO (b) Attributo composto ridotto nelle sue componenti AA 2004-2005 (c) Attributo composto considerato come attributo singolo Giovanna Petrone 29 Eliminazione degli attributi multivalore dalle entità n n n Ogni attributo a molti valori è rappresentato da un'entità, in cui può essere rappresentato come attributo a singolo valore. La nuova entità contiene l’attributo a molti valori più l’identificatore dell’entità di origine. L’identificatore della nuova entità è l’insieme di tutti gli attributi. AA 2004-2005 Giovanna Petrone 30 15 Attributi multivalore di entità E1 A B (1,n) A R E1 A E1 AA 2004-2005 EAM EAM B A B Giovanna Petrone 31 Esempio CODICE_PRODOTTO PRODOTTO CODICE_MATERIALE (1,n) DESCRIZIONE PREZZO PRODOTTO PRODOTTO_MATERIALE AA 2004-2005 CODICE_PRODOTTO DESCRIZIONE PREZZO CODICE_PRODOTTO CODICE_MATERIALE Giovanna Petrone 32 16 Eliminazione degli attributi multivalore dalle relazioni Attributo a molti valori appartiene alla relazione R tra le entità E1 e E2 ⇒ nuova entità NE che include 1 o 2 attributi presi da E1 o E2 (o entrambi) in funzione del tipo di relazione: n n n n relazione 1 a 1: NE richiede 1 degli identificatori di E1 o E2 relazione 1 a molti: NE comprende l’identificatore di E2 (E2 nel lato “molti”) relazione molti a molti: NE comprende gli identificatori provenienti da E1 ed E2 AA 2004-2005 Giovanna Petrone 33 Eliminazione degli attributi multivalore dalle relazioni n n La chiave primaria di NE è costituita da: n tutti gli attributi di NE provenienti da E1 ed E2 n l’attributo multi valore Gli attributi non multivalore di R rimangono a R. AA 2004-2005 Giovanna Petrone 34 17 Attributi a molti valori di relazioni C E1 C E1 R (0,n) A B (1,n) R E2 (0,m) E2 A D D Attrib B AA 2004-2005 Giovanna Petrone B C D 35 Esempio CF_INSEGNANTE INSEGNANTE DIPARTIMENTO TELEFONO (0,m) MAX_NUM_STUD TIENE SEMESTRE (1,n) (1,n) CORSO AA 2004-2005 NUM_CORSO Giovanna Petrone 36 18 eliminazione di attributo multivalore da una relazione tramite creazione di entità separate INSEGNANTE CF_INSEGNANTE DIPARTIMENTO TELEFONO (0,m) MAX_NUM_STUD TIENE (1,n) NUM_CORSO CORSO OFFERTA_ CORSI AA 2004-2005 CF_INSEGNANTE NUM_CORSO SEMESTRE Giovanna Petrone 37 Scelta degli identificatori n n n n n Un attributo che ammette valori nulli non può essere un identificatore. La scelta tra due identificatori alternativi avviene in base alla semplicità. Occorre considerare anche la presenza di eventuali identificatori esterni. Conviene preferire gli identificatori che vengono utilizzati dal maggior numero di operazioni. In alcuni casi, può convenire creare “ad arte” un codice che serva da identificatore. Questo potrebbe essere creato automaticamente dal DBMS o sarà l’applicazione a dover gestire la creazione e l’unicità del codice. AA 2004-2005 Giovanna Petrone 38 19 Eliminazione di identificatori esterni Gli identificatori esterni sono trasformati in identificatori interni. ID E1 A E1 B E2 B A (1,1) R (1,n) E2 AA 2004-2005 Giovanna Petrone B 39 Esempio CODICE UNIVERSITÀ UNIVERSITÀ NOME CITTÀ ISCRIVE MATRICOLA_STUDENTE STUDENTE COGNOME ETÀ (a) Schema iniziale AA 2004-2005 Giovanna Petrone 40 20 Esempio CODICE UNIVERSITÀ UNIVERSITÀ NOME CITTÀ + STUDENTE CODICE UNIVERSITÀ MATRICOLA_STUDENTE COGNOME ETÀ (b) Schema finale AA 2004-2005 Giovanna Petrone 41 Eliminazione di identificatori esterni A E1 R1 E2 A E1 ID1 B E2 A B E3 A B C R2 E3 C ID2 AA 2004-2005 Giovanna Petrone 42 21 Passo B:traduzione nel modello relazionale 1) Traduzione di ogni entità in una tabella 2) Traduzione delle relazioni: n n le relazioni 1:1, 1:molti, molti:1 sono modellate aggiungendo attributi a tabelle esistenti le relazioni molti:molti richiedono sempre la creazione di una nuova tabella AA 2004-2005 Giovanna Petrone 43 Traduzione di entità Entità = Tabella Esempio: CF NOME COGNOME STIPENDIO IMPIEGATO IMPIEGATO (CF, NOME, COGNOME, STIPENDIO) AA 2004-2005 Giovanna Petrone 44 22 Riassunto n Associazione binaria molti a molti A11 E1 A12 (X,n) R AR • E1(A11,A12) • E2(A21,A22) • R(A11,A21,AR) (X,n) A21 E2 A22 AA 2004-2005 Giovanna Petrone 45 Riassunto n Associazione ternaria molti a molti E1 (X,n) (X,n) E3 R A11 • • • AR • A12 E1(A11,A12) E2(A21,A22) E3(A31,A32) R(A11,A21,A31,AR) (X,n) A31 A32 E2 A21 A22 AA 2004-2005 Giovanna Petrone 46 23 Riassunto n Associazione uno a molti con partecipazione obbligatoria E1 A11 A12 (1,1) R AR • E1(A11,A12,A21,AR) • E2(A21,A22) (X,n) E2 A21 A22 AA 2004-2005 Giovanna Petrone 47 Riassunto n Associazione uno a molti con partecipazione opzionale E1 A11 A12 (0,1) R AR (X,n) E2 A21 A22 AA 2004-2005 • E1(A11,A12,A21*,AR*) • E2(A21,A22) Oppure • E1(A11,A12) • E2(A21,A22) • R(A11,A21,AR) Giovanna Petrone 48 24 Riassunto Associazione con identificatore esterno E1 A12 A11 R AR (1,1) • E1(A11,A21,A12,AR) • E2(A21,A22) (X,Y) E2 A21 A22 AA 2004-2005 Giovanna Petrone 49 Riassunto Associazione uno a uno con partecipazione obbligatoria per entrambe le entita` E1 A11 A12 (1,1) R AR (1,1) E2 A21 • E1(A11,A12,A21,AR) • E2(A21,A22) Oppure • E1(A11,A12) • E2(A21,A22,A11,AR) A22 AA 2004-2005 Giovanna Petrone 50 25 Riassunto Associazione uno a uno con partecipazione opzionale per una sola entita` E1 A11 A12 • E1(A11,A12,A21,AR) • E2(A21,A22) (1,1) R AR (0,1) E2 A21 A22 AA 2004-2005 Giovanna Petrone 51 Riassunto Associazione uno a uno con partecipazione opzionale per entrambe le entita` E1 A11 A12 (0,1) R AR (0,1) E2 A21 A22 AA 2004-2005 • E1(A11,A12,A21*,AR*) • E2(A21,A22) Oppure • E1(A11,A12) • E2(A21,A22,A11*,AR*) Oppure • E1(A11,A12) • E2(A21,A22) • R(A11,A21,AR) Giovanna Petrone 52 26 Esercizio 1 n Si vuole realizzare una base di dati per una societa’ che eroga corsi, di cui vogliamo rappresentare i dati dei partecipanti ai corsi e dei docenti. Per i partecipanti (circa 5000), identificati da un codice, si vuole memorizzare il codice fiscale, il cognome, l’eta’, il sesso, il luogo di nascita, il nome dei loro attuali datori di lavoro, i posti dove hanno lavorato in precedenza insieme al periodo, l’indirizzo e il numero telefonico, i corsi che hanno frequentato (i corsi sono in tutto 200) e il giudizio finale. Si vuole rappresentare anche i seminari che stanno attualmente frequentando, e per ogni giorno, i luoghi e le ore dove sono tenute le varie lezioni. I corsi hanno un codice, un titolo e possono avere varie edizioni, con le date di inizio e fine, e numero dei partecipanti. Se gli studenti sono liberi professionisti, vogliamo conoscere l’area di interesse e, se lo possiedono, il titolo. Per coloro che lavorano alle dipendenze di altri, vogliamo conoscere il livello ricoperto e la posizione. Per gli insegnanti (circa 300) rappresentiamo il cognome, l’eta’ il posto dove sono nati, il nome del corso che insegnano e di quelli che hanno gia’ insegnato e che possono insegnare. Rappresentiamo anche tutti i loro recapiti telefonici. Inoltre, i docenti possono essere dipendenti interni della societa’ o collaboratori esterni. AA 2004-2005 Giovanna Petrone 53 Operazioni 1. 2. 3. 4. 5. 6. 7. 8. inserisci un nuovo partecipante: 40 volte al giorno assegna un partecipante ad una edizione di corso: 50 volte al giorno inserisci un nuovo docente e i corsi che puo’ insegnare: 2 volte al giorno assegna un docente abilitato ad una edizione di corso: 15 volte al giorno stampa le informazioni su una edizione di corso passata, con gli orari delle lezioni e numero dei partecipanti: 10 volte al giorno stampa tutti i corsi offerti, con i relativi docenti abilitati: 20 volte al giorno per ogni docente, trova tutti i partecipanti ai corsi da lui insegnati: 5 volta alla settimana effettua una statistica sulla votazione riportata dai partecipanti a una edizione di corso: 10 volte al mese (batch). AA 2004-2005 Giovanna Petrone 54 27 Tavole dei volumi n n n n n n n n n n • • • • • • • • • • Lezione: 8000 Edizione corso: 1000 Corso: 200 Docente: 300 Collaboratore: 250 Interno: 50 Partecipante: 5000 Dipendente: 4000 Professionista: 1000 Datore: 8000 AA 2004-2005 Part passata: 10000 Part corrente: 500 Composizione: 8000 Appartenenza: 1000 Collaboratore: 250 Doc passata: 900 Doc corrente: 100 Abilitazione: 500 Impiego corrente : 4000 Impiego passato: 1000 Giovanna Petrone 55 Schema concettuale: corso lezione n_partecip (1,1) composizione partecipazione_ (1,n) corrente (0,n) partecipante (0,n) edizione_corso (0,n) (0,n) (1,1) giorno aula orario data_ fine data_ inizio appartenenza votazione AA 2004-2005 partecipazione_ passata (0,n) corso Giovanna Petrone codice titolo 56 28 Schema concettuale: partecipante codice eta’ cognome CF sesso citta’_nascita partecipante (p,e) dipendente professionista posizione livello AA 2004-2005 area titolo_professionale Giovanna Petrone Schema concettuale: datore di lavoro 57 indirizzo nome telefono data_inizio occupazione_ attuale (0,n) datore_di_ lavoro (0,n) partecipante (p,e) (0,n) occupazione_ passata data_inizio data_fine (1,1) dipendente AA 2004-2005 professionista Giovanna Petrone 58 29 Schema concettuale: docente (0,1) edizione_corso (1,1) (0,1) appartenenza docenza_ corrente docenza_ passata (0,1) (0,n) (0,n) (1,n) (1,n) abilitazione corso docente (t,e) collaboratore AA 2004-2005 CF cognome tel (0,n) eta’ citta’_nascita interno Giovanna Petrone 59 Mantenere attributo derivato n_partecip? n n Tra le operazioni specificate, solo le prestazioni delle operazioni 2 e 5 vengono influenzate da n_partecip. Non conviene tenerlo perche’ in questo caso ci sono svantaggi: n n nell’occupazione aggiuntiva (4Kb) stesso numero di accessi (490) che in assenza di dato derivato AA 2004-2005 Giovanna Petrone 60 30 Calcolo accessi con n_partecip presente n Op 2 (50 volte al giorno) tipo concetto n. accessi lettura partecipante 1 lettura ed_corso 1 scrittura ed_corso 1x 2 scrittura partecip_ corrente 1x2 AA 2004-2005 Totale: 300 accessi al giorno Giovanna Petrone 61 Calcolo accessi con n_partecip presente n Op 5 (10 volte al giorno) tipo concetto lettura ed_corso lettura appartenenza lettura corso n. accessi 1 1 1 lettura composizione 8 lettura 8 AA 2004-2005 lezione Totale: 190 accessi al giorno Giovanna Petrone 62 31 Calcolo accessi con n_partecip assente n Op 2 (50 volte al giorno) tipo concetto n. accessi lettura partecipante 1 lettura ed_corso scrittura partecip_ corrente AA 2004-2005 1 Totale: 200 accessi al giorno 1x2 Giovanna Petrone 63 Calcolo accessi con n_partecip assente n Op 5 (10 volte al giorno) tipo concetto n. accessi lettura ed_corso 1 lettura appartenenza 1 lettura corso 1 lettura composizione 8 lettura 8 lezione lettura partecip_ AA 2004-2005corrente Totale: 290 accessi al giorno 10 Giovanna Petrone 64 32 Eliminazione delle gerarchie n n Conviene eliminare la gerarchia dei docenti (le operazioni non fanno distinzione e le classi figlie non hanno attributi aggiuntivi) Conviene mantenere le sottoclassi della gerarchia sui partecipanti (ci sono molti attributi aggiuntivi che diverrebbero valori null nella classe padre, anche se le operazioni 1, 2 e 8 non fanno differenza tra le occorrenze dei partecipanti): introduciamo due relazioni dati_dipendente e dati_professionista. AA 2004-2005 Giovanna Petrone 65 Partizionamento di concetti n Partizionare edizione_corso in passato e corrente? (operazione 5 considera solo le edizioni passate) n n Non conviene perche’ si dovrebbero duplicare le relazioni composizione e appartenenza; Inoltre, le operazioni 7 e 8 non fanno distinzione tra le edizioni di corso correnti e passate. AA 2004-2005 Giovanna Petrone 66 33 Accorpamento di concetti n Accorpare docenza_passata e docenza_corrente? (e analogamente partecipazione_passata e corrente?) n n n Conviene perche’ le operazioni 7 e 8 non fanno differenza tra le occorrenze passate e correnti Inoltre, non si dovrebbero spostare le occorrenze di docenza e partecipazione correnti in quelle passate una volta terminata l’edizione del corso. C’e’ pero’ lo svantaggio che c’e’ uno spreco di memoria per rappresentare l’attributo votazione anche per le partecipazioni correnti. Tuttavia, la frazione del numero totale di occorrenze di partecipazioni correnti e’ piccola rispetto a quelle passate (1/20, e si sprecano solo 2 Kb nell’ipotesi di allocare 4 bytes per ciascuna votazione). AA 2004-2005 Giovanna Petrone 67 Scelta degli identificatori principali n n Scegliamo il codice interno per identificare i partecipanti. Invece assegnamo un codice ad-hoc per identificare l’edizione corsi invece di usare la coppia (data_inizio,codice_corso) che rappresenta un identificatore troppo “pesante” (e viene usato per rappresentare anche le relazioni partecipazione e docenza). AA 2004-2005 Giovanna Petrone 68 34 Schema ER ristrutturato: corso lezione giorno aula orario (1,1) composizione partecipazione (1,n) (0,n) partecipante (0,n) edizione_corso (1,1) votazione (0,1) data_inizio codice appartenenza (0,n) corso AA 2004-2005 data_fine codice titolo Giovanna Petrone 69 Schema ER ristrutturato: partecipante cognome CF sesso codice eta’ citta’_nascita partecipante (0,1) dati_dip (1,1) dipendente (0,1) dati_prof (1,1) professionista posizione livello Giovannaarea Petronetitolo_professionale AA 2004-2005 70 35 Schema ER ristrutturato: docente telef_docente (1,1) (0,1) edizione_corso intestazione telefono (1,1) docenza appartenenza (0,n) (0,n) (0,n) (1,n) (1,n) abilitazione corso AA 2004-2005 CF cognome tel (0,n) eta’ citta’_nascita docente tipo Giovanna Petrone 71 indirizzo nome telefono Schema ER ristrutturato: datore data_inizio (0,n) occupazione_ datore_di_ lavoro attuale cognome codice CF sesso eta’ citta’_nascita (0,n) partecipante (0,1) dati_dip (1,1) AA 2004-2005 (1,1) dipendente posizione livello occupazione_ (0,n) passata (0,1) dati_prof (1,1) professionista data_fine data_inizio area titolo_professionale Giovanna Petrone 72 36 Traduzione nel modello relazionale Edizione_corso(codice, data_inizio, data_fine, corso, docente) n Lezione(ora, aula, giorno, edizione_corso) Docente (CF, cognome, eta’, citta’_nascita, tipo) Telefono(numero, docente) Corso(codice, nome) Abilitazione(corso, docente) Partecipante(codice, CF, cognome, eta’, citta’_nascita, sesso) n n n n n n Partecipazione(partecipante, edizione_corso, votazione*) Datore(nome, telefono, indirizzo) Occupazione_passata(partecipante, datore, data_inizio, data_fine) Professionista(partecipante, area, titolo*) Dipendente(partecipante, livello, posizione, datore, data_inizio) n n n n n AA 2004-2005 Giovanna Petrone 73 Schema relazionale della societa’ di formazione n n n n n n n n n n n n Edizione_corso(codice, data_inizio, data_fine, corso, docente) Lezione(ora, aula, giorno, edizione_corso) Docente (CF, cognome, eta’, citta’_nascita, tipo) Telefono(numero, docente) Corso(codice, nome) Abilitazione(corso, docente) Partecipante(codice, CF, cognome, eta’, citta’_nascita, sesso) Partecipazione(partecipante, edizione_corso, votazione*) Datore(nome, telefono, indirizzo) Occupazione_passata(partecipante, datore, data_inizio, data_fine) Professionista(partecipante, area, titolo*) Dipendente(partecipante, livello, posizione, datore, data_inizio) AA 2004-2005 Giovanna Petrone 74 37