SistemiInformativiAvanzati
AnnoAccademico2011/2012
Prof.DomenicoBeneventano
ESERCITAZIONIDEL20e27APRILE2012
Sommario 1.1
VENDITA–Dimensioni={PROD,DATA,CASSA,COM} .........................................................................................2
1.2
EsercizioA(20Aprile2012):SCHEMA5:NSDATA,{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:NSDATA
VENDITA(NV,PROD,CASSA,
COMM, NS:SCONTRINO)
SCONTRINO(NS,DATA)
SCHEMA3:NSDATA,NSCASSA
VENDITA(NV,PROD,
COMM, NS:SCONTRINO)
SCONTRINO(NS,DATA,CASSA)
SCHEMA4:NSDATA,PRODCASSA
VENDITA(NV,PROD:PRODOTTO
COMM, NS:SCONTRINO)
SCONTRINO(NS,DATA)
PRODOTTO(PROD, CASSA)
SCHEMA5:NSDATA,{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:NSDATA,{PROD,DATA}CASSA,CASSACOMM
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:NSDATAcomportache
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:CASSACOMM,vienedatoil
seguenteschemaE/RpiùsemplicesenzalaFD:CASSACOMM
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”,classicoesempioDATAMESE,MESEANNO
2) Quelle“piùcomplicate”,qualiCASSACOMMnelloschemaprecedente
4
1.2 EsercizioA(20Aprile2012):SCHEMA5:NSDATA,{PROD,DATA}CASSA
LapresenzadellaFD:NSDATAcomportache
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:NSDATAcomportacheNUMCLIENTIè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
dimensioniXDi.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’eliminazionediunaDitalecheesistaunaFDtraledimensioniXDi.Conquesteeliminazioni
siindividuatratuttiipatternequivalentiaP0quello“piùpiccolo”;taleinsiemevieneindicato
conP0_key.
AlgoritmodisemplificazionediP0
P0_key=P0;
FORi=1toi=n,
seesisteunaFD:XDi,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_keyDi,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:AB,BC,CA
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}
NoncisonoFDdeltipoNSDimensione: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:NSDATA
NoncisonoFDtraledimensioni,quindiP0_key=P0={PROD,CASSA,COMM,DATA}
PerlaFDNSDATA: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:NSDATA,NSCASSA
NoncisonoFDtraledimensioni,quindiP0_key=P0={PROD,CASSA,COMM,DATA}
PerleFDNSDATAeNSCASSA:NUMCLIENTIènonaggregabilerispettoa
PROD,COMM
NUMCLIENTIècalcolabileperipatternchecontengono{PROD,COMM}.Taleinsiemedipatternè
caratterizzatoda
G(PROD) = 0 AND G(COMM) = 0 9
SCHEMA4:NSDATA,PRODCASSA
PerlaFDPRODCASSAtraledimensioni,P0_key={PROD,COMM,DATA}
SinotichequestoèloSCHEMA2coninpiùlaFDPRODCASSAtraledimensioni;
lenonaggregabilitàvengonovalutatedirettamenteconriferimentoaP0_key
PerlaFDNSDATA: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:NSDATA,{PROD,DATA}CASSA
PerlaFD{PROD,DATA}CASSAtraledimensioni,P0_key={PROD,COMM,DATA}
SinotichequestoèloSCHEMA2coninpiùlaFDPRODCASSAtraledimensioni;
lenonaggregabilitàvengonovalutatedirettamenteconriferimentoaP0_key
PerlaFDNSDATA: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:NSDATA,{PROD,DATA}CASSA,CASSACOMM
PerleFD{PROD,DATA}CASSAeCASSACOMMtraledimensioni,P0_key={PROD,DATA}
SinotichequestoèloSCHEMA2coninpiùledueFDtraledimensioni;
lenonaggregabilitàvengonovalutatedirettamenteconriferimentoaP0_key
PerlaFDNSDATA: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
NSDATA
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:NSD
DATA,{PR
ROD,DATA}}CASSA,CASSAC
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
Scarica

Esercitazioni di Laboratorio