Parte II — Analisi e progettazione concettuale · Capitolo 8

Costrutti avanzati del DFM

~30 min di lettura3 widget interattivi4 tavole

In questo capitolo

  1. Attributi descrittivi e archi opzionali
  2. Gerarchie condivise
  3. Convergenze
  4. Attributi cross-dimensionali
  5. Archi multipli
  6. Gerarchie incomplete
  7. Gerarchie ricorsive
  8. Frammentazione dello schema di fatto
  9. Verifica le tue conoscenze

Nel capitolo precedente la gerarchia era un albero direzionato di associazioni molti-a-uno. È una definizione pulita, e la realtà la infrange in sette modi diversi. Il DFM li nomina tutti, e ciascuno di essi avrà, nel capitolo 11, una traduzione logica specifica: è questa la ragione per cui vale la pena riconoscerli già a livello concettuale.

1. Attributi descrittivi e archi opzionali

Definizione — attributo descrittivo

Un attributo descrittivo contiene informazioni aggiuntive su un attributo dimensionale di una gerarchia, a cui è connesso da un'associazione -a-uno. Non viene usato per l'aggregazione poiché ha valori continui e/o poiché deriva da un'associazione uno-a-uno.

Gli esempi delle slide sono il peso di un prodotto, l'indirizzo e il telefono di un negozio, il capo reparto, il responsabile di un gruppo di marketing. Le due giustificazioni citate non sono equivalenti e conviene tenerle distinte:

In entrambi i casi l'attributo è utile da vedere ma inutile per aggregare: da qui il nome.

Archi opzionali

Alcuni archi dello schema di fatto possono essere opzionali, e si annotano con un trattino sull'arco. Il caso tipico delle slide è l'attributo dieta di un prodotto: solo alcuni prodotti alimentari hanno un regime dietetico associato, gli altri no. Analogamente città della marca ha senso solo per i prodotti che hanno una marca.

