Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Progettazione DW
Reverse Engineering di schemi relazionali
14 Novembre 2022
1
Reverse engineering di schemi relazionali
• Il Reverse engineering di schemi relazionali si basa sull'applicazione
in senso inverso delle regole di ristrutturazione e traduzione
utilizzate nel forward engineering.
CF
Nome Persona
Età
Indirizzo
2
Reverse engineering: associazioni
• Per la traduzione di schemi di relazione contenenti una o
più chiavi esterne, occorre ricordare che in ER ci sono:
– Diverse tipologie di associazione (binaria, N-aria)
– Reverse
Vincoli di integrità (cardinalità): : entità e gerarchie
engineering
• cardinalità massime (‘1:1’, ‘1:N’, ‘N:M’)
! Si inizia considerando le relazioni senza STUDENTE(MATR, ETA)
• cardinalità
chiavi esterne, minime (partecipazione opzionale/obbligatoria)
che corrispondono
sicuramente a entità nello schema E/R
Reverse engineering:
Reverse engineeringassociazioni
: associazioni
! Dato uno schema relazionale con
R(K,...)
Dato unoR1(K1,
schema ...relazionale
KR:R, ...)
con
–! R(K,…)
Se KR non è chiave,
allora la...
– R1(K1, FKKR:R,
traduce
...) (0,Y)
una associazione uno-a-molti
Si traduce in èun’associazione
! Se KR A tra R e R1,dicon
not null allora la partecipazione R1 èmax-card(R1,A)=1
obbligatoria : X=1
! Se KR è chiave in R1, allora l'associazione A è uno-a-uno : N=1
• Come scegliere X:
– Se KR è NOT NULL X=1 (partecipazione obbligatoria)
– ! Altrimenti
Se KR èX=0 (partecipazione
una opzionale)
parte della chiave di R1:
• Come scegliere Y:
R1(K1,KR, ...)
– Se KR è UNIQUE (chiave) in R1 Y=1 (A è uno-a-uno)
la FK traduce un identificatore esterno
– altrimenti Y=N (A è uno-a-molti ) 44
3
R(K,...)
R1(K1, ... KR:R, ...)
! Se KR non è chiave,
allora la FK traduce
una associazione uno-a-molti
! Se la chiave di R è un
sottoinsieme delle foreign key
R (RK1,RK2,RK3, ...)
Prof. S. Castano
Sistemi Informativi - AA. 2022/23 »8
allora l'associazione n-aria deve
essere reificata
8
45
4
Reverse engineering : esempio
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
Reverse
(regola di traduzione-standard ) engineering: associazioni
R (RK1:R1,..., RKn:Rn, ...)
• Se la chiave di R è un sottoinsieme delle foreign key
! R (K1:R1,K2:R2,K3:R3)
Se la chiave di R è l'insieme di tutte le foreign key:
R (RK1,..., RKn, ...)
allora l’entità R3 ha cardinalità max 1 e l'associazione n-aria A deve
allora tutte le entità hanno essere reificata
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
9
Reverse engineering : esempio
! Schema relazionale dato
CITTA(CITTA,REGIONE,STATO)
Reverse engineering: entità e gerarchie
CLIENTE(CLIENTE,CITTA:CITTA)
BANKOMAT(BANKOMAT,CLIENTE:CLIENTE)
Reverse engineering : entità e gerarchie
BANCA(BANCA,CITTA:CITTA)
Uno schema relazionale con
FILIALE(FILIALE,BANCA:BANCA)
– R(K,
Si inizia considerando le relazioni
! OPERAZIONE(NUMOP,BANKOMAT:BANKOMAT, A)
senza STUDENTE(MATR, ETA)
chiavi esterne,FILIALE:FILIALE,DATA,MESE,ANNO,IMPORTO)
che corrispondono
– R1(K:R, B)
sicuramente a entità nello schema E/R in ER con una gerarchia di generalizzazione (sottoinsieme)
VERSAMENTO([NUMOP,BANKOMAT]:OPERAZIONE,
viene tradotto
ASSEGNO, ASSEGNODI:BANCA)
R1 is-a R
! UnoAK:ASSEGNO
schema relazionale con
R(K, A, ...)
R1(K1:R, B, ...)
corrisponde in E/R ad un subset R1 is-a R
! Se non diversamente specificato
tutte le foreign key si suppongono not null
% Notazione sintetica per una foreing key
K1:R indica FK: K1 REFERENCES R
46
! Il caso di R1(K1:R, B,•Il...),caso diR2(K2:R,
R1(K1:R,C, B, ...) corrispondeC, ...) corrisponde ad una gerarchia
...) e R2(K2:R,
ad una gerarchia di generalizzazione su R con su
di generalizzazione entità figlie entità
R con R1, R2,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
Prof. S. Castano
l'istanza del database, presenza di trigger, ..! Sistemi Informativi - AA. 2022/23 10
10 43
5
Reverse engineering : associazioni
Reverse engineering : esempio
Schema relazionale
CITTA’(Città,Regione, Stato)
CLIENTE(Cliente,Città:città)
BANKOMAT(Bankomat, Cliente:cliente)
BANCA(Banca, Città:città)
FILIALE(Filiale,Banca:banca)
OPERAZIONE(NumOp, Bankomat:bankomat, Filiale:filiale,Data,Mese,Anno,Importo)
VERSAMENTO ([NumOp,Bankomat]:operazione,Assegno, Banca:banca)
11
Schema
Reverse ER
engineering : esempio REGIONE STATO
corrispondente DI
(1,N)
CITTA
(0,N)
BANCA
DI INDIRIZZO
(1,1)
IMPORTO
(1,1) (1,1)
MESE
ANNO OPERAZIONE (1,1) (1,N) BANKOMAT
DATA
BANKOMAT
NUMOP
! Le cardinalità
• Per leminime delle entità
cardinalità con molteplicità
non direttamente maggiore
ricavabili dallodischema
1 (es: relazionale (es.,
BANCA nell'associazione ASSEGNO-DI) non sono nello schema
BANCA nell'associazione ASSEGNO-DI) occorre riferirsi ad altre
relazionale : occorre riferirsi ad altre informazioni, analizzare l'istanza
informazioni,
del database, presenza analizzare l'istanza del database, etc.
di trigger, ..!
47
• In assenza di informazioni, la cardinalità di default è (0,N)
Prof. S. Castano Sistemi Informativi - AA. 2022/23 12
12
14 Novembre 2022
13
14
7
Sistemi MOLAP
15
Sistemi ROLAP
16
8
ROLAP: schema a stella
• Uno schema a stella (star schema) è composto da:
– Un insieme di relazioni DT1…, DTn, chiamate
dimension table, ciascuna corrispondente a una
dimensione. Ogni DTi è caratterizzata da una chiave
primaria (tipicamente surrogata) di e da un insieme di
attributi che descrivono le dimensioni di analisi ai
diversi livelli di aggregazione.
– Una relazione FT, chiamata fact table, che importa le
chiavi di tutte le dimension table. La chiave primaria di
FT è data dall ’ insieme delle chiavi esterne dalle
dimension table, d1…, dn; FT contiene inoltre un
attributo per ogni misura.
17
Esempio
Data
Dimension ID_data
Table Data
Mese
Trimestre Negozio
Anno ID_Negozio ID_Negozio
ID_data Negozio
Prodotto ID_Prodotto Città
Quantità Regione
ID_Prodotto
Incasso Rappresentante
Prodotto
Tipo Dimension
Categoria Fact Table Table
Marca
Dimension
Table
18
9
Schema a stella
19
Esempio di istanza
Dimension
Table
ID_data Data Mese Anno ID_Prodotto Prodotto Tipo Categoria Marca
1 2/9/2001 9/2001 2001 1 LatteSlurp latticino Alimentari Slurp
2 3/10/2001 10/2001 2001 2 LatteGnam latticino Alimentari Gnam
3 5/10/2001 10/2001 2001 3 YogurtSlurp latticino Alimentari Slurp
... ... ... ... … … … … …
20
10
Interrogazioni OLAP su schemi a stella
Settimana
ID_Settimana
Settimana Negozio
Mese ID_Negozio
ID_Negozio
Negozio
Prodotto ID_Settimana
Città
ID_Prodotto
ID_Prodotto Stato
Quantità
Prodotto Rappresentante
Incasso
Tipo
Categoria
Fornitore
21
Predicato di join:
collegamento tra fact
SELECT N.Città, S.Mese, P.Tipo,
table e dimension table
SUM(Quantità)
FROM Settimana AS S, Negozio AS N,
Prodotto AS P, Vendite AS V
WHERE V.ID_Settimana=S.ID_Settimana and
V.ID_Negozio=N.ID_Negozio and
V.ID_Prodotto=P.ID_Prodotto
and P.Categoria = ‘Alimentari’
GROUP BY N.Città, S.Mese, P.Tipo
Predicato di
selezione
Estrazione di
fatti rilevanti
Prof. S. Castano Sistemi Informativi - AA. 2022/23 »22
22
11
ROLAP: schema a fiocco di neve
• Lo schema a fiocco di neve (snowflake schema) riduce il
livello di denormalizzazione delle dimension table DTi
degli schemi a stella.
• Uno schema snowflake è ottenibile da uno schema a
stella decomponendo una o più dimension table DTi in più
tabelle DTi,k in modo da eliminare alcune dip. funzionali
transitive in esse presenti. Ogni dimension table DTi,k è
caratterizzata da:
– una chiave primaria (tipicamente surrogata) di,k
– il sottoinsieme degli attributi di DTi che dipendono funzionalmente
da di,k.
– zero o più chiavi esterne che fanno riferimento a altre DTi,k
necessarie a garantire la ricostruibilità del contenuto informativo di
DTi.
• Denominiamo primarie le dimension table le cui chiavi
sono importate nella fact table, secondarie le rimanenti.
23
Esempio di snowflaking
Data
ID_data
Dimension table
Data
Mese primaria
Trimestre
Anno
Negozio
Dimension table ID_Negozio ID_Negozio
primaria Prodotto ID_data Negozio
ID_Prodotti ID_Prodotto
Prodotto Quantità ID_Città
ID_Tipo Incasso Città
Marca ID_Città
Tipo Città
ID_Tipo Regione
Tipo
Dimension table
Categoria
secondaria
Dimension table
secondaria
24
12
Esempio di istanza
25
Negozio
ID_Negozio ® Negozio
Negozio ID_Negozio
ID_Negozio ID_Negozio ® Negozio Negozio ® ID_Città
Negozio
Negozio Negozio ® Città ID_Città Negozio ® Rappresentante
Città Rappresentante
Città ® Regione
Regione Città
Stato Regione ® Stato
ID_Città ID_Città ® Città
Rappresentante Negozio ® Rappresentante Città
Città ® Regione
Regione
Stato Regione ® Stato
26
13
Schema a fiocco di neve
27
ID_Settimana
Settimana
Mese Negozio
ID_Negozio
ID_Negozio
Negozio
Prodotto ID_Settimana
ID_Città
ID_Prodotti ID_Prodotto
Prodotto Quantità Rappresentante
ID_Tipo Incasso
Città
Fornitore ID_Città
Tipo Città
Stato Ulteriori predicati di join:
ID_Tipo
Tipo collegamento tra dim.
select N.Città, S.Mese, P.Tipo, SUM(Quantità)
Categoria table primaria e dim. table
from Settimana AS S, Negozio AS N, Città, Prodotto AS
P, Tipo, Vendite AS V secondaria
where V.ID_Settimana=S.ID_Settimana AND
V.ID_Negozio = N.ID_Negozio AND
N.ID_Città = Città.ID_Città AND
V.ID_Prodotto = P.ID_Prodotto AND
P.ID_Tipo= Tipo.ID_Tipo AND
P.Categoria = ‘Alimentari’
group by N.Città, S.Mese, P.Tipo;
28
14
Progettazione logica
• Insieme dei passi che, a partire dallo schema
concettuale DFM, permettono di derivare lo schema
logico (relazionale) del DW
INPUT OUTPUT
Schema concettuale Progetto
Carico di lavoro logico Schema logico
Volume dei dati
Vincoli di sistema
29
Progettazione logica
30
15
Traduzione DFM star schema
Regola di base
Creare una fact table contenente tutte le misure
collegate con il fatto e, per ogni gerarchia, creare una
dimension table che ne contiene tutti gli attributi.
31
Esempio
Categoria
Fornitore Tipo
Prodotto
Rappresentante
Mese VENDITE
Quantità Negozio Città Stato
Settimana
Guadagno
Settimana
ID_Settimana
Settimana Negozio
Mese ID_Negozio ID_Negozio
ID_Settimana Negozio
Prodotto Città
ID_Prodotto ID_Prodotto
Quantità Stato
Prodotto Rappresentante
Tipo Guadagno
Categoria
Fornitore
32
16
Attributi descrittivi
• Contiene informazioni non utilizzabili per effettuare
aggregazioni ma che si ritiene comunque utile
mantenere.
– Se collegato a un attributo dimensionale, va incluso nella
dimension table che contiene l’attributo.
– Se collegato direttamente al fatto deve essere incluso nella fact
table.
33
Gerarchie condivise
• Se le due gerarchie contengono esattamente gli stessi attributi sarà
sufficiente importare due volte la chiave della medesima dimension
table
uso
chiamante ora
CHIAMATA
34
17
Star vs. Snowflake
35
Gerarchie condivise
Se le due gerarchie condividono solo una parte degli attributi è
necessario decidere se:
• Introdurre ulteriore ridondanza nello schema duplicando le
gerarchie e replicando i campi comuni.
• Eseguire uno snowflake sul primo attributo condiviso introducendo
una terza tabella comune a entrambe le dimension table.
36
18
Esempio
magazzino città regione stato
SPEDIZIONE
ordine
numero cliente
prodotto costo
data di
spedizione data mese anno
Magazzino
ID_Magazzino Città
Spedizioni Magazzino
ID_Magazzino ID_Città
ID_Città Città
ID_Data
Ordine Stato
ID_Ordine
ID_Prodotto ID_Ordine
Quantità Ordine
Incasso Cliente
ID_Città
37
Il carico di lavoro
38
19
Dinamicità del carico di lavoro
39
Il volume dati
40
20
Progettazione logica
41
Viste
42
21
Viste
• Le viste possono essere identificate in base al livello
(pattern) di aggregazione che le caratterizza
43
Esempio
v5 = {trimestre, regione}
44
22
Aggregazioni parziali
45
Esempio
data quadrimestre anno
Prof. 1999
S.46
Castano AVG 113,33
Sistemi Informativi - AA. 2022/23 46
46
23
Esempio
data quadrimestre anno
Calcolo del livello di inventario per anno
Data Quadrimestre Livello di
inventario
1/1/2002 I ’02 100 Anno Livello di
10/2/2002 I ‘02 200 inventario
AVG
31/3/2002 I ‘02 60
2002 113,33
5/6/2002 II ‘02 85
18/7/2002 II ‘02 125
?
31/12/2002 III ‘02 110
AVG
47
Aggregazioni parziali
• Affinchè i dati pre-aggregati possano essere utilizzati per il calcolo di
dati ulteriormente aggregati, può essere necessario memorizzare
anche nuove misure necessarie per il corretto calcolo in dipendenza
dal tipo di operatore aggregato utilizzato
• Gli operatori di aggregazione che possono essere così classificati:
– Distributivi: permettono di calcolare dati aggregati a partire
direttamente da dati parzialmente aggregati (es. somma, massimo,
minimo)
– Algebrici: richiedono un numero finito di informazioni aggiuntive
(misure di supporto) per calcolare dati aggregati a partire da dati
parzialmente aggregati (es. AVG– richiede il numero dei dati
elementari –count- che hanno contribuito a formare un singolo
dato parzialmente aggregato)
– Olistici: non permettono di calcolare dati aggregati a partire da dati
parzialmente aggregati utilizzando un numero finito di informazioni
aggiuntive (es., mediana)
48
24
Aggregazioni parziali
Misure di supporto: necessarie in presenza di operatori di
aggregazione algebrici
AVG 113,33
Prof. S.49
Castano Sistemi Informativi - AA. 2022/23 49
49
25