Basi di dati Progetto Logico per il Modello Relazionale (E

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

La progettazione concettuale
Informatica II – Basi di Dati (08/09) – Parte 1
Corso di Laurea in Biotecnologie Informatica (Basi di Dati)
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Valutazione d’Istituto A.S. 2008/2009
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
IL MODELLO ENTITÀ-RELAZIONE Gli altri costruttori
IL MODELLO ENTITA’ - RELAZIONE I costruttori di base
LA PROGETTAZIONE LOGICA Seconda parte
LA PROGETTAZIONE CONCETTUALE Seconda parte
Frontespizio Economia Monetaria Anno Accademico
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
5 – Progettazione Concettuale
6 – Progettazione Logica
Lez. 3 - Gli Indici di VARIABILITA’
Relazioni Relazione: Associazione o legame logico esistente tra due o più entità Socio Prenota Campo.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
I MATEMATICI E IL MONDO DEL LAVORO
ENTITÀ - RELAZIONE MODELLO ENTITÀ E ATTRIBUTI DOMINI RELAZIONI
ELEZIONI REGIONALI 2010 PRIMI RISULTATI E SCENARI 14 aprile 2010.
Canale A. Prof.Ciapetti AA2003/04
Corso di Informatica (Basi di Dati)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Test di ipotesi X variabile casuale con funzione di densità (probabilità) f(x; q) q Q parametro incognito. Test Statistico: regola che sulla base di un.
I lavoratori italiani e la formazione UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA, IN COLLABORAZIONE CON DOXA, PER ANES (febbraio 2005)
LA PROGETTAZIONE LOGICA
LA PROGETTAZIONE DELLE BASI DI DATI
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso.
Cos’è un problema?.
Gli italiani e il marketing di relazione: promozioni, direct marketing, digital marketing UNA RICERCA QUANTITATIVA SVOLTA DA ASTRA RICERCHE PER ASSOCOMUNICAZIONE.
Lezione 2 La progettazione degli esperimenti
Partizionamento/accorpamento di concetti
Introduzione alle basi di dati
CHARGE PUMP Principio di Funzionamento
Settimana: 3-7 marzo Orariolunedimartedi Mercoledi 5 Giovedi 6 Venerdi lezione intro alla fis mod DR lezione intro alla fis mod DR.
Q UESTIONI ETICHE E BIOETICHE DELLA DIFESA DELLA VITA NELL AGIRE SANITARIO 1 Casa di Cura Villa San Giuseppe Ascoli Piceno 12 e 13 dicembre 2011.
Blue economy Blue economy Maggio Universo di riferimento Popolazione italiana Numerosità campionaria cittadini, disaggregati per sesso,
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
UNIVERSITA’ DEGLI STUDI DI GENOVA
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
ISTITUTO COMPRENSIVO “G. BATTAGLINI” MARTINA FRANCA (TA)
Progettare un database
Un trucchetto di Moltiplicazione per il calcolo mentale
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
Corso di Basi di Dati Progettazione Logica
Prima rilevazione sullo stato di attuazione della riforma degli ordinamenti nelle istituzioni scolastiche in LOMBARDIA Attuazione del D.L. 59/2003 a.s.
GLI OBIETTIVI DELLA RICERCA
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi
Esempi risolti mediante immagini (e con excel)
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
Mercato del lavoro e condizione giovanile: la crisi si acuisce
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Progettazione di una base di dati Progettazione logica (modello relazionale)
Informatica Introduzione alle basi di dati Lezione 2 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Metodologie e modelli per il progetto. 2 Introduzione alla progettazione Il problema: progettare una base di base di dati a partire dai suoi requisiti.
1 Esami Esame scritto: Tra 21 e 25 domande: 20 domande chiuse (20 punti),  5 domande aperte (10 punti) 1½ ore Esame orale/applicativo: Esercizi usando.
Progettazione concettuale Castagnozzi Savino Ciaramello Massimo Emiliano Galeazzi Federico Guerriero Lorenzo Macauda Giorgio.
Transcript della presentazione:

Basi di dati Progetto Logico per il Modello Relazionale (E Basi di dati Progetto Logico per il Modello Relazionale (E. Baralis, Politecnico di Torino)

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)

Passo A: ristrutturazione dello schema E-R E’ una fase di riorganizzazione dello schema E-R sulla base del carico applicativo previsto. Il carico applicativo consiste di: 1) Volumi dei dati (memoria d’occupazione); 2) Caratteristiche delle operazioni (piu’ rilevanti).