prodotto tipo categoria reparto capo reparto marca dieta città della marca peso attributo descrittivo valori continui: non aggrega archi opzionali (trattino sull'arco) capo reparto: associazione uno-a-uno, anch'esso descrittivo
Tavola 8.1 — Attributi descrittivi (in verde) e archi opzionali (in vermiglio, con il trattino). Nessuno dei due partecipa all'aggregazione, ma per ragioni diverse: gli uni non possono, gli altri possono mancare.
Nota del redattore

Anticipiamo una conseguenza logica del capitolo 11, perché aiuta a capire perché il DFM distingue questi casi: un attributo descrittivo, se collegato a un attributo dimensionale, va incluso nella dimension table che contiene quell'attributo; se collegato direttamente al fatto, va incluso nella fact table. Un arco opzionale, invece, si gestisce con un valore fittizio (NULL oppure NON APPLICABILE) nelle righe in cui il valore non è definito.

2. Gerarchie condivise

Definizione

La gerarchia condivisa è un'abbreviazione usata per denotare il fatto che una porzione di gerarchia è replicata più volte nello schema.

L'esempio canonico è il fatto CHIAMATA, che ha due dimensioni distinte — numero chiamante e numero chiamato — entrambe descritte dalla stessa identica gerarchia di attributi del numero telefonico (uso, distretto). Disegnare due volte la stessa catena sarebbe corretto ma illeggibile: il DFM permette di disegnarla una volta sola e di far confluire su di essa i due archi, etichettati con il ruolo che ciascuno rappresenta.

Il secondo esempio delle slide è più interessante perché la condivisione è parziale: nel fatto SPEDIZIONE la gerarchia geografica (città, regione, stato) è raggiungibile sia dal magazzino sia dal cliente che ha effettuato l'ordine. Le due gerarchie non sono identiche — una parte dal magazzino, l'altra dall'ordine attraverso il cliente — ma condividono la coda.

GERARCHIA CONDIVISA — fatto CHIAMATA CONVERGENZA — gerarchia del negozio CHIAMATA numero, durata numero chiamante numero chiamato uso distretto uso VENDITA negozio città del negozio regione distretto di vendita stato stessa gerarchia, due ruoli due cammini distinti verso lo stesso attributo
Tavola 8.2 — Sopra la condivisione: una sola catena di attributi raggiunta da due dimensioni con ruoli diversi. Sotto la convergenza: due cammini distinti che, partendo dallo stesso attributo, arrivano allo stesso attributo.

3. Convergenze

Definizione

Due attributi dimensionali possono essere connessi da due o più cammini direzionati distinti, a patto che ciascuno di essi rappresenti ancora una dipendenza funzionale. Questo costrutto si chiama convergenza.

L'esempio delle slide sta nella gerarchia del negozio: da negozio si arriva a stato per due strade — passando per città del negozio e regione, oppure passando per distretto di vendita. Entrambe le catene sono fatte di associazioni molti-a-uno, quindi entrambe sono legittime; ed entrambe finiscono sullo stesso attributo.

Convergenza e condivisione: come si distinguono

I due costrutti si somigliano — in entrambi ci sono più cammini che entrano nello stesso attributo — e all'esame vengono contrapposti di continuo. La differenza sta nel punto di partenza e nella conseguenza sulle istanze.

ConvergenzaCondivisione
Da dove partono i cammini Dallo stesso attributo dimensionale (nell'esempio: negozio) Da attributi diversi, che possono appartenere anche a gerarchie diverse o a fatti diversi (nell'esempio: numero chiamante e numero chiamato; oppure magazzino e cliente)
Che cosa significa il disegno Due percorsi realmente distinti nel dominio, che devono portare allo stesso valore Un'abbreviazione grafica: la stessa porzione di gerarchia è replicata più volte nello schema
Vincolo sulle istanze Sì: per ogni negozio, lo stato raggiunto via città-regione e quello raggiunto via distretto devono coincidere No: il numero chiamante e il numero chiamato di una stessa chiamata possono benissimo stare in distretti diversi
Traduzione logica Gli attributi di convergenza si includono nella stessa dimension table dei loro attributi padri, senza particolari accorgimenti Se le gerarchie contengono gli stessi attributi basta importare due volte la chiave della medesima dimension table; se ne condividono solo una parte si sceglie fra duplicazione e snowflake (capitolo 11)
Per l'esame

La domanda tipica è a scelta multipla sulle affermazioni relative a convergenza e condivisione. Le due chiavi di lettura da tenere a mente sono: (1) in una condivisione i cammini possono avere origine da gerarchie diverse — anzi è il caso più frequente; (2) rispetto a una condivisione, una convergenza pone un vincolo addizionale sulle istanze, perché i due cammini devono produrre lo stesso valore per ciascuna istanza. Attenzione a non confondere la convergenza con l'attributo cross-dimensionale, che è invece il costrutto che modella una dipendenza funzionale composta.

4. Attributi cross-dimensionali

Definizione

Un attributo cross-dimensionale è un attributo, dimensionale o descrittivo, il cui valore è determinato dalla combinazione di due o più attributi dimensionali, eventualmente appartenenti a gerarchie distinte.

L'esempio è l'IVA: l'aliquota non dipende solo dalla categoria del prodotto, né solo dallo stato in cui si trova il negozio, ma dalla coppia. Nel disegno l'attributo ha quindi due padri, appartenenti a due gerarchie diverse, e la freccia che li unisce è ciò che segnala la dipendenza funzionale composta.

-- la dipendenza funzionale modellata dall'attributo cross-dimensionale IVA
categoria, stato  ->  IVA

-- NON vale nessuna delle due componenti da sola:
categoria  ->  IVA     -- falso: la stessa categoria ha aliquote diverse in stati diversi
stato      ->  IVA     -- falso: lo stesso stato ha aliquote diverse per categorie diverse

È utile confrontarlo con la convergenza, perché sono spesso confusi: nella convergenza ci sono due cammini che portano allo stesso attributo partendo dallo stesso punto; nell'attributo cross-dimensionale c'è un attributo che ha bisogno di due padri contemporaneamente per essere determinato. Le slide segnalano anche che identificare gli attributi cross-dimensionali (e gli archi multipli) a partire dallo schema sorgente è complesso, perché richiede di navigare anche le associazioni a-molti: per questo si preferisce definirli a partire dai requisiti utente e rappresentarli solo successivamente sullo schema di fatto.

Sul piano dello schema E/R, un attributo cross-dimensionale corrisponde in genere a un attributo posto su un'associazione molti-a-molti R; i suoi padri nello schema di fatto corrisponderanno allora agli identificatori delle entità coinvolte in R.

5. Archi multipli

Definizione

Un arco multiplo modella un'associazione molti-a-molti fra due attributi dimensionali.

È il costrutto che rompe più profondamente la definizione di gerarchia data nel capitolo 7, perché sostituisce un'associazione molti-a-uno con una molti-a-molti — e quindi mette in crisi l'unicità dell'aggregazione.

L'esempio dei libri

Il fatto VENDITA di libri ha come dimensione il libro, che sale a genere; ma un libro può avere più autori e un autore più libri. L'arco libro → autore è dunque multiplo. I dati delle slide:

LibroAutoriCopie vendute
Il DFMGolfarelli, Rizzi3
Mi Sembra LogicoGolfarelli5
La Giusta MisuraRizzi10
Un Fatto Come e PerchéGolfarelli, Rizzi4
La Quarta DimensioneGolfarelli8

E poi la domanda che rende il problema evidente: «Quanto ha venduto Rizzi?». Non c'è una risposta, ce ne sono due, entrambe legittime a seconda di che cosa si vuole sapere. Il widget qui sotto le calcola entrambe.

Arco multiplo: interrogazione pesata e interrogazione di impatto

Scegliete l'autore e il tipo di interrogazione. I pesi sono quelli della bridge table delle slide: 0,5 per ciascuno dei due coautori, 1,0 per l'autore unico.

La distinzione ha un nome preciso, che ritroveremo nella traduzione logica del capitolo 11:

VENDITA numero, incasso libro autore data mese anno arco multiplo BRIDGE — la traduzione logica dell'arco multiplo chiaveL chiaveA peso 1 (Il DFM) 1 (Golfarelli) 0,5 1 (Il DFM) 2 (Rizzi) 0,5 2 (Mi Sembra Logico) 1 (Golfarelli) 1,0 3 (La Giusta Misura) 2 (Rizzi) 1,0 4 (Un Fatto Come…) 1 (Golfarelli) 0,5 4 (Un Fatto Come…) 2 (Rizzi) 0,5 5 (La Quarta Dim.) 1 (Golfarelli) 1,0 la chiave è la combinazione degli attributi collegati dall'arco multiplo; il peso attribuisce importanza diversa alle tuple partecipanti
Tavola 8.3 — L'arco multiplo, con la bridge table che ne costituirà la traduzione logica. Il peso è ciò che distingue un'interrogazione pesata da una di impatto.

Le slide mostrano anche un secondo esempio, sanitario: il fatto RICOVERO con l'arco multiplo verso diagnosi, perché un ricovero è caratterizzato in media da più diagnosi. È il caso su cui si costruiscono diversi esercizi d'esame di calcolo dell'occupazione di memoria (capitolo 11).

6. Gerarchie incomplete

Definizione

Una gerarchia incompleta è una gerarchia in cui, per alcune istanze, risultano assenti — in quanto non noti oppure non definitiuno o più livelli di aggregazione.

L'esempio delle slide è geografico e perfettamente concreto: la gerarchia comune → provincia → regione → nazione funziona benissimo per l'Italia (Empoli e Firenze stanno in FI, che sta in Toscana, che sta in Italia), ma:

Attenzione a non confondere questo caso con quello degli attributi opzionali. Come dicono le slide a proposito della traduzione logica, il problema è più complesso rispetto al caso degli attributi opzionali, poiché la mancanza di un valore di un attributo non implica la mancanza dei successivi nella gerarchia di aggregazione: San Marino non ha la provincia ma ha la nazione. È esattamente questo «buco in mezzo» a rendere delicata la consistenza dell'operatore di roll-up, e il capitolo 11 mostrerà le tre strategie di bilanciamento con cui si risolve.

nazioneregioneprovinciacomune Italia ToscanaVeneto FIGRVI EmpoliFollonicaAsiago Rep. S. Marino Città del Vaticano S. Marino Serravalle regione assente provincia assente nessun livello sotto la nazione la mancanza di un livello non implica la mancanza dei successivi: è questo che rende il caso più complesso degli attributi opzionali
Tavola 8.4 — Una gerarchia incompleta. I livelli mancanti stanno in mezzo alla catena, e questo mette in crisi la consistenza dell'operatore di roll-up.

7. Gerarchie ricorsive

Definizione

Nelle gerarchie ricorsive le relazioni padre-figlio fra i livelli sono consistenti, ma le istanze possono avere lunghezze differenti.

L'esempio è l'organigramma aziendale nel fatto ATTIVITÀ: la dimensione impiegato ha un attributo ruolo, ma soprattutto ha una relazione con sé stessa — ogni impiegato ha un responsabile, che è a sua volta un impiegato. La catena Direttore capo → Direttore esecutivo → Caporeparto produzione → Ingegnere della produzione → Tecnico manutenzione è lunga cinque livelli; quella Direttore capo → Segretaria del direttore capo è lunga due.

Il punto cruciale è nella definizione: la relazione padre-figlio è sempre la stessa («è responsabile di»), quindi è consistente; ma il numero dei livelli non è codificabile nello schema e varia da istanza a istanza. Nessun numero fisso di attributi dimensionali può rappresentarla.

Attenzione

È il costrutto con la traduzione logica più problematica di tutti, per una ragione molto semplice che le slide dichiarano senza giri di parole: SQL non è un linguaggio ricorsivo. Una gerarchia ricorsiva non può essere modellata tramite schema a stella, e le due soluzioni possibili — l'autoanello e la tabella di navigazione — hanno entrambe controindicazioni. Se ne parla nel capitolo 11.

8. Frammentazione dello schema di fatto

In alcuni casi il progettista può valutare la possibilità di frammentare uno schema di fatto in due o più schemi, con l'obiettivo di regolarizzare le gerarchie. È, in un certo senso, la risposta radicale al problema delle gerarchie incomplete: invece di riempire i buchi con segnaposti, si separano i casi.

L'esempio delle slide è il fatto RIGA FATTURA, con una gerarchia del cliente che in Italia sale a città e regione e all'estero salta direttamente a stato, e con l'attributo valuta che ha senso solo per l'estero. Frammentando si ottengono due schemi puliti:

RIGA FATTURA ITALIARIGA FATTURA ESTERO
Gerarchia dell'articoloarticolo → tipo → categoriaarticolo → tipo → categoria
Gerarchia del clientecliente → città → regionecliente → stato
Altre dimensionidatadata, valuta
Misurequantità, importoquantità, importo

Il prezzo è evidente: due schemi da mantenere, e ogni interrogazione che voglia il totale complessivo dovrà attraversarli entrambi — cioè fare un drill-across. Il guadagno è che ciascuno dei due ha gerarchie complete e regolari, quindi traduzione logica semplice e aggregazione sempre ben definita.

Esercizio: quale costrutto avanzato?

Data la situazione descritta, riconoscete il costrutto del DFM che la modella.

Verifica le tue conoscenze

Che cos'è un attributo descrittivo e perché non si usa per aggregare?

Contiene informazioni aggiuntive su un attributo dimensionale di una gerarchia, a cui è connesso da un'associazione -a-uno. Non viene usato per l'aggregazione perché ha valori continui (raggrupparvi produrrebbe un gruppo per valore) e/o perché deriva da un'associazione uno-a-uno (raggrupparvi equivarrebbe a raggruppare per l'attributo padre). Esempi: peso, indirizzo, telefono, capo reparto.

