Sistemi Informativi Avanzati Anno Accademico 2012/2013 Prof. Domenico Beneventano Progettazione di un Data Warehouse Dai Capitoli 2,3 e 4 del libro Data Warehouse - teoria e pratica della Progettazione Autori: Matteo Golfarelli, Stefano Rizzi; Editore: McGraw-Hill Contenuto ! Progettazione di un Data Warehouse Nella prima parte verrà delineato il processo di progettazione di un Data Warehouse, evidenziando gli obiettivi del corso ! Progetto di un DW da un DB relazionale Nella seconda parte verranno evidenziati alcuni passi preliminari nella progettazione di un Data Warehouse a partire da un database relazionale ! Documentazione di schemi E/R ! Reverse engineering di schemi relazionali Approccio top-down ! Analizza i bisogni globali dell'intera azienda e pianifica lo sviluppo del DW per poi progettarlo nella sua interezza " Promette ottimi risultati poiché si basa su una visione globale dell'obiettivo e garantisce in linea di principio di produrre un DW consistente e ben integrato # Il preventivo di costi onerosi a fronte di lunghi tempi di realizzazione scoraggia la direzione dall'intraprendere il progetto # Affrontare contemporaneamente l'analisi e la riconciliazione di tutte le sorgenti di interesse è estremamente complesso # Riuscire a prevedere a priori nel dettaglio le esigenze delle diverse aree aziendali impegnate è pressoché impossibile, e il processo di analisi rischia di subire una paralisi # Il fatto di non prevedere la consegna a breve termine di un prototipo non permette agli utenti di verificare l'utilità del progetto e ne fa scemare l'interesse e la fiducia 3 Approccio bottom-up ! Il DW viene costruito in modo incrementale, assemblando iterativamente più data mart, ciascuno dei quali incentrato su un insieme di fatti collegati a uno specifico settore aziendale e di interesse per una certa categoria di utenti " Determina risultati concreti in tempi brevi " Non richiede elevati investimenti finanziari " Permette di studiare solo le problematiche relative al data mart in oggetto " Fornisce alla dirigenza aziendale un riscontro immediato sull'effettiva utilità del sistema in via di realizzazione " Mantiene costantemente elevata l'attenzione sul progetto # Determina una visione parziale del dominio di interesse 4 Data Mart (DM) DATA MART: un sottoinsieme o un'aggregazione dei dati presenti nel DW primario, contenente l'insieme delle informazioni rilevanti per una particolare area del business, una particolare divisione dell'azienda, una particolare categoria di soggetti. ! Il primo data mart da prototipare... DM4 DM2 $ deve essere quello che gioca il ruolo più strategico per l'azienda $ deve ricoprire un ruolo centrale e di riferimento per l'intero DW $ si deve appoggiare su fonti dati già disponibili e consistenti DM1 DM3 DM5 Source 3 Source 1 Source 2 5 La progettazione del data mart amministratore db" Analisi e riconcilia-! zione delle sorgenti" Analisi dei" requisiti" Progettazione " concettuale" progettista" utente finale" Raffinamento del" carico di lavoro" Progettazione" logica" Progettazione" dell'alimentazione" Progettazione" fisica" 6 La progettazione del data mart requisiti utente" schema riconciliato" PROGETTAZIONE" CONCETTUALE" schemi" delle" sorgenti operazionali" carico di lavoro" volume dati" modello logico" schema di fatto" RICONCILIAZIONE" PROGETTAZIONE" LOGICA" schema riconciliato" carico di lavoro" volume dati" DBMS" schema logico" PROGETTAZIONE" FISICA" PROGETTAZIONE" DELL'ALIMENTAZIONE" schema fisico" schema dell'alimentazione" 7 Analisi e riconciliazione delle sorgenti operazionali ! In presenza di più sorgenti operazionali, questa fase ricade in un problema più generale di Data Integration. Sorgente I" Sorgente II" Schema logico (locale)" Schema logico (locale)" Ricognizione e normalizzazione! Ricognizione e normalizzazione! Schema concettuale (locale) trasformato" Schema concettuale (locale) trasformato" % Schema concettuale (globale) riconciliato" In queste slide il problema viene Meta-dati" illustrato intuitivamente tramite un esempio. Integrazione! degli schemi! Schema concettuale" (globale) riconciliato" Definizione corrispondenza! con le sorgenti! Schema logico" (globale) riconciliato" e corrispondenza" 8 Analisi e riconciliazione delle sorgenti operazionali Sorgente I" PERSONA(NOMECOGNOME, TELEFONO1, TELEFONO2, MAIL) Sorgente II" INDIVIDUO(NOME, COGNOME, TELEFONO, Schema logico HOMEPAGE) Schema logico (locale)" (locale)" Ricognizione e normalizzazione! TELEFONO2(0,1) TELEFONO1 Ricognizione e normalizzazione! NOMECOGNOME PERSONA Schema concettuale (globale) riconciliato" MAIL Integrazione! degli schemi! Schema concettuale" (globale) riconciliato" TELEFONO) COGNOME NOME TELEFONO NOMECOGNOME Schema concettuale (locale) trasformato" Schema concettuale (locale) trasformato" Definizione corrispondenza! con le sorgenti! Meta-dati" PERSONA WEB INDIVIDUO Schema logico" (globale) riconciliato" e corrispondenza" HOMEPAGE PERSONA(NOMECOGNOME,WEB, TELEFONO) 9 CORRISPONDENZE (MAPPING) SCHEMA LOGICO RICONCILIATO SCHEMA LOGICO SORGENTE 1 PERSONA SCHEMA LOGICO SORGENTE 2 INDIVIDUO NOMECOGNOME NOMECOGNOME NOME+ COGNOME TELEFONO TELEFONO1 TELEFONO WEB MAIL HOMEPAGE Progettazione del livello riconciliato Schemi sorgenti operazionali" Campioni dei dati" Analisi e riconciliazione" Schema riconciliato," Mapping sorgenti operazionali" Progettazione del cleaning! Progettazione della trasformazione! Procedure per strumenti ETL" Schema riconciliato," Mapping sorgenti operazionali" Strumenti ETL" Meta-dati" $ La fase di integrazione è incentrata sulla componente intensionale delle sorgenti operazionali, ossia riguarda la consistenza degli schemi che le descrivono $ Pulizia e trasformazione dei dati operano a livello estensionale, ossia coinvolgono direttamente i dati veri e propri 11 Ricognizione e normalizzazione ! Il progettista, confrontandosi con gli esperti del dominio applicativo, acquisisce un'approfondita conoscenza delle sorgenti operazionali attraverso: $ Ricognizione : esame approfondito degli schemi locali mirato alla piena comprensione del dominio applicativo; $ Normalizzazione: l'obiettivo è correggere gli schemi locali per modellare in modo più accurato il dominio applicativo Ricognizione e normalizzazione devono essere svolte anche qualora sia presente una sola sorgente dati; qualora esistano più sorgenti, l'operazione dovrà essere ripetuta per ogni singolo schema ! Il punto di partenza, l'input del processo è costituito da: ! 1. Schema logico e istanza della sorgente 2. Eventuale schema concettuale equivalente allo schema logico 3. Eventuale documentazione della sorgente operazionale 12 Analisi e Riconciliazione: obiettivi ! ! Fase importante, costituisce un input per tutta la progettazione E' un problema più ampio di Data Integration in quanto le sorgenti operazionali sono molteplici % Parte teorica/esercizi scritti, analisi e riconciliazione si considerano già fatte: il punto di partenza è uno schema E/R completo e il relativo schema logico relazionale % Parte pratica/tesina, l’analisi e riconciliazione delle sorgenti deve essere condotta dallo studente % Data Profiling : analisi delle sorgenti operazionali per scoprire/rilevare proprietà e relazioni tra i dati e ottenerne una rappresentazione concettuale (schema E/R) Data Profiling: un esempio ! ! Consideriamo una tabella PRODOTTO contenuta in un DB relazionale oppure in un foglio Excel o in un file csv. Riportiamo in ogni caso la tabella in un DB relazionale: quindi consideriamo la relazione PRODOTTO(CodProd,NomeProd,DescrizioneProd, DescrizioneCategoria,NomeCategoria, CodiceCategoria) CodProd è stata supposta chiave in quanto codice progressivo. % % Nelle slide che seguono viene data una intuizione di come analizzare lo schema e l'istanza del DB per individuare vincoli di integrità non dichiarati ma impliciti nei dati. L’analisi viene condotta tramite semplici query SQL (si sfrutta quindi il fatto che la relazione è stata riportata in un RDB) 14 Data Profiling: un esempio & Analizzando alcune istanze si individuano proprietà ragionevoli sulla base dei nomi degli attributi. Queste proprietà sono espresse come vincoli di integrità (chiavi, foreign key, dipendenze funzionali) sulle relazioni A. Chiavi: NomeProd è chiave alternativa? SELECT NomeProd FROM PRODOTTO WHERE NomeProd IS NULL B. SELECT NomeProd FROM PRODOTTO GROUP BY NomeProd HAVING count(*)> 1 Dipendenze funzionali: si analizzano le seguenti FD 1) CodiceCategoria ' NomeCategoria 2) CodiceCategoria ' DescrizioneCategoria 3) CodProdotto ' CodiceCategoria 4) CodiceCategoria ' CodProdotto 1) SELECT CodiceCategoria FROM PRODOTTO GROUP BY CodiceCategoria HAVING count(DISTINCT NomeCategoria )> 1 15 Data Profiling: un esempio ! Supponendo valide le prime tre DF si ottiene il seguente schema logico: CATEGORIA(Codice,Nome,Descrizione) AK: Nome PRODOTTO(Codice,NomeProd,Descriz,CodiceCategoria) ! Si analizzano le relazioni tra tabelle individuando le foreign key; nell’esempio CodiceCategoria è una foreign key riferita al Codice tre CATEGORIA ? Due possibilità per verificarlo 1. Si dichiara e verifica il vincolo nello schema relazionale 2. Si effettua un controllo preliminare in SQL per individuare le tuple (oppure il loro numero) di PRODOTTO che non soddisfano la foreign key: SELECT * – oppure count(*) FROM PRODOTTO WHERE CodiceCategoria IS NOT NULL AND CodiceCategoria NOT IN (SELECT CODICE FROM PRODOTTO) 16 Data Profiling: un esempio ! Supponendo valida la foreign key si ottiene il seguente schema logico riconciliato e normalizzato: CATEGORIA(Codice,Nome,Descrizione) AK: Nome PRODOTTO(Codice,NomeProd,Descriz, CodiceCategoria:CATEGORIA) ! In un'architettura a tre livelli, tale schema logico costituisce lo schema riconciliato e riviene implementato in un nuovo RDB che verrà alimentato con i dati del RDB iniziale. ! E' semplice ricavare lo schema E/R che può essere completato con altri vincoli, sempre verificati sull'istanza (es. una categoria ha almeno un prodotto) % Il procedimento generale per ricavare lo schema E/R è in Reverse Engineering, alla fine di queste slide. " PRODOTTO" descrizione" nome" codice" (1,1)" appartiene a" (1,n)" " CATEGORIA" descrizione" nome" codice" 17 Analisi e Riconciliazione: Riepilogo ! Parte teorica/esercizi : fase già svolta, si parte da E/R+relazionale TIPO PRODOTTO prodotto quantità (0,N) in (1,1) prezzo unitario VENDITA (1,1) data in (1,N) SCONTRINO num. scontrino PRODOTTO(PRODOTTO,TIPO) SCONTRINO(NUMSCONTRINO,DATA) VENDITA(PRODOTTO:PRODOTTO,NUMSCONTRINO:SCONTRINO QUANTITA,PREZZOUNITARIO ! Parte pratica/tesina: per considerare un caso reale, non ha senso partire da un DBR con già lo schema E/R completo: ! Fase di analisi e riconciliazione : esempi e strumenti in laboratorio. Analisi dei requisiti La fase di analisi dei requisiti ha l'obiettivo di raccogliere le esigenze di utilizzo del data mart espresse dai suoi utenti finali ! Essa ha un'importanza strategica poiché influenza le decisioni da prendere riguardo: $ lo schema concettuale dei dati $ il progetto dell'alimentazione $ le specifiche delle applicazioni per l'analisi dei dati $ l'architettura del sistema $ il piano di avviamento e formazione $ le linee guida per la manutenzione e l'evoluzione del sistema. ! 19 Fonti ! La fonte principale da cui attingere i requisiti sono i futuri utenti del data mart (business users) $ La differenza nel linguaggio usato da progettisti e utenti, e la percezione spesso distorta che questi ultimi hanno del processo di warehousing, rendono il dialogo difficile e a volte infruttuoso ! Per gli aspetti più tecnici, saranno gli amministratori del sistema informativo e/o i responsabili del CED a fungere da riferimento per il progettista $ In questo caso, i requisiti che dovranno essere catturati riguardano principalmente vincoli di varia natura imposti sul sistema di data warehousing 20 I fatti ! I fatti sono i concetti su cui gli utenti finali del data mart baseranno il processo decisionale; ogni fatto descrive una categoria di eventi che si verificano in azienda $ Fissare le dimensioni di un fatto è importante poiché significa determinarne la granularità, ovvero il più fine livello di dettaglio a cui i dati saranno rappresentati. La scelta della granularità di un fatto nasce da un delicato compromesso tra due esigenze contrapposte: quella di raggiungere un'elevata flessibilità d'utilizzo e quella di conseguire buone prestazioni $ Per ogni fatto occorre definire l'intervallo di storicizzazione, ovvero l'arco temporale che gli eventi memorizzati dovranno coprire" 21 I fatti commerciale/ manufatturiero finanziario sanitario trasporti telecomunicazioni turismo gestionale Data mart approvvigionamenti produzione gestione domanda marketing bancario investimenti Fatti acquisti, inventario di magazzino, distribuzione confezionamento, inventario, consegna, manifattura vendite, fatturazione, ordini, spedizioni, reclami promozioni, fidelizzazione, campagne pubblicitarie conti correnti, bonifici, prestiti ipotecari, mutui acquisto titoli, transazioni di borsa servizi scheda di ricovero pronto soccorso medicina di base merci passeggeri manutenzione carte di credito, domiciliazioni bollette ricoveri, dimissioni, interventi chirurgici, diagnosi accessi, esami, dimissioni scelte, revoche, prescrizioni domanda, offerta, trasporti domanda, offerta, trasporti interventi traffico CRM gestione domanda CRM logistica risorse umane traffico in rete, chiamate fidelizzazione, reclami, servizi biglietteria, noleggi auto, soggiorni frequent-flyers, reclami trasporti, scorte, movimentazione assunzioni, dimissioni, promozioni, incentivi budgeting infrastrutture budget commerciale, budget di marketing acquisti, opere 22 ESEMPIO : flessibilità vs prestazioni ! Schema E/R delle vendite: TIPO prezzo unitario quantità PRODOTTO (0,N) in (1,1) VENDITA (1,1) data in (1,N) prodotto SCONTRINO num. scontrino 1. Dimensioni = { prodotto, num.scontrino } : massima granularità " Flessibilità: analisi del numero clienti rispetto al tipo # Prestazioni: il Data Mart ha volume paragonabile con il DBO 2. Dimensioni = { prodotto, data } : minore granularità " Prestazioni: il Data Mart ha volume ridotto rispetto al DBO # Flessibilità: analisi del numero clienti rispetto al tipo non più fattibili 23 ESEMPIO : vendite (DB Operazionale) ! Scontrini: Scontr12, del 02/02/02 Scontr13, del 02/02/02 ALIM_1, qty 10, prezzo 25 ALIM_2, qty 24, prezzo 13 ALIM_2, qty 20, prezzo 12 ! ! ! DB operazionale: PRODOTTO SCONTRINO PRODOTTO TIPO NUMERO DATA ALIM_1 Alimentare Scontr12 02/02/02 ALIM_2 Alimentare Scontr13 02/02/02 VENDITA PRODOTTO N_SCONTRINO QUANTITA PREZZO_UNITARIO ALIM_1 Scontr12 12 25 ALIM_2 Scontr12 13 12 ALIM_2 Scontr13 24 13 24 ESEMPIO : vendite (DATA MART) ! Dimensioni = { prodotto, num.scontrino } ( granularità transazionale (massima granularità) un evento primario nel Data Mart corrisponde ad una sola istanza del fatto nel DB Operazionale FATTO VENDITA (Misure = { quantità, numero_clienti }) ROLLUP L'operatore di aggregazione per NUMERO_CLIENTI è COUNT DISTINCT di N_SCONTRINO PRODOTTO N_SCONTRINO QUANTITA NUMERO_CLIENTI ALIM_1 Scontr12 12 1 ALIM_2 Scontr12 13 1 ALIM_2 Scontr13 24 1 TIPO N_SCONTRINO Alimentare Scontr12 25 1 Alimentare Scontr13 24 1 QUANTITA NUMERO_CLIENTI TIPO QUANTITA NUMERO_CLIENTI Alimentare 59 2 L'operatore di aggregazione per QUANTITA è SUM 25 ESEMPIO : vendite (DATA MART) ! Dimensioni = { prodotto, data } ( granularità temporale un evento primario nel Data Mart corrisponde a più istanze del fatto nel DB Operazionale: le misure del fatto devono essere calcolate tramite funzioni di aggregazione sulle istanze del DB operazionale quantità = SUM(VENDITA.QUANTITA) numero_clienti =COUNT(DISTINCT VENDITA.NSCONTRINO) FATTO VENDITA (Misure = { quantità, numero_clienti }) PRODOTTO DATA QUANTITA NUMERO_CLIENTI ALIM_1 02/02/02 25 1 ALIM_2 02/02/02 24 2 TIPO DATA QUANTITA NUMERO_CLIENTI Alimentare 02/02/02 59 ??? ROLLUP Non è più possibile valutare il NUMERO_CLIENTI rispetto al TIPO! 26 Progettazione concettuale: un esempio TIPO PRODOTTO quantità (0,N) in (1,1) prezzo unitario VENDITA data quantità tipo (1,1) in (1,N) data SCONTRINO prodotto prodotto num. scontrino ! Dimensioni = { Prodotto, NumSContrino} ! Schema di Fatto transazionale: PRODOTTO TIPO VENDITA QUANTITA NUM_VENDITE NUM_CLIENTI prezzo-unitario prodotto + num.scontrino num.scontrino ! Dimensioni = { Prodotto, Data} ! Schema di Fatto temporale : NSC PRODOTTO VENDITA QUANTITA DATA DATA NUM_VENDITE TIPO NUM_CLIENTI 27 Un Esempio più completo ! Esempio delle vendite con scontrino (nella tabella, per semplicità, il tipo è sottinteso dal nome del prodotto) VENDITA - DB OPERAZIONALE TIPO PRODOTTO ! (1,N) PREZZO VENDITA DATA (1,N) SCONTRINO Misure 1. NUMERO_VENDITE = COUNT(*) 2. PREZZO_MEDIO = AVG (PREZZO) 3. NUMERO_CLIENTI = COUNT(DISTINCT SCONTRINO) il numero clienti è valutato contando gli scontrini 4. NUMERO_PRODOTTI = COUNT(DISTINCT PRODOTTO) per valutare quanti differenti prodotti vengono venduti 28 Esempio: Analisi dei dati - aggregazione ! Le dimensioni di analisi sono MESE e TIPO ! Il report completo da ottenere è il seguente: VENDITA - DB OPERAZIONALE REPORT : MESE-TIPO, tutte le misure, con i totali Legenda 29 Esempio: il report in SQL-OLAP ! Il report si può ottenere con i vari strumenti OLAP (cubo multidimensionale, tabelle pivot, SQL-OLAP !) DB OPERAZIONALE ! In SQL-OLAP: 30 Esempio: Operatore COUNT(*) ALIMENTAZIONE DATA MART NUMERO_VENDITE = COUNT(*) FACT_TABLE (DATA MART) ANALISI DEI DATI (AGGREGAZIONE) % NUMERO_VENDITE = SUM(NUMERO_VENDITE) Per l operatore COUNT(*) è corretto calcolare il valore aggregato a partire dai valori presenti nel Data Mart ! 31 Esempio: Prezzo Medio tramite AVG ALIMENTAZIONE DATA MART PREZZO_MEDIO= AVG(PREZZO) FACT_TABLE (DATA MART) ANALISI DEI DATI (AGGREGAZIONE) NO! (25+17.5)/2 = 21.25 % PREZZO_MEDIO= AVG(PREZZO_MEDIO) NO! (10+25+17.5)/3 = 16.25 Per l operatore AVG non è corretto calcolare il valore aggregato a partire dai valori presenti nel Data Mart! 32 Esempio: Prezzo Medio calcolato NUMERO_VENDITE = COUNT(*) PREZZO_SOMMA = SUM(PREZZO) ALIMENTAZIONE DATA MART FACT_TABLE (DATA MART) ANALISI DEI DATI (AGGREGAZIONE) PREZZO_MEDIO = OK! OK! (20+25+35)/(2+1+2) = 16.0 (25+35)/(1+2) = 20.0 % PREZZO_SOMMA ---------------------NUMERO_VENDITE PREZZO_MEDIO deve essere una misura calcolata da altre misure componenti 33 Esempio: Operatore COUNT(DISTINCT ) ALIMENTAZIONE DATA MART NUM_CLIENTI= COUNT(DISTINCT SCONTRINO) FACT_TABLE (DATA MART) ANALISI DEI DATI (AGGREGAZIONE) NUMERO_CLIENTI= SUM(NUMERO_CLIENTI) NO ! 1+1=2 OK ! 1+2 = 3 % NO ! 1+1+2=4 Per l operatore COUNT(DISTINCT ) non è sempre corretto calcolare il valore aggregato dai valori nel Data Mart : NUMERO_CLIENTI è non aggregabile rispetto a TIPO! 34 Esempio: Operatore COUNT(DISTINCT ) ALIMENTAZIONE DATA MART NUMERO_PRODOTTI= COUNT(DISTINCT PRODOTTO) FACT_TABLE (DATA MART) ANALISI DEI DATI (AGGREGAZIONE) NUMERO_PRODOTTI= SUM(NUMERO_PRODOTTI) OK! 2+1=3 NO! 1+2 = 3 % NO ! 2+1+2=5 NUMERO_PRODOTTI è non aggregabile rispetto a MESE: non è possibile calcolare i valori per TOTALE_MESE 35 Analisi dei Requisiti: obiettivi del corso ! Fase importante, costituisce un altro input per la progettazione % Parte teorica/esercizi scritti, i requisiti costituiscono un input del problema e verranno espressi indicando 1. 2. 3. % Il fatto da progettare (esempio: fatto VENDITA) con le relative dimensioni del fatto (esempio: {DATA,PRODOTTO}) Le misure del fatto (esempio: {QUANTITA,PREZZO, NUMERO_CLIENTI}) Le analisi da effettuare (query in SQL-OLAP) Parte pratica/ tesina, l’analisi dei requisiti deve essere condotta dallo studente individuando 1. 2. 3. I fatti da progettare (normalmente due fatti) Dimensioni e Misure Analisi da effettuare (con strumenti OLAP) Esempio di requisito in un esercizio di progettazione ! Dato il DBO con schema relazionale (vedi pagina 46) effettuare la progettazione dello schema di fatto OPERAZIONE con dimensioni : TIPO,BANCA,CLIENTE,DATA (TIPO ha due valori : 'P' per i prelievi e 'V' per i versamenti) e misure : IMPORTOMEDIO: è l'importo medio dell'operazione NUMEROTOTALE: è il numero totale di operazioni % Lo schema del DBO può contenere anche semplici dipendenze funzionali (FD): CITTA(CITTA,REGIONE,STATO) FD: REGIONE ' STATO OPERAZIONE(… DATA, MESE, ANNO,IMPORTO) FD: DATA ' MESE FD: MESE ' ANNO 37 Risultato della progettazione concettuale ! Schema di fatto con granularità temporale CITTA REGIONE BANCA STATO OPERAZIONE DATA CLIENTE NUMEROTOTALE (C) IMPORTOMEDIO (AVG) MESE ANNO TIPO 38 Progetto di un DW da un DB relazionale ! La sorgente operazionale è un DB relazionale (RDB) ! Oltre allo schema logico-relazionale, più o meno completo con vincoli di integrità (chiavi, integrità referenziale, valori nulli, !), la documentazione generalmente disponibile per un RDB può comprendere 1. 2. ! Uno schema E/R “equivalente” allo schema logico con l’eventuale documentazione allegata Altra documentazione generica sul RDB, quale le specifiche e requisiti del RDB e Manuali d'uso Se lo schema E/R del RDB non è disponibile esso viene ricavato attraverso tecniche di Reverse engineering Documentazione di schemi E/R ! Uno schema E/R non è quasi mai sufficiente da solo a rappresentare tutti gli aspetti e vincoli di un dominio applicativo, per varie ragioni: 1. 2. in uno schema E/R compaiono solo i nomi dei vari concetti ma questo può essere insufficiente per comprenderne il significato. vari vincoli di integrità (proprietà dei dati rappresentati) non possono essere espressi direttamente dai costrutti del modello E/R ! Documentazione di schemi E-R: uno schema E/R è corredato con una documentazione di supporto che faciliti l'interpretazione dello schema stesso e a descrivere vincoli di integrità non esprimibili in E/R ! Regole aziendali o business rules $ $ $ Una descrizione di un concetto (entità,associazione attributo) dello schema associazione del modello E-R (Dizionario dei dati) Un Vincolo di integrità, sia esso la documentazione di un vincolo già nello schema E/R o la descrizione di un vincolo non esprimibile in E/R Una Derivazione ovvero un concetto che può essere ottenuto attraverso un'inferenza o un calcolo da altri concetti dello schema (Dato Derivato) 40 Data Profiling di un DB relazionale ! Analisi delle istanze del DB per scoprire vincoli di integrità non noti ed impliciti nei dati. E’ importante in ogni caso: 1. 2. DB con schema E/R e documentazione disponibile Nella realtà spesso non tutte le business rules sono documentate: ci sono vincoli di integrità non espressi nello schema E/R e non documentati. DB con schema E/R non disponibile Lo schema relazionale di partenza per effettuare Reverse Engineering non è quasi mai completo e normalizzato $ Individuazione di chiavi, chiavi esterne, ! $ Individuazione di dipendenze funzionali e normalizzazione dello schema Oltre a questi vincoli di integrità “classici”, nel caso di progettazione di un DW vengono analizzati vincoli particolari quali la convergenza ! 41 Reverse engineering di schemi relazionali ! Dallo schema relazionale ottenere lo schema E/R equivalente ! Procedimento inverso della Progettazione logico-relazionale: dato uno schema E/R tradurlo in uno schema relazionale ! ! ! Regole di semplificazione dello schema E/R per eliminare identificatori esterni, gerarchie, ! Regole di traduzione logico-relazionale per tradurre uno schema E/R in uno schema relazionale normalizzato Il Reverse engineering di schemi relazionali in schemi E/R si basa sull'applicazione in senso inverso di queste regole di semplificazione e traduzione. Per rendere efficace il processo si deve partire da 1. Uno schema relazionale completo con le indicazioni di chiavi e di integrità referenziale (chiavi esterne), valori nulli, ! 2. Uno schema relazionale normalizzato (infatti le regole di traduzione logico-relazionale forniscono uno schema relazionale normalizzato) 42 Reverse engineering : entità e gerarchie ! Si inizia considerando le relazioni senza chiavi esterne, che corrispondono sicuramente a entità nello schema E/R ! Uno schema relazionale con !R(K, A, ...) R1(K1:R, B, ...) corrisponde in E/R ad un subset R1 is-a R % ! STUDENTE(MATR, ETA) Notazione sintetica per una foreing key K1:R indica FK: K1 REFERENCES R Il caso di R1(K1:R, B, ...), R2(K2:R, C, ...) corrisponde ad una gerarchia di generalizzazione su R con entità figlie R1, R2, ! ! Le proprietà di copertura della gerarchia non possono essere ricavate automaticamente in quanto non presenti nello schema relazionale: occorre riferirsi ad altre informazioni, analizzare l'istanza del database, presenza di trigger, ..! 43 Reverse engineering : associazioni ! Dato uno schema relazionale con !R(K,... !) R1(K1, ... KR:R, ...) ! Se KR non è chiave, allora la FK traduce una associazione uno-a-molti ! Se KR è not null allora la partecipazione di R1 è obbligatoria : X=1 ! Se KR è chiave in R1, allora l'associazione A è uno-a-uno : N=1 ! Se KR è una parte della chiave di R1: R1(K1,KR, ...) la FK traduce un identificatore esterno 44 Reverse engineering : associazioni In generale, una relazione R con n foreign key RKi riferite ad n relazioni Ri individua un'associazione n-aria tra le Ri (regola di traduzione-standard ) !! ! ! !R (RK1:R1,..., RKn:Rn, ...) ! Se la chiave di R è l'insieme di tutte le foreign key: R (RK1,..., RKn, ...) ! allora tutte le entità hanno cardinalità max N. Se la chiave di R è un sottoinsieme delle foreign key ! R (RK1,RK2,RK3, ...) allora l'associazione n-aria deve essere reificata 45 Reverse engineering : esempio ! Schema relazionale dato CITTA(CITTA,REGIONE,STATO) CLIENTE(CLIENTE,CITTA:CITTA) BANKOMAT(BANKOMAT,CLIENTE:CLIENTE) BANCA(BANCA,CITTA:CITTA) FILIALE(FILIALE,BANCA:BANCA) OPERAZIONE(NUMOP,BANKOMAT:BANKOMAT, FILIALE:FILIALE,DATA,MESE,ANNO,IMPORTO) VERSAMENTO([NUMOP,BANKOMAT]:OPERAZIONE, ASSEGNO, ASSEGNODI:BANCA) AK:ASSEGNO ! Se non diversamente specificato tutte le foreign key si suppongono not null 46 Reverse engineering : esempio ! Schema E/R corrispondente BANCA ASSEGNO DI (1,1) REGIONE IN STATO CITTA (0,N) (0,N) (0,N) (1,N) CITTA BANCA (1,1) DI INDIRIZZO VERSAMENTO ASSEGNO (1,1) (1,1) FILIALE CLIENTE ASSEGNO FILIALE (0,N) (1,N) CLIENTE DA DEL IMPORTO (1,1) (1,1) MESE ANNO DATA OPERAZIONE (1,1) (1,N) BANKOMAT BANKOMAT NUMOP ! Le cardinalità minime delle entità con molteplicità maggiore di 1 (es: BANCA nell'associazione ASSEGNO-DI) non sono nello schema relazionale : occorre riferirsi ad altre informazioni, analizzare l'istanza del database, presenza di trigger, ..! 47 Vincoli di integrità scoperti sui dati ! Per definizione un vincolo di integrità deve essere valido per tutte le istanze dello schema ! Un vincolo di integrità scoperto sui dati vale ovviamente solo per l'istanza corrente ! ! Riportare un vincolo scoperto sui dati sullo schema riconciliato deve essere una decisione del progettista! Come comportarsi se un vincolo viene considerato valido e riportato sullo schema riconciliato ma poi risulta non più verificato da alcune istanze del RDB? ! Le istanze che non verificano il vincolo possono essere corrette oppure non riportate – in fase di alimentazione – nel RDB conciliato. 48