2) Caratteristiche delle operazioni: 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.

Indici di prestazioni Lo scopo del passo di ristrutturazione è di ottimizzare i seguenti indici di prestazione: costo di una operazione: valutato come numero di accessi ad occorrenze di entità e/o relazione visitati per rispondere a una operazione; occupazione di memoria

Esempio codice nome impiegato progetto dipartimento nome budget data_consegna data_inizio data_afferenza afferenza partecipazione stipendio età telefono (1,n) N_progetti (0,n) (0,1)

Tavola dei volumi Dipende dalla cardinalità delle entità e dalla cardinalità media di partecipazione di una occorrenza di entità ad una relazione: Concetto Tipo Volume (n. occ) Impiegato Dipartimento Progetto entità 2000 80 500 Partecipazione Afferenza relazione 6000 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

Tavola delle operazioni 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 Operazione 2 Operazione 3 interattiva batch 50 volte al giorno 100 volte al giorno 1 volta alla settimana

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

Costo: 2 operazioni di scrittura * 50 volte al giorno Tavola degli accessi Concetto Tipo N accessi Lettura/Scrittura Impiegato entità 1 S Partecipazione relazione 1 S Costo: 2 operazioni di scrittura * 50 volte al giorno

Passo A: ristrutturazione dello schema E-R E’ costituito da una sequenza di passi: 1) Analisi delle ridondanze; 2) Eliminazione delle gerarchie di generalizza-zione; 3) Partizionamento/accorpamento di entità; 4) Scelta degli identificatori.

Analisi delle ridondanze 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.

Eliminazione attributo N_progetti 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.

Eliminazione delle gerarchie di generalizzazione Vi sono alcune possibilità: 1) Collassamento delle sottoclassi nella superclasse: gli attributi delle sottoclassi sono uniti a quelli dell’entità superiore si aggiunge un attributo discriminante 2) Eliminazione della superclasse: propagazione degli attributi della superclasse in tutte sottoclassi 3) Mantenimento di tutte le entità, correlate da relazioni che rappresentano la generalizzazione.

Esempio STUDENTE STUDENTE LAUREANDO UNIVERSITARIO HA_ SOCIO_ HA_ TUTORE GRADO(a.d.,(0,1)) STUDENTE C_FISC TITOLO_TESI (0,1) NOME CORSO_DI_STUDI STUDENTE C_FISC NOME CORSO_DI_ STUDI (p,e) LAUREANDO UNIVERSITARIO (1,1) (0,1) TUTORE TITOLO_ TESI (0,1) (0,1) HA_ RELATORE SOCIO_ DI HA_ RELATORE SOCIO_ DI (1,n) (1,n) (1,n) (1,n) FACOLTA` ASSOCIAZIONE_ STUDENTESCA FACOLTA` ASSOCIAZIONE_ STUDENTESCA

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à.

Esempio IMPIEGATO PAGA_ CONTR CONTRIBUTI DIRETTORE SEGRETARIO C_FISC IMPIEGATO PAGA_ CONTR (0,1) (1,1) CONTRIBUTI NOME (0,1) DIRETTORE (t,e) SEGRETARIO INGEGNERE MANAGER (1,n) (0,m) SPECIALIZZAZIONE NUM_SOTTOPOSTI CAPACITA` USA (1,n) (0,n) WORD_PROCESSOR Rappresentazione di gerarchie di generalizzazione mediante sottoclassi

CONTRIBUTI CONTR_2 CONTR_1 CONTR_3 SEGRETARIO INGEGNERE MANAGER (0,1) CONTRIBUTI CONTR_2 (0,1) (0,1) CONTR_1 (0,1) NUM_SOTTOPOSTI (0,1) C_FISC C_FISC CONTR_3 C_FISC SEGRETARIO INGEGNERE MANAGER NOME CONOSC NOME NOME (0,1) (1,n) (0,m) DIRETT_1 SPECIALIZ (1,1) (1,n) DIRETT_3 (0,1) (1,n) USA DIRETT_2 (1,1) (1,n) (0,n) WORD_PROCESSOR

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.

Esempio PROGETTO HA MEMBRI_ PROGETTO PROGETTO_ SW PROGETTO_ HW NUM_PROG NOME_PROG PROGETTO HA (1,m) (1,n) MEMBRI_ PROGETTO BUDGET (p,o) PROGETTO_ SW PROGETTO_ HW SOTTOCONTRATTO NUM_ SCHEDE (1,n) MESI_UOMO CONTRAENTE_ PRINCIPALE USA (0,m) COMPONENTI_HW Rappresentazione di gerarchie di generalizzazione tramite relazioni

PROGETTO HA MEMBRI_ PROGETTO TIPO_SW TIPO_HW TIPO_ SOTTOCONTR NUM_PROG NOME_PROG PROGETTO (1,m) HA (1,n) MEMBRI_ PROGETTO BUDGET (0,1) (0,1) (0,1) TIPO_SW TIPO_HW TIPO_ SOTTOCONTR (1,1) (1,1) (1,1) PROGETTO_ SW PROGETTO_ HW SOTTOCONTRATTO NUM_ SCHEDE (1,n) MESI_UOMO CONTRAENTE_ PRINCIPALE USA (0,m) COMPONENTI_HW

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.

Partizionamento di entità (e relazioni) 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à.

Esempio: partizionamento verticale di entità cognome livello impiegato indirizzo stipendio Data_nascita ritenute codice Dati anagrafici Dati lavorativi Dati_impiegato (1,1) livello stipendio ritenute cognome indirizzo Data_ nascita codice

Partizionamento di relazione Giocatore Squadra nome cognome composizione (1,n) (1,n) città ruolo Data_ acquisto Data_ cessione (0,1) Giocatore Squadra nome cognome Composizione attuale (1,1) (1,n) città ruolo Data_ acquisto Composizione precedente (1,n) (0,n) Data_acquisto Data_cessione

Accorpamento di entità 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.

Esempio Persona appartamento Persona intestazione indirizzo cognome (0,1) (1,1) interno indirizzo Data_ nascita CF Persona cognome Indirizzo (0,1) indirizzo Interno (0,1) Data_ nascita CF

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

(a) Schema con un attributo composto Esempio PERSONA COGNOME ETA` SESSO VIA INDIRIZZO CITTA` STATO (a) Schema con un attributo composto PERSONA COGNOME PERSONA COGNOME ETA` ETA` SESSO SESSO VIA INDIRIZZO CITTA` STATO (b) Attributo composto ridotto nelle sue componenti (c) Attributo composto considerato come attributo singolo

Eliminazione degli attributi multivalore dalle entità 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.

Attributi multivalore di entità EAM B B (1,n) A E1 EAM A B

Esempio PRODOTTO PRODOTTO PRODOTTO_MATERIALE CODICE_PRODOTTO CODICE_MATERIALE (1,n) DESCRIZIONE PREZZO PRODOTTO CODICE_PRODOTTO DESCRIZIONE PREZZO PRODOTTO_MATERIALE CODICE_PRODOTTO CODICE_MATERIALE

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: 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

Eliminazione degli attributi multivalore dalle relazioni La chiave primaria di NE è costituita da: tutti gli attributi di NE provenienti da E1 ed E2 l’attributo multi valore Gli attributi non multivalore di R rimangono a R.

Attributi a molti valori di relazioni C E1 C R A (0,n) R A B (1,n) E2 D (0,m) E2 D Attrib B B C D