Che cos'è una gerarchia condivisa?

Un'abbreviazione usata per denotare che una porzione di gerarchia è replicata più volte nello schema. Esempio: nel fatto CHIAMATA le dimensioni numero chiamante e numero chiamato hanno la stessa gerarchia (uso, distretto), disegnata una volta sola con i due archi etichettati dal ruolo. Un altro esempio è la gerarchia geografica raggiungibile sia dal magazzino sia dal cliente nel fatto SPEDIZIONE.

Che cos'è una convergenza?

Il costrutto per cui due attributi dimensionali sono connessi da due o più cammini direzionati distinti, a patto che ciascuno rappresenti ancora una dipendenza funzionale. Esempio: da negozio si raggiunge stato sia attraverso città del negozio e regione, sia attraverso distretto di vendita.

Come si distingue una convergenza da una condivisione?

Nella convergenza i cammini partono dallo stesso attributo e devono portare allo stesso valore: c'è quindi un vincolo addizionale sulle istanze. Nella condivisione i cammini partono da attributi diversi, che possono appartenere anche a gerarchie diverse o a fatti diversi, ed è solo un'abbreviazione grafica: nessun vincolo lega i valori raggiunti (il numero chiamante e quello chiamato possono stare in distretti diversi).

Che cos'è un attributo cross-dimensionale?

