SistemiInformativiAvanzati AnnoAccademico2011/2012 Prof.DomenicoBeneventano ESERCITAZIONIDEL20e27APRILE2012 Sommario 1.1 VENDITA–Dimensioni={PROD,DATA,CASSA,COM} .........................................................................................2 1.2 EsercizioA(20Aprile2012):SCHEMA5:NSDATA,{PROD,DATA}CASSA .................................................5 1.2.1 SpecificadeipatterninSQL‐OLAP ..................................................................................................................5 1.2.2 CuboOLAP:Specificadeipatternperdimensionidegeneri .............................................................................6 1.3 Aggregabilità in presenza di Dipendenze Funzionali tra le dimensioni .............................................................7 1.3.1 Nota sulle Dipendenze Funzionali ................................................................................................................8 1.3.2 Soluzione.......................................................................................................................................................9 1.4 EsercizioB(27Aprile2012) .............................................................................................................................11 1.5 CuboOLAP:specificadeipattern......................................................................................................................12 1.6 EsercizioC:confrontoFDtradimensionieattributicross‐dimensionali ...........................................................14 1 1.1 VENDITA–Dimensioni={PROD,DATA,CASSA,COM} Siconsiderano6differentiDBO,cioè6DBOcondifferenteschema.Perconfrontarlisieffettuauno schemadiFattochehaSEMPRElestessedimensioni:{PROD,DATA,CASSA,COM} Inquestomodosipotràinparticolarediscuterel’effettodelleFDtraledimensioni:infatti,idifferenti schemicomportanodifferentiFDsulledimensioni. MISURE: NUMEROVENDITE=COUNT(*) NUMEROCLIENTI=COUNT(DISTINCTNS),doveNSèilNumeroScontrino DiogniDBOsiconsiderailsuoschemaE/Redilcorrispondenteschemarelazionale SCHEMA1 VENDITA(NV,PROD,CASSA, COMM,NS,DATA) SCHEMA2:NSDATA VENDITA(NV,PROD,CASSA, COMM, NS:SCONTRINO) SCONTRINO(NS,DATA) SCHEMA3:NSDATA,NSCASSA VENDITA(NV,PROD, COMM, NS:SCONTRINO) SCONTRINO(NS,DATA,CASSA) SCHEMA4:NSDATA,PRODCASSA VENDITA(NV,PROD:PRODOTTO COMM, NS:SCONTRINO) SCONTRINO(NS,DATA) PRODOTTO(PROD, CASSA) SCHEMA5:NSDATA,{PROD,DATA}CASSA 2 VENDITA(NV,PROD:PRODOTTO COMM, NS:SCONTRINO) SCONTRINO(NS,DATA:DATA) DATA(DATA) PRODOTTO(PROD) ALLACASSA(PROD:PRODOTTO, DATA:DATA, CASSA) SCHEMA6:NSDATA,{PROD,DATA}CASSA,CASSACOMM SitoglieCOMMdaVENDITAesireificaALLACASSA: VENDITA(NV,PROD:PRODOTTO NS:SCONTRINO) SCONTRINO(NS,DATA:DATA) DATA(DATA) PRODOTTO(PROD) ALLACASSA(PROD:PRODOTTO, DATA:DATA, CASSA:CASSA) CASSA(CASSA, COMM) NUMEROCLIENTI=COUNT(DISTINCTNS),doveNSèilNumeroScontrino LapresenzadellaFD:NSDATAcomportache 1) NUMEROCLIENTIèaggregabilerispettoaDATA 2) NUMEROCLIENTInonèaggregabilerispettoallealtredimensioni NelseguitosivuolediscuterecomeleFDtraledimensioniinfluenzinol’aggregabilitàdellamisura NUMEROCLIENTI. 3 Nota.Nellaspecificadelcompitoscritto: ConsideriamounDBOconilseguenteschemaE/Redilcorrispondenteschemarelazionale (nelloschemarelazionalecipossonoesserevincolidiintegritàaggiuntivi) QuestosignificachevienedatoloschemaE/Rmaper“noncomplicarlo”molto,alcunecoseparticolari vengonoaggiuntesolonelloschemarelazionale,cioèvengonoconsideratecomeaggiuntealloschema relazionale:questeaggiunteriguardanochiavi,FDsiaelencateesplicitamentechedateattraverso l’aggiuntaditabelle Adesempionelcompitoscritto,invecediriportareloschemaE/RdelloSCHEMA6–cherisulta “complicato”acausadellareificazioneintrodottaperesprimerelaFD:CASSACOMM,vienedatoil seguenteschemaE/RpiùsemplicesenzalaFD:CASSACOMM etaleFDviene“aggiunta”alloschemarelazionale(ricordiamochelaFDèunvincolodiintegrità) VENDITA(NV,PROD:PRODOTTO NS:SCONTRINO) SCONTRINO(NS,DATA:DATA) DATA(DATA) PRODOTTO(PROD) ALLACASSA(PROD:PRODOTTO, DATA:DATA, CASSA,COMM) FD: CASSA COMM Sinotiche ALLACASSA(PROD:PRODOTTO, DATA:DATA, CASSA,COMM) FD: CASSA COMM Èequivalentea ALLACASSA(PROD:PRODOTTO,DATA:DATA, CASSA:CASSA) CASSA(CASSA, COMM) Estremizzandoildiscorso:perspecificareloSCHEMA5sipuòconsiderareunoschemacostituitodalla solaentitàVENDITA(quindiilrelazionalecostituitodaunasolarelazioneVENDITA)edaggiungerenel relazionaleledueFD: VENDITA(NV,PROD,CASSA, COMM,NS,DATA) {PROD,DATA} CASSA NS DATA QuestopuòessereutilepercreareidatidiprovadelDBO(comeabbiamofattoadesempioin http://www.dbgroup.unimo.it/SIA/20Aprile2012.sql) InquestocasoloschemaE/Redeltutto“incompleto”inquantonon“contiene”,non“esprime” praticamenteniente.NormalmentenelcompitosicercadidareunoschemaE/Rilpiùcompleto possibile,lasciandofuoriduetipologiediFD 1) Quelle“piùsemplici”,classicoesempioDATAMESE,MESEANNO 2) Quelle“piùcomplicate”,qualiCASSACOMMnelloschemaprecedente 4 1.2 EsercizioA(20Aprile2012):SCHEMA5:NSDATA,{PROD,DATA}CASSA LapresenzadellaFD:NSDATAcomportache 1) NUMEROCLIENTIèaggregabilerispettoaDATA 2) NUMEROCLIENTInonèaggregabilerispettoallealtredimensioni QuindiNUMCLIENTIècalcolabileperipatternchecontengono{PROD,CASSA,COMM} P0={PROD,CASSA,COMM,DATA} P1={PROD,CASSA,COMM} AquestipatternverrannoaggiuntiquelliequivalentigrazieallaFDtraledimensioni.Ilrisultatofinale saràcheNUMCLIENTIècalcolabilepertuttiipatternchecontengono{PROD,COM}. PrendendoinconsiderazioneleFDtraledimensioni,cioèlasolaFD2: {PROD,DATA}CASSA eperciascunodeiduepatternP0eP1sicontrollasegrazieataliFDsipossonoricavaredeipattern equivalentiequinditalipercuiNUMCLIENTIsiacalcolabileanchepertalipattern. PerFD2:{PROD,DATA}CASSAilprimopatternP0èequivalenteaP2={PROD,COMM,DATA}. QuindiNUMCLIENTIècalcolabileperipattern P0={PROD,CASSA,COMM,DATA} P1={PROD,CASSA,COMM} P2={PROD,COMM,DATA} Individuatil’insiemedipatternPperiqualiNUMCLIENTIècalcolabile,sivuoleorascrivereuna espressioneperindividuarePsiainSQL‐OLAPchenelcuboOLAP:inquestomodosaràpossibile visualizzareNUMCLIENTIsoloperipatterninP(oppurevisualizzarloinmododiversoperirestanti pattern:segno‐,indicazione*oppureuncolorediverso) 1.2.1 SpecificadeipatterninSQL‐OLAP RicordiamocheinSQL‐OLAP,datounpatternP={A1,….,An}, unsuosub‐patternP1={A1,…,Ak},conk<=nèindividuatodallacondizione C_P1:G(A1)=0AND…G(Ak)=0ANDG(Ak+1)=1AND…G(An)=1 DoveG=GROUPING.Perindividuareuninsiemidipattern,sideveeffettuarelasommalogica(l’OR) dellecondizioni.Quindiperindividuarel’insiemedipatternperiqualiNUMCLIENTIècalcolabile P0={PROD,CASSA,COMM,DATA} P1={PROD,CASSA,COMM} P2={PROD,COMM,DATA} SidovràscrivereinSQL‐OLAP G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0ANDG(DATA)=0 G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0ANDG(DATA)=1 G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0 OR OR Anchesenonnecessario,l’espressionesipuòsemplificaretramiteiteoremidell’AlgebraBooleanao conlemappediKarnaugh(http://it.wikipedia.org/wiki/Mappa_di_Karnaugh).Adesempio G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0ANDG(DATA)=0 G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0ANDG(DATA)=1 OR èequivalenteaG(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0equindilaprecedenteespressionesi puòsemplificarein G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0 OR G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0 5 Lasemplificazionenonènecessaria,hailsoloscopodiridurre“ilcodiceSQL”dascrivere SELECTCOM,PROD,CASSA,DATA, NUMCLIENTI=CASEWHEN( G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0 G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0 ) THENSUM(NC) ELSE99999END, NVENDITE=SUM(NVENDITE) FROMFACT_TABLEGROUPBYPROD,CASSA,DATA,COMWITHCUBE OR Oppure,perrealizzaresolol’insiemedipatternperiqualiNUMCLIENTIècalcolabile SELECTCOM,PROD,CASSA,DATA,NUMCLIENTI=SUM(NC), NVENDITE=SUM(NVENDITE) FROMFACT_TABLE GROUPBYPROD,CASSA,DATA,COMWITHCUBE HAVING( G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0 OR G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0) RicordiamocheloscopodelleinterrogazioniSQL‐OLAP,oltreaquellodieffettuarealcuneanalisi direttamenteinSQL,cioèsenzausareunospecificosistemaOLAP,èanchequellodiverificarei risultati:adesempio,nelnostrocasograzieallaprecedenteinterrogazionepossiamoverificareseil calcolodellamisuraNUMCLIENTIècorretta(effettuandounconfrontoconirisultatiottenutinel DBO).InoltreleinterrogazioniSQL‐OLAPservonoancheperverificareilpassosuccessivodi realizzazioneedalimentazionedelCuboOLAP. 1.2.2 CuboOLAP:Specificadeipatternperdimensionidegeneri PerscrivereipatterninAnalysisServicesideveriscrivereG(A)=0eG(A)=1interminidicondizionisui membrideilivelliincuièmappatol’attributoA.Nelnostroesempio,vogliamoriscrivere G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0 OR G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0 NelcasopiùsempliceincuiAcorrispondeall’unicolivellodelladimensioneD(ovveronelcasoin cuiladimensionesiadegenere)eladimensioneDhaillivellospeciale(ALL)allora G(A)=0equivaleaD.CURRENTMEMBER.LEVEL.ORDINAL<>0 G(A)=1equivaleaD.CURRENTMEMBER.LEVEL.ORDINAL=0 Sinotichesenzaillivellospeciale(ALL)G(A)=1nonpuòessereottenutoequindinonsiriescead ottenereiltotaleperquellaDimensione. Quindiperscrivere: G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0OR G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0 SidevetradurreciascunpatternepoimettereinORleespressioniottenute PROD.CURRENTMEMBER.LEVEL.ORDINAL<>0AND CASSA.CURRENTMEMBER.LEVEL.ORDINAL<>0AND COMM.CURRENTMEMBER.LEVEL.ORDINAL<>0 OR PROD.CURRENTMEMBER.LEVEL.ORDINAL<>0AND CASSA.CURRENTMEMBER.LEVEL.ORDINAL=0AND COMM.CURRENTMEMBER.LEVEL.ORDINAL<>0AND DATA.CURRENTMEMBER.LEVEL.ORDINAL<>0 6 1.3 Aggregabilità in presenza di Dipendenze Funzionali tra le dimensioni NellasezioneprecedenteèstatodeterminatocheNUMCLIENTIècalcolabileperipattern P0={PROD,CASSA,COMM,DATA} P1={PROD,CASSA,COMM} P2={PROD,COMM,DATA} Ora,consideratocheNUMCLIENTIèaggregabilerispettoaDATA,verifichiamosetogliendoDATAda P2={PROD,COMM,DATA} NUMCLIENTIèancoracalcolabile?LarispostaèpositivaquindiNUMCLIENTIècalcolabileancheper P3={PROD,COMM} IndefinitivaNUMCLIENTIècalcolabileperipattern P0={PROD,CASSA,COMM,DATA} P1={PROD,CASSA,COMM} P2={PROD,COMM,DATA} P3={PROD,COMM} EspressioneSQL‐OLAP: G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0ANDG(DATA)=0OR G(PROD)=0ANDG(CASSA)=0ANDG(COMM)=0ANDG(DATA)=1OR G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=0OR G(PROD)=0ANDG(CASSA)=1ANDG(COMM)=0ANDG(DATA)=1 SemplificandoquestaespressionesiottieneG(PROD)=0ANDG(COMM)=0.IndefinitivaNUMCLIENTI ècalcolabilepertuttiipatternchecontengonoPRODeCOMM,cioèchecontengono{PROD,COM}. Riassumendo:laFD:NSDATAcomportacheNUMCLIENTIècalcolabileperipatternche contengono{PROD,CASSA,COMM}.QuestoinsiemesipuòestendereconsiderandolaFDtrale dimensioniFD2: {PROD,DATA}CASSAconcludendocheNUMCLIENTIècalcolabilepertuttii patternchecontengono{PROD,COM}. E'possibilecalcolarequestorisultatoconunaltroprocedimento,chegeneralmenterisultapiù semplice:ilprocedimentoèquellodi“semplificare”primaP0sullabasedelleFDtraledimensionie quindiconsiderarelenonaggregabilità;InpresenzadiFDtraledimensioni,percalcolarel’insiemedei patternperiqualiNUMCLIENTIècalcolabilesiprocedecomesegue: 1)Siconsideral’insiemedelledimensioni,cioèilpatternprimarioP0={PROD,CASSA,COMM,DATA} 2)Si“semplifica”P0considerandoleFDtraledimensioni,nell’esempioFD2:{PROD,DATA}CASSA P0_key={PROD,CASSA,COMM,DATA} Persemplificazionesiintendel’eliminazionediunadimensioneDitalecheesistaunaFDtrale dimensioniXDi.ConquesteeliminazionisiindividuatratuttiipatternequivalentiaP0quello“più piccolo”;taleinsiemevieneindicatoconP0_key. 3)SiconsideraP0_key;datocheNUMCLIENTIènonaggregabilerispettoaPROD,CASSAeCOMM alloraècalcolabilepertuttiipatterndiP0_keychecontengonoPROD,CASSAeCOMM.Interminipiù generali,dataunamisuraMsiaM_NA={D1,…,Dk}l’insiemedelledimensioniperlequaliMènon aggregabile;alloraMpuòesserecalcolatoperognisottoinsiemechecontiene M_NA ∩P0_key NelnostroesempioNUMEROCLIENTI_NA={PROD,CASSA,COMM}equindil’intersezionerisulta {PROD,COMM}:Siottienequindilostessorisultatovistoinprecedenza. 7 Questodiscorsopuòesseregeneralizzato:sipuòverificarecheunaqualsiasimisuraèsempre aggregabilerispettoadunadimensioneinP0manoninP0_key(nelnostroesempiorispettoaCASSA) epertantoil“controllo”dellenonaggregabilitàpuòessereeffettuatorispettoaP0_key. Indefinitivailprocedimentocheseguiremoècosìschematizzabile: 1) Siconsideral’insiemedelledimensioni,cioèilpatternprimarioP0={D1,…,Dn}. 2) Si“semplifica”P0considerandoleFDtraledimensioni.Persemplificazionesiintende l’eliminazionediunaDitalecheesistaunaFDtraledimensioniXDi.Conquesteeliminazioni siindividuatratuttiipatternequivalentiaP0quello“piùpiccolo”;taleinsiemevieneindicato conP0_key. AlgoritmodisemplificazionediP0 P0_key=P0; FORi=1toi=n, seesisteunaFD:XDi,doveX⊆P0,Di∊P0 togliereDidaP0_key:P0_key=P0_key–{Di} 3) SivalutanoleaggregabilitàdellemisurerispettoallesoledimensioniinP0_key: misuraMnonaggregabileperM_NA={D1,…,Dk},Di∊P0_key 4) alloraMsipuòcalcolareperipatterndiP0checontengonoM_NA={D1,…,Dk}.Taleinsieme ècaratterizzatoda G(D1)=0AND… …ANDG(Dk)=0 1.3.1 Nota sulle Dipendenze Funzionali DatoP0={D1,…,Dn}seconsideriamoP0comeunarelazioneP0(D1,…,Dn) l’operazionedi“semplificare”P0={D1,…,Dn}equivaleacalcolareunachiaveP0_keydiP0: intuitivamenteP0_keyètratuttiipatternequivalentiaP0quello“piùpiccolo”(ricordiamoil concettodichiave:unachiavedeveessereminimale–pag74dellibrodiSistemiInformativi) SinoticheP0_keyDi,perognii. IlproblemadiindividuareP0_keyèquindiriconducibilealproblemaditrovareunachiave(e,piùin generale,lechiavi)diunarelazione,datouninsiemediFD.Ilproblemaèdiscussoin Sezione5.2.RAGIONAMENTOSULLEDIPENDENZEFUNZIONALIdellibrodiSistemiInformativi doveèanchepresentatounalgoritmogeneraleperindividuarelechiavi(AlgoritmoKEY) Esempio:P0(A,B,C)conleseguentitreFD:AB,BC,CA P0hatrechiavi:chiave1=A,chiave2=Bechiave3=C InquestocasoilnostroalgoritmodisemplificazionediP0datoinprecedenzanonfunzionerebbe,in quantorestituirebbeP0_keyvuoto!Questoèdovutoallaparticolaritàdell’esempio: sihaun“ciclo”sulleFD,cioè“partendo”daAsiarrivaadA. Indefinitiva,l’algoritmodatoperlasemplificazionediP0funziona“salvocasiparticolari”. 8 1.3.2 Soluzione Peri6differentischemidatiinprecedenzasiriportaladiscussioneperledipendenzefunzionalitrale dimensionielamisuraNUMCLIENTI SCHEMA1 NoncisonoFDtraledimensioni,quindiP0_key=P0={PROD,CASSA,COMM,DATA} NoncisonoFDdeltipoNSDimensione:NUMCLIENTIènonaggregabilerispettoa PROD,CASSA,COMM,DATA NUMCLIENTIècalcolabileperipatternchecontengono{PROD,CASSA,COMM,DATA} cioèsoloperP0={PROD,CASSA,COMM,DATA} Tale insieme di pattern (che in questo caso è un unico pattern) è caratterizzato da G(PROD) = 0 AND G(CASSA) = 0 AND G(COMM) = 0 AND G(DATA) = 0 SCHEMA2:NSDATA NoncisonoFDtraledimensioni,quindiP0_key=P0={PROD,CASSA,COMM,DATA} PerlaFDNSDATA:NUMCLIENTIènonaggregabilerispettoa PROD,CASSA,COMM NUMCLIENTIècalcolabileperipatternchecontengono{PROD,CASSA,COMM}.Taleinsiemedi patternècaratterizzatoda G(PROD) = 0 AND G(CASSA) = 0 AND G(COMM) = 0 SCHEMA3:NSDATA,NSCASSA NoncisonoFDtraledimensioni,quindiP0_key=P0={PROD,CASSA,COMM,DATA} PerleFDNSDATAeNSCASSA:NUMCLIENTIènonaggregabilerispettoa PROD,COMM NUMCLIENTIècalcolabileperipatternchecontengono{PROD,COMM}.Taleinsiemedipatternè caratterizzatoda G(PROD) = 0 AND G(COMM) = 0 9 SCHEMA4:NSDATA,PRODCASSA PerlaFDPRODCASSAtraledimensioni,P0_key={PROD,COMM,DATA} SinotichequestoèloSCHEMA2coninpiùlaFDPRODCASSAtraledimensioni; lenonaggregabilitàvengonovalutatedirettamenteconriferimentoaP0_key PerlaFDNSDATA:NUMCLIENTIènonaggregabilerispettoa PROD,COMM NUMCLIENTIècalcolabileperipatterndiP0_keychecontengono{PROD,COMM}.Taleinsiemedi patternècaratterizzatoda: G(PROD) = 0 AND G(COMM) = 0 Nello schema di Fatto risultante verrà indicata per NUMCLIENTI la non aggregabilità rispetto a PROD, COMM. SCHEMA5:NSDATA,{PROD,DATA}CASSA PerlaFD{PROD,DATA}CASSAtraledimensioni,P0_key={PROD,COMM,DATA} SinotichequestoèloSCHEMA2coninpiùlaFDPRODCASSAtraledimensioni; lenonaggregabilitàvengonovalutatedirettamenteconriferimentoaP0_key PerlaFDNSDATA:NUMCLIENTIènonaggregabilerispettoa PROD,COMM NUMCLIENTIècalcolabileperipatterndiP0_keychecontengono{PROD,COMM}.Taleinsiemedi patternècaratterizzatoda G(PROD) = 0 AND G(COMM) = 0 Nello schema di Fatto risultante verrà indicata per NUMCLIENTI la non aggregabilità rispetto a PROD, COMM. (vedere esercizioB ) SCHEMA6:NSDATA,{PROD,DATA}CASSA,CASSACOMM PerleFD{PROD,DATA}CASSAeCASSACOMMtraledimensioni,P0_key={PROD,DATA} SinotichequestoèloSCHEMA2coninpiùledueFDtraledimensioni; lenonaggregabilitàvengonovalutatedirettamenteconriferimentoaP0_key PerlaFDNSDATA:NUMCLIENTIènonaggregabilerispettoa PROD NUMCLIENTI è calcolabile per i pattern di P0_key che contengono {PROD }. Tale insieme di pattern è caratterizzato da G(PROD) = 0 Nello schema di Fatto risultante verrà indicata per NUMCLIENTI la non aggregabilità rispetto a PROD, COMM. (vedere esercizioC ) 10 oB(27Ap prile2012)) 1.4 Esercizio NSDATA A,{PROD,DA ATA}CA ASSA SiprrendeinessameloSCHEMA5:N conssiderandoiilcasodiun nadimensiionePRODO OTTOnonpiùdegene eremacon unagerarcchiaassociaata; VENDITA(NV,PROD,C CASSA, COMM,N NS,DATA) {PROD,DA ATA} CAS SSA NS DAT TA PRODOTTO(PROD,TIP PO:TIPO) TIPO(TIPO,CAT:CAT TEG,GRUPPO O) CATEG(CA AT,REP) Equ uestoèapp puntolosch hemadelDBOdato(h http://www w.dbgroup.unimo.it/SSIA/Aprile2 272012.bak k) Sinotich henellosch hemaperla atabellaPR RODOTTOccisono “erronea mente”anccheCAT,RE EPeGRUPP PO;questoèun“refusso” dellacosttruzionedeelDB:perccostruiredeeidatidiprova,siriporta primaun natabellaP PRODOTTO contuttiggliattributicheservon no PRODO OTTO(PROD D,TIPO,CAT T,GRUPPO,R REP) SiriempiiequindiPR RODOTTOrispettand oleFD… Eallafineeriportotu uttonelleta abelleTIPO OeCATEG, Adesemp pio: in nsertintoCA ATEG seelectDISTIN NCTCAT,R REP froomPRODO OTTO ScheemadiFatttoVENDITA A:comedisscussoinp recedenzaperNUMCLIENTIvieeneindicata alanon aggrregabilitàrrispettoaP PROD,COMM. SnowFlakeScchema FA ACT_TABLE(PRODOTT TO:dtPROD DOTTO, DA ATA,COMM,CASSA, NUM MVENDITE,NUMCLIEN NTI) dtPRO ODOTTO(PR RODOTTO,T TIPO:dtTIP PO) dtTIPO O(TIPO,GRU UPPO,CAT T:dtCAT) dtCAT(CAT,REP)) 11 LAP:specifficadeipa attern 1.5 CuboOL ntesezioneeabbiamov vistocome specificareeipatternp perdimenssionidegen neri.Nelcasso Nelllapreceden geneeraleoccorrreconsideerarecheun nadimensiionedelcub bohapiùd diunlivellooecheperttradurreun na dimensionedeelloschemaadifattosiusanopiù dimension nidelcubo: NelnostroCub boVENDITA Asiavrann noquindid duedimensioni GRUPP PO,conliveelliGRUPPO O,TIPO,PR ROD,indica andoilivelllidaquelloosuperiore e:GRUPPO =1),TIPO((livello=2)ePROD(liivello=3) (livello= REP,co onlivelliRE EP(livello=1),CAT,TIIPO,PROD(livello=4) Ogn nicelladelccuboèindiv viduatadaunvalore((membroseecondolatterminologgiaAS)pero ogni dimensione(siialedimen nsioniclassiichechela dimension neparticola areMeasurees): Adeesempiol’u ultimacellaainbassoadestra(co nvisualizzatoilvalorre25)èinddividuataco omesegue:: DimenssioneDATA A:membroD5(dellivvelloDATA.DATA) DimenssioneCASSA A:membro oALLCASSA SA(dellivellloCASSA.(ALL)) DimenssioneREP:membroA ALLREP(deellivelloRE EP.(ALL)) DimenssioneCOMM M:membro oCOM1(deellivelloCO OMM.COM) DimenssioneGRUP PPO:memb broP5(del livelloGR RUPPO.Prod d) DimenssioneMeasu ures:mem mbroNumVe Vendite(del livelloMe easures.MeeasuresLev vel) 12 nimembroh haunaKeyy(perindiv viduareilm membro)eu unName(v valorechevvienevisua alizzato):neei Ogn nosttriesempi––nonusan ndochiavissurrogate‐ KeyeNam mecoincidono. Perognicellad delcubolafunzioneD DIMENSION N.CURRENT TMEMBER resttituisceilm membrodiD DIMENSION Ncorrispon ndenteallaacellacorre ente. Adeesempio,seeGRUPPO.C CURRENTM MEMBERè ilmembroP7(dellivelloGRU UPPO.Prod)),allora [GRU UPPO].CurrentMember.name:è èilnomedeelmembro,ovveroco osavieneviisualizzato [GRU UPPO].CurrentMember.level:èiillivello;p erunlivelllosipuòotttenereilnoomeelaposizione: [GRUPP PO].CurrenttMember.le evel.name= =“PROD” [GRUPP PO].CurrenttMember.le evel.ordinaal=3 G(PR ROD)=0eq quivalea G GRUPPO.CURRENTMEMBER.LE EVEL.ORDIN NAL=3 R REP.CURRE ENTMEMBER.LEVEL. ORDINAL= =4 O OR LaccondizioneGRUPPO.C CURRENTM MEMBER.LE EVEL.ORDINAL=3sipuòscriveereattraverrsolafunzione boolleanaIsLea afcheappllicataadun nmembroèètrueseilmembroèunafoglia, falsealtrim menti,quin ndi IsLeaf(GRU I UPPO.CURRENTMEM MBER)equiivaleaGRU UPPO.CURRENTMEM MBER.LEVEL.ORDINAL L=3 G(PR ROD)=0eq quivalequindia IsLeaf(G GRUPPO.C CURRENTM MEMBER)O ORIsLeaf(R REP.CURRENTMEMB BER) G(PR ROD)=0AN NDG(COMM M)=0equiv valeindefin nitivaa (IsLeaf((GRUPPO.CURRENTM MEMBER) ORIsLeaf((REP.CURR RENTMEMB BER))AND D IsLeaf(C COMM.CUR RRENTMEM MBER) Queestaespresssionedefin niscequindiiipatternaall’internodelCuboO OlapperiquualiNUMCLIENTIè calcolabile,allo oraverràu usataperde efinireunanuovamissura(memb brocalcolatto)come Iif(((IsLeaf(GRU UPPO.CUR RRENTMEM MBER)ORI sLeaf(REP..CURRENT TMEMBER) ) ANDIsL Leaf(COMM M.CURRENTMEMBER R),[Measures].[Nc],99999) 13 oC:confro ontoFDtrradimensiionieattriibuticrosss‐dimensio onali 1.6 Esercizio Siprrendeinessamelo SCHEM MA6:NSD DATA,{PR ROD,DATA}}CASSA,CASSAC COMM TOconunaagerarchia (con nsiderando oancoraladimensionePRODOTT aassociata‐‐comenell’’ESERCIZIO OB) esiconfrontan noduediffeerentisoluzzioni 1. ScheemadiFatttoVenditaccondimenssioni{PROD,DATA,CA ASSA,COM MM} 2. ScheemadiFatttoVenditaccondimenssioni{PROD,DATA}e eattributoccross‐dime ensionale Ripo ortiamolesspecifiche:Consideria amounDB Oconilseg guentesche emaE/Reddilcorrispondente scheemarelazio onale(nello oschemare elazionaleccipossonoesserevincolidiinteggritàaggiu untivi): VENDITA(NV,PROD: PRODOTTO CONTRINO) NS:SC SCONTRINO(NS,DATA TA:DATA) DATA(DATA) PRODOTTO(PROD,TI PO:TIPO) ALLACASSA(PROD:P PRODOTTO, DA ATA:DATA, CASSA,COMM) FD D: CASSA COMM TIPO(TIPO,CAT:CA ATEG,GRUPP PO) CATEG(CAT,REP) 1. 1 ProgetttoConcettu ualeeLogiccodelloSch hemadiFatttoVenditacondimennsioni{PRO OD,DATA, CASSA,COMM}emisureNU UMVENDITE EeNUMCL LIENTI. 2. 2 ProgetttoConcettu ualeeLogiccodelloSch hemadiFatttoVenditacondimennsioni{PRO OD,DATA,}e misureNUMVEND DITEeNUM MCLIENTI. 14