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