Un attributo, dimensionale o descrittivo, il cui valore è determinato dalla combinazione di due o più attributi dimensionali, eventualmente appartenenti a gerarchie distinte. Esempio: l'IVA, determinata dalla coppia (categoria del prodotto, stato del negozio). Modella cioè una dipendenza funzionale composta. Sullo schema E/R corrisponde in genere a un attributo posto su un'associazione molti-a-molti.

Che cos'è un arco multiplo e quale problema pone?

Modella un'associazione molti-a-molti fra due attributi dimensionali: per esempio libro → autore, dove un libro ha più autori e un autore più libri. Il problema è che l'aggregazione non è più univoca: alla domanda «quanto ha venduto Rizzi?» si può rispondere in due modi, con un'interrogazione pesata (che considera il peso dell'arco multiplo e fornisce l'effettivo totale) o con un'interrogazione di impatto (che non lo considera e fornisce valori più elevati).

Che cos'è una gerarchia incompleta?

Una gerarchia in cui, per alcune istanze, risultano assenti — perché non noti oppure non definitiuno o più livelli di aggregazione. Esempio: comune → provincia → regione → nazione, dove San Marino non ha provincia né regione e la Città del Vaticano non ha nemmeno il comune. È più complessa del caso degli attributi opzionali perché la mancanza di un valore non implica la mancanza dei successivi.