Esempio INSEGNANTE TIENE CORSO CF_INSEGNANTE DIPARTIMENTO TELEFONO MAX_NUM_STUD SEMESTRE (1,n) (1,n) CORSO NUM_CORSO

INSEGNANTE TIENE CORSO OFFERTA_ CORSI eliminazione di attributo multivalore da una relazione tramite creazione di entità separate INSEGNANTE CF_INSEGNANTE DIPARTIMENTO TELEFONO (0,m) TIENE MAX_NUM_STUD (1,n) CORSO NUM_CORSO OFFERTA_ CORSI CF_INSEGNANTE NUM_CORSO SEMESTRE

Scelta degli identificatori 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.

Eliminazione di identificatori esterni Gli identificatori esterni sono trasformati in identificatori interni. ID B E1 E1 A A (1,1) R (1,n) B E2 B E2

Esempio (a) Schema iniziale UNIVERSITÀ STUDENTE CODICE UNIVERSITÀ NOME CITTÀ ISCRIVE STUDENTE MATRICOLA_STUDENTE COGNOME ETÀ (a) Schema iniziale

Esempio + (b) Schema finale UNIVERSITÀ STUDENTE CODICE UNIVERSITÀ NOME CITTÀ + STUDENTE CODICE UNIVERSITÀ MATRICOLA_STUDENTE COGNOME ETÀ (b) Schema finale

Eliminazione di identificatori esterni B B R2 A E3 B E3 C C ID2

Passo B: traduzione nel modello relazionale 1) Traduzione di ogni entità in una tabella 2) Traduzione delle relazioni: 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

Entità = Tabella Traduzione di entità Esempio: IMPIEGATO CF NOME COGNOME STIPENDIO IMPIEGATO (CF, NOME, COGNOME, STIPENDIO)

Associazione binaria molti a molti Riassunto Associazione binaria molti a molti A11 E1 E1(A11,A12) E2(A21,A22) R(A11,A21,AR) A12 R AR (X,n) (X,n) A21 E2 A22

Associazione ternaria molti a molti Riassunto Associazione ternaria molti a molti A11 E1 E1(A11,A12) E2(A21,A22) E3(A31,A32) R(A11,A21,A31,AR) A12 R AR (X,n) (X,n) E3 (X,n) A21 A31 A32 E2 A22

Associazione uno a molti con partecipazione obbligatoria Riassunto Associazione uno a molti con partecipazione obbligatoria A11 E1 A12 E1(A11,A12,A21,AR) E2(A21,A22) R AR (1,1) (X,n) A21 E2 A22

Associazione uno a molti con partecipazione opzionale Riassunto Associazione uno a molti con partecipazione opzionale A11 E1(A11,A12,A21*,AR*) E2(A21,A22) Oppure E1(A11,A12) R(A11,A21,AR) E1 A12 R AR (0,1) (X,n) A21 E2 A22

Associazione con identificatore esterno Riassunto Associazione con identificatore esterno A12 E1 A11 E1(A11,A21,A12,AR) E2(A21,A22) (1,1) R AR (X,Y) A21 E2 A22

Riassunto Associazione uno a uno con partecipazione obbligatoria per entrambe le entita` A11 E1(A11,A12,A21,AR) E2(A21,A22) Oppure E1(A11,A12) E2(A21,A22,A11,AR) E1 A12 R AR (1,1) (1,1) A21 E2 A22

Riassunto Associazione uno a uno con partecipazione opzionale per una sola entita` A11 E1 A12 E1(A11,A12,A21,AR) E2(A21,A22) R AR (1,1) (0,1) A21 E2 A22

Riassunto Associazione uno a uno con partecipazione opzionale per entrambe le entita` A11 E1(A11,A12,A21*,AR*) E2(A21,A22) Oppure E1(A11,A12) E2(A21,A22,A11*,AR*) R(A11,A21,AR) E1 A12 R AR (0,1) (0,1) A21 E2 A22

Esercizio 1 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.

Operazioni 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).

Tavole dei volumi Lezione: 8000 Edizione corso: 1000 Corso: 200 Docente: 300 Collaboratore: 250 Interno: 50 Partecipante: 5000 Dipendente: 4000 Professionista: 1000 Datore: 8000 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

Schema concettuale: corso giorno lezione aula orario n_partecip (1,1) composizione partecipazione_ corrente (1,n) data_ fine partecipante (0,n) (0,n) edizione_corso data_ inizio (1,1) (0,n) (0,n) appartenenza partecipazione_ passata (0,n) votazione codice corso titolo

Schema concettuale: partecipante cognome codice CF sesso eta’ citta’_nascita partecipante (p,e) dipendente professionista posizione livello area titolo_professionale

Schema concettuale: datore di lavoro indirizzo nome telefono data_inizio occupazione_ attuale datore_di_lavoro (0,n) (0,n) partecipante (0,n) occupazione_ passata (p,e) data_inizio data_fine (1,1) dipendente professionista

Schema concettuale: docente edizione_corso (0,1) (1,1) (0,1) docenza_ corrente docenza_ passata appartenenza (0,1) (0,n) (0,n) CF cognome corso (1,n) (1,n) docente tel (0,n) abilitazione eta’ citta’_nascita (t,e) collaboratore interno

Mantenere attributo derivato n_partecip? 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: nell’occupazione aggiuntiva (4Kb) stesso numero di accessi (490) che in assenza di dato derivato

Calcolo accessi con n_partecip presente Op 2 (50 volte al giorno) tipo concetto n. accessi lettura partecipante 1 Totale: 300 accessi al giorno lettura ed_corso 1 scrittura ed_corso 1x 2 scrittura partecip_ corrente 1 x 2

Calcolo accessi con n_partecip presente Op 5 (10 volte al giorno) tipo concetto n. accessi lettura ed_corso 1 Totale: 190 accessi al giorno lettura appartenenza 1 lettura corso 1 lettura composizione 8 lettura lezione 8

Calcolo accessi con n_partecip assente Op 2 (50 volte al giorno) tipo concetto n. accessi lettura partecipante 1 Totale: 200 accessi al giorno lettura ed_corso 1 scrittura partecip_ corrente 1 x 2

Calcolo accessi con n_partecip assente Op 5 (10 volte al giorno) tipo concetto n. accessi lettura ed_corso 1 Totale: 290 accessi al giorno lettura appartenenza 1 lettura corso 1 lettura composizione 8 lettura lezione 8 lettura partecip_ corrente 10

Eliminazione delle gerarchie 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.

Partizionamento di concetti Partizionare edizione_corso in passato e corrente? (operazione 5 considera solo le edizioni passate) 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.

Accorpamento di concetti Accorpare docenza_passata e docenza_corrente? (e analogamente partecipazione_passata e corrente?) 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).

Scelta degli identificatori principali 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).

Schema ER ristrutturato: corso giorno lezione aula orario (1,1) composizione partecipazione data_fine (1,n) partecipante (0,n) (0,n) edizione_corso data_inizio (1,1) codice votazione (0,1) appartenenza (0,n) codice corso titolo

Schema ER ristrutturato: partecipante cognome codice CF sesso eta’ citta’_nascita partecipante (0,1) (0,1) dati_dip dati_prof (1,1) (1,1) dipendente professionista posizione livello area titolo_professionale

Schema ER ristrutturato: docente telef_docente (1,1) edizione_corso (0,1) intestazione telefono (1,1) docenza appartenenza (0,n) (0,n) (0,n) CF cognome (1,n) docente corso (1,n) tel (0,n) abilitazione eta’ citta’_nascita tipo

Schema ER ristrutturato: datore datore_di_lavoro nome indirizzo telefono data_inizio (0,n) occupazione_ attuale cognome codice CF sesso eta’ citta’_nascita (0,n) partecipante occupazione_ passata (0,n) (0,1) (0,1) dati_dip dati_prof data_fine data_inizio (1,1) (1,1) (1,1) dipendente professionista posizione livello area titolo_professionale

Traduzione nel modello relazionale 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)

Schema relazionale della societa’ di formazione 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)