Progettazione concettuale da schemi E-R File - e-Learning
Transcript
Progettazione concettuale da schemi E-R File - e-Learning
Progettazione Concettuale da schemi E/R Dott Marco Comerio Dott. Progettazione concettuale: approcci Basata sui requisiti 9 Il progettista deve essere in grado di enucleare, dalle interviste condotte presso l’utente, un’indicazione precisa circa i fatti da rappresentare, le misure che li descrivono e le gerarchie hi attraverso tt cuii aggregarlili utilmente. til t Il problema bl d dell collegamento tra lo schema concettuale così determinato e le sorgenti operazionali viene affrontato in un secondo tempo Basata sulle sorgenti 9 È possibile definire lo schema concettuale in funzione della struttura delle sorgenti, evitando il complesso compito di stabilire il legame con esse a posteriori. Inoltre, è possibile derivare uno schema concettuale prototipale dagli schemi operazionali i li iin modo d pressoché hé automatico t ti 2 Progettazione concettuale: come La progettazione concettuale viene effettuata a partire dalla documentazione relativa al database riconciliato: 9 Schemi E/R 9 Schemi Relazionali 9 Schemi XML 9 ................... Passi di progettazione: ° Definizione dei fatti ± Per ogni fatto: 1. Costruzione di un albero degli attributi 2 Editing 2. Editi d dell’albero ll’ lb d deglili attributi tt ib ti 3. Definizione delle dimensioni 4. Definizione delle misure 5. Creazione dello schema di fatto 3 L’esempio delle vendite (da E/R) gruppo marketing responsabile capo reparto reparto GRUPPO MARKETING (1,N) (1,N) categoria per (1,1) di (1,1) (1,N) peso di (1,N) (1,1) PRODOTTO dimensione magazzino di REGIONE (1,N) responsabile vendite dit data di (1,1) (1,1) (1,N) NEGOZIO in CITTÀ quantità q prodotto (1,N) indirizzo MAGAZZINO (1,1) (1,1) (1,N) (0,N) (1,1) (0,N) vendita SCONTRINO in (1,N) da di (1,N) CATEGORIA prezzo unitario STATO regione (0,N) dieta (0,1) stato DISTRETTO in (1,N) VENDITA (1,1) REPARTO tipo per (1,1) TIPO num. distretto num. scontrino negozio indirizzo telefono (1,1) (1,N) di (1,1) MARCA (1,N) città prodotta in marca 4 Definizione dei fatti I fatti sono concetti di interesse primario per il processo decisionale; tipicamente, corrispondono a eventi che accadono di dinamicamente i t nell mondo d aziendale. i d l Le entità o relazioni che rappresentano archivi frequentemente modificati (come VENDITA) sono buoni candidati per definire f tti quelli fatti; lli che h rappresentano t archivi hi i quasi-statici i t ti i ((come NEGOZIO e CITTÀ) no. Sullo schema E/R un fatto può corrispondere o a un’entità F o a un’associazione n-aria R tra le entità E1, E2..., En (1 1) (1,1) E1 E3 R1 (1 1) (1,1) F R2 E2 (1,1) R3 E1 R E2 reificazione E3 5 Costruzione dell’albero degli attributi L’albero degli attributi è un albero in cui: 9 ogni vertice corrisponde a un attributo - semplice o composto - dello schema sorgente; 9 la radice corrisponde all’identificatore (chiave primaria) di F; 9 per ogni vertice v, l’attributo corrispondente determina funzionalmente tutti gli attributi corrispondenti ai discendenti di v L’albero degli attributi corrispondente a F può essere costruito in modo automatico applicando una procedura che naviga ricorsivamente le dipendenze funzionali espresse, nello schema sorgente, dagli identificatori e dalle associazioni a-uno 6 Costruzione dell’albero degli attributi root=nuovoVertice(ident(F)); // ident(F) è l’identificatore di F // la radice dell’albero è etichettata con l’identificatore dell’entità scelta come fatto traduci(F, root); procedura traduci(E, v): // E è l’entità corrente dello schema sorgente, v il vertice corrente dell’albero { per ogni attributo a∈E tale che a≠ident(E) aggiungiFiglio(v, nuovoVertice(a)); // aggiunge al vertice v un figlio a per ogni entità G connessa a E da un’associazione un associazione R tale che max(E max(E,R)=1 R)=1 { per ogni attributo b∈R aggiungiFiglio(v, nuovoVertice(b)); // aggiunge al vertice v un figlio b prossimo=nuovoVertice(ident(G)); // crea un nuovo vertice con il nome dell’identificatore di G ... aggiungiFiglio(v, prossimo); // ... lo aggiunge a v come figlio ... traduci(G, prossimo); // ... e innesca la ricorsione } } 7 Costruzione dell’albero degli attributi root=nuovoVertice(prodotto+numScontrino) traduci(E=VENDITA traduci(E VENDITA, vv=prodotto+numScontrino): prodotto+numScontrino): aggiungiFiglio(prodotto+numScontrino, quantità); aggiungiFiglio(prodotto+numScontrino, prezzoUnitario); per G=SCONTRINO: aggiungiFiglio(prodotto+numScontrino, numScontrino); traduci(SCONTRINO,numScontrino); per G=PRODOTTO: aggiungiFiglio(prodotto+numScontrino, i iFi li ( d tt + S ti prodotto); d tt ) traduci(PRODOTTO,prodotto); traduci(E=SCONTRINO, v=numScontrino): aggiungiFiglio(numScontrino, data); per G=NEGOZIO: aggiungiFiglio(numScontrino, negozio); traduci(NEGOZIO,negozio); … 8 L’esempio delle vendite gruppo marketing responsabile capo reparto reparto GRUPPO MARKETING (1,N) (1,N) categoria per (1,1) di (1,1) (1,N) (1,N) peso (1,1) PRODOTTO dimensione magazzino (1,1) di REGIONE (1,1) (1,N) responsabile vendite dit data di (1,1) (1,N) (0,N) (1,1) (0,N) vendita SCONTRINO in (1,N) da di (1,N) CATEGORIA prezzo unitario di STATO regione (0,N) dieta (0,1) stato DISTRETTO in (1,N) VENDITA (1,1) REPARTO tipo per (1,1) TIPO num. distretto (1,1) (1,N) NEGOZIO in CITTÀ quantità q prodotto num. scontrino (1,N) negozio indirizzo telefono (1,1) (1,N) di indirizzo MAGAZZINO (1,1) MARCA (1,N) città prodotta in marca 9 L’esempio delle vendite resp. data vendite regione stato reparto marca dieta peso città indirizzo telefono città regione stato quantità tità num. negozio scontrino num. distretto+stato capo reparto categoria prodotto+num scontrino tipo prodotto prodotto+num.scontrino responsabile num. distretto gruppo mark. dimensione prezzo unitario 10 Limiti della procedura proposta Lo schema sorgente può contenere un ciclo di associazioni molti-a-uno. molti a uno. In questo caso, la procedura traduci entrerebbe in loop generando nell’albero un ramo infinito. La stessa entità può essere raggiunta due volte attraverso cammini differenti, generando due vertici omologhi. Le associazioni a-molti, gli attributi multipli e quelli opzionali non vengono inseriti automaticamente nell’albero. Occorrono strategie per trattare gerarchie di specializzazione e attributi tt ib ti composti. ti 11 Editing dell’albero In genere non tutti gli attributi dell’albero sono d’interesse d interesse per il data mart; quindi quindi, l’albero l albero può essere manipolato per eliminare i livelli di dettaglio non necessari 9 La L potatura t t di un vertice ti v sii effettua ff tt eliminando li i d l’i l’intero t sottoalbero con radice in v • Gli attributi eliminati non verranno inclusi nello schema di fatto, quindi qu d non o pot potranno a o esse essere e usat usati pe per agg aggregare ega e i dat dati 9 L’innesto viene utilizzato quando, sebbene un vertice esprima un’informazione non interessante, è necessario mantenere nell’albero i suoi discendenti • L’innesto del vertice v, con padre v', viene effettuato collegando tutti i figli di v direttamente a v' ed eliminando v; come risultato verrà perduto il livello di aggregazione corrispondente all’attributo v ma non i livelli corrispondenti p ai suoi discendenti 12 Editing dell’albero b e f a potatura di d d b g c b innesto di d e f a a c g c Quando un vertice opzionale viene innestato, tutti i suoi figli ereditano il trattino di opzionalità 9 Nel caso di potatura o innesto di un vertice opzionale v con padre v' è possibile aggiungere a v' un nuovo figlio b corrispondente a un attributo booleano che esprima ll’opzionalità opzionalità Potare o innestare un figlio della radice che corrisponde, sullo schema sorgente, a un attributo incluso nell’identificatore dell’entità scelta come fatto significa rendere più grossolana la granularità del fatto 9 Se il vertice innestato ha più di un figlio, si può avere un aumento 13 del numero di dimensioni nello schema di fatto L’esempio delle vendite resp. data vendite regione stato reparto marca dieta peso città indirizzo telefono città regione stato quantità num. negozio scontrino num. distretto+stato capo p reparto p categoria g prodotto+num scontrino prodotto+num.scontrino titipo prodotto d tt responsabile num. distretto gruppo mark. dimensione prezzo unitario Innesto di num.scontrino Potatura di regione, num. distretto e dimensione. 14 L’esempio delle vendite resp. vendite città reparto capo p reparto p responsabile marca dieta peso g categoria quantità tipo prodotto gruppo mark. negozio indirizzo telefono città regione stato num. distretto+stato prodotto+num.scontrino prodotto num.scontrino data prezzo unitario 15 Editing dell’albero Potare o innestare un attributo incluso nell’identificatore ll’id tifi t dell’entità d ll’ tità scelta lt come ffatto tt significa i ifi rendere più grossolana la granularità del fatto L L’innesto innesto di num.scontrino altera la granularità delle vendite: 9 prima dell’innesto si aveva una vendita distinta per ogni prodotto incluso in ciascun scontrino; 9 dopo l’innesto, tutte le vendite relative ad uno stesso prodotto e agli scontrini emessi da uno stesso negozio nella stessa data vengono aggregate in un unico evento evento. 9 Le potenziali dimensioni passano da prodotto e num.scontrino a prodotto, data e negozio. 16 Editing dell’albero Nella pratica possono rendersi necessarie ulteriori manipolazioni sull’albero degli attributi 9 Può essere necessario modificarne radicalmente la struttura sostituendo il padre di un certo nodo: ciò corrisponde ad aggiungere o eliminare una dipendenza funzionale elimina b→c a b c d b a c d aggiungi b→c 9 In I presenza di un’associazione ’ i i uno-a-uno sono consigliabili i li bili d due soluzioni: • quando il vertice v determinato dall’associazione uno-a-uno ha dei discendenti di interesse lo si può eliminare dall’albero tramite innesto; • quando v non ha discendenti di interesse lo si può rappresentare come attributo descrittivo. • in alcuni casi può convenire invertire i due nodi coinvolti descrizione codice codice descrizione descrizione 17 Definizione delle dimensioni Le dimensioni devono essere scelte nell’albero degli attributi tra i vertici figli della radice; possono corrispondere ad attributi discreti o a intervalli di valori di attributi discreti o continui La L lloro scelta lt è cruciale i l per il progetto tt poiché i hé definisce la granularità degli eventi primari Il tempo p dovrebbe sempre p essere una dimensione: 9 Se la sorgente è uno schema storico, il tempo è rappresentato esplicitamente come un attributo; se appare nell’albero degli attributi come figlio di un vertice diverso d ll radice, dalla di sii può ò effettuare ff tt un iinnesto t o eliminare li i una dipendenza funzionale al fine di farlo diventare un figlio diretto della radice e quindi una dimensione 9 In alcune sorgenti il tempo non viene rappresentato esplicitamente; in questo caso il tempo viene tipicamente aggiunto “manualmente” allo schema di fatto 18 L’esempio delle vendite resp. vendite città reparto capo p reparto p responsabile marca dieta peso g categoria quantità tipo prodotto gruppo mark. negozio indirizzo telefono città regione stato num. distretto+stato prodotto+num.scontrino prodotto num.scontrino data prezzo unitario 19 Definizione delle misure Se tra le dimensioni compaiono tutti gli attributi che costituiscono un identificatore dell’entità dell entità fatto fatto, allora le misure corrispondono ad attributi numerici che siano figli della radice dell’albero In I caso contrario t i le l misure i d devono essere d definite fi it applicando, ad attributi numerici dell’albero, funzioni di aggregazione che operano su tutte le istanze di F corrispondenti i d ti a ciascun i evento t primario i i (i (in genere sii tratta di somma/media/massimo/minimo di espressioni oppure del conteggio del numero di istanze di F)) 9 Un fatto può anche non avere misure 9 Qualora la granularità del fatto sia differente da quella dello schema sorgente, può essere utile definire più misure che aggregano lo stesso attributo tramite operatori diversi 20 L’esempio delle vendite resp. vendite città reparto capo reparto responsabile marca dieta peso categoria quantità qua à tipo p p prodotto gruppo mark. negozio indirizzo telefono città regione stato num. distretto+stato prodotto+num.scontrino data prezzo unitario Occorre definire un glossario che associ ciascuna misura a un’espressione che descrive come essa può essere calcolata a partire dagli attributi dello schema sorgente GLOSSARIO quantità venduta = SUM(VENDITA.quantità) incasso = SUM(VENDITA.quantità*VENDITA.prezzoUnitario) prezzo unitario = AVG(VENDITA.prezzoUnitario) num. clienti = COUNT(*) 21 Creazione dello schema di fatto L’albero degli attributi può ora essere tradotto in uno schema di fatto che include le dimensioni e misure definite 9 le gerarchie corrispondono ai sottoalberi dell’albero degli attributi 9 9 9 9 con radice nelle diverse dimensioni il nome del fatto corrisponde al nome dell’entità scelta come fatto È possibile aggiungere attributi dimensionali definendo opportuni intervalli per attributi numerici (per es. sulla dimensione tempo) Gli attributi che non verranno usati per l’aggregazione possono essere contrassegnati come descrittivi; tra questi compariranno in genere anche gli attributi determinati da associazioni uno-a-uno e privi di discendenti Per quanto riguarda eventuali attributi alfanumerici figli della radice ma non prescelti né come dimensioni né come misure: • se la granularità degli eventi primari coincide con quella dell’entità F, essi possono essere rappresentati come attributi descrittivi associati direttamente al fatto, di cui descriveranno ciascuna occorrenza • se invece le due granularità sono differenti differenti, essi devono necessariamente essere potati 22 L’esempio delle vendite capo p reparto p responsabile gruppo di marketing reparto categoria peso tipo prodotto anno marca dieta responsabile delle vendite distretto di vendita data trimestre mese settimana VENDITA quantità venduta incasso num. clienti prezzo unitario (AVG) negozio città regione stato indirizzo telefono 23 Creazione dello schema di fatto Eventuali attributi cross-dimensionali e archi multipli possono essere evidenziati in questa fase 9 Identificare queste tipologie di attributi a partire dallo schema sorgente è complesso, poiché richiede di navigare anche le associazioni a-molti a molti, per cui si preferisce definirli a partire dai requisiti utente per rappresentarli solo successivamente sullo schema di fatto • Un attributo cross-dimensionale corrisponde in genere a un attributo ib posto su un’associazione ’ i i molti-a-molti li l i R dello d ll schema h E/R; i suoi padri nello schema di fatto corrisponderanno allora agli identificatori delle entità coinvolte in R • Un arco multiplo p corrisponde p a un’associazione a-molti R da un’entità E a un’entità G; nello schema di fatto, esso potrà allora connettere l’identificatore di E o il fatto con un attributo di R o di G 24 Creazione dello schema di fatto incasso data quantità (0,N) (1,1) (1,1) (0,N) effettua di VENDITA PRODOTTO NEGOZIO (1,1) negozio (1,1) codVendita in di prodotto (1,N) (1,N) ((1,N) , ) STATO vende d ((1,N) , ) data CATEGORIA (0,N) in REPARTO IVA stato categoria IVA categoria costo (1,1) RICOVERO (0,N) PAZIENTE di codRicovero codPaziente (0,N) DIAGNOSI VENDITA quantità tità incasso di (1,N) reparto prodotto data (1,1) (1,1) di (1,N) CATEGORIA diagnosi negozio stato categoria reparto RICOVERO categoria catego a data costo codPaziente diagnosi 25 Creazione dello schema di fatto In questa fase devono anche essere identificate le eventuali non non-additività additività e non non-aggregabilità aggregabilità presenti nello schema, considerando tutte le accoppiate dimensione-misura Dato D t uno schema h di ffatto tt n-dimensionale, di i l per lla dimensione di e la misura mj, la domanda da porsi sarà: “Siano {val1..., valk} i valori assunti dalla misura mj nei k eventi primari corrispondenti a k differenti valori presi dal dominio della dimensione di e da un valore prefissato di ciascuna delle altre n–1 dimensioni dimensioni. Volendo caratterizzare complessivamente i k eventi con un unico valore di mj, quali operatori di aggregazione ha senso utilizzare?” 26 Creazione dello schema di fatto Per esempio, sullo schema delle vendite ci si chiederà: 9 Dato un negozio e un prodotto, se ieri sono stati venduti 10 esemplari e oggi ne vengono venduti 3, complessivamente nei due giorni sono stati venduti 13 esemplari, per cui la misura quantità risulta additiva lungo la dimensione data. In u uno o sc schema e a relativo e at o ad inventari e ta co con d dimensioni e so prodotto e data e misura livello ci si chiederà: 9 Dato un prodotto, se ieri il magazzino ne conteneva 100 p e oggi gg ne conta 95,, complessivamente p nei due esemplari giorni quanti ne conta? Ovviamente non 195, per cui livello è non-additiva lungo la dimensione data. Le aggregazioni potranno essere fatte tramite altri operatori (AVG, MIN, MAX) MAX). 27