Che cos'è una gerarchia ricorsiva?

Una gerarchia in cui le relazioni padre-figlio fra i livelli sono consistenti ma le istanze possono avere lunghezze differenti: il numero dei livelli di aggregazione non è codificabile nello schema. L'esempio è l'organigramma nel fatto ATTIVITÀ, dove la catena di responsabilità può essere lunga due o cinque livelli a seconda dell'impiegato.

Perché identificare archi multipli e attributi cross-dimensionali dallo schema sorgente è difficile?

Perché richiede di navigare anche le associazioni a-molti, mentre la costruzione automatica dell'albero degli attributi (capitolo 9) naviga solo le associazioni a-uno. Per questo si preferisce definirli a partire dai requisiti utente e rappresentarli solo successivamente sullo schema di fatto.

Quando conviene frammentare uno schema di fatto?

Quando lo si vuole dividere in due o più schemi con l'obiettivo di regolarizzare le gerarchie. L'esempio è RIGA FATTURA, separata in una versione ITALIA (cliente → città → regione) e una ESTERO (cliente → stato, con la dimensione valuta): ciascuno dei due ha gerarchie complete e regolari, al prezzo di dover fare un drill-across per ottenere i totali complessivi.

Come si traducono a livello logico attributi descrittivi e archi opzionali? (anticipazione)

Un attributo descrittivo collegato a un attributo dimensionale va incluso nella dimension table che contiene quell'attributo; se è collegato direttamente al fatto va incluso nella fact table. Un arco opzionale si gestisce inserendo nelle righe in cui il valore non è definito un valore fittizio (NULL oppure NON APPLICABILE). Il dettaglio, insieme al caso dell'opzionalità di un'intera gerarchia, è nel capitolo 11.