PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Introduzione
2
Nella prima parte, costituita dai primi tre capitoli, viene descritta la teoria su cui si fonda
tutto il sistema. Nel primo capitolo vengono trattate tutte le fasi che costituiscono la
progettazione di una base di dati che, dopo avere affrontato la raccolta delle specifiche,
arriva alla fase di normalizzazione che precede la realizzazione dello schema fisico. Nel
secondo capitolo viene descritta la sintassi per la definizione dei dati in SQL, necessaria
poi alla fine, per la realizzazione dello schema fisico della base di dati. Nel successivo
capitolo viene riportata una semplice descrizione degli OLAP e dei sistemi di data
warehousing, analizzandone i principali aspetti e problematiche. In relazione a
quest’ultimo aspetto verrà fatto riferimento alle soluzioni adottate da OLAP Service, un
componente di Microsoft SQL Server, strumento che sarà adottato al di fuori di questa
tesi per l’implementazione del data warehouse, che permette di eseguire sofisticate analisi
su grandi volumi di dati con delle buone prestazioni.
La seconda parte, costituita dai rimanenti capitoli, tratta le varie fasi di progettazione
della base di dati. Il quarto capitolo, riguardante la definizione del diagramma entità –
relazione, è strutturato in due parti: la prima di individuazione delle entità, e la seconda
di individuazione delle relazioni. Nel quinto capitolo viene effettuata la traduzione dello
schema ER appena generato. Il successivo capitolo riguarda la normalizzazione.
Normalizzare un modello relazionale vuol dire trasformarlo in uno equivalente capace di
soddisfare alcune fondamentali proprietà. La forma normale più utilizzata è general-
mente la 3NF (terza forma normale); un modello relazionale che si trovi in questa
forma, preserva, infatti, sia le dipendenze funzionali sia la proprietà di loss-less join
(caratteristiche queste che lo rendono immune a problemi di ridondanza ed inconsis-
tenza delle informazioni in esso contenute). Usando metodologie basate su diagrammi
ER si ottengono quasi sempre schemi che sono già in 3NF; pertanto il lavoro effettuato
in questo capitolo sarà semplicemente di verificare la proprietà che lo schema relazionale
soddisfi la 3NF. Una volta normalizzato il modello relazionale, scopo del settimo
capitolo è specificare i dettagli implementativi della base di dati ottenuta definendone
meglio le caratteristiche fisiche. Al termine di questo processo si potranno implementare
le relazioni ricavate dalle fasi di traduzione e di normalizzazione visto che saranno note
le strutture di memorizzazione e di accesso dei dati sottostanti. A volte per ragioni di
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Introduzione
3
efficienza si tende a denormalizzare in qualche punto lo schema relazionale ottenuto a
questo punto della progettazione. Questo è il nostro caso. Dato che le informazioni
richieste alla base di dati nelle varie interrogazioni vengono trasmesse su internet, può
essere opportuno avere delle informazioni ridondanti per migliorarne le prestazioni.
Questo è quello che viene fatto nell’ultimo capitolo presentando un esempio di cubo
multidimensionale avente una struttura a stella.
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
5
Capitolo 1
PROGETTAZIONE DI UNA BASE DI DATI
Progettare una base di dati significa definire in modo preciso il suo contenuto
informativo. La progettazione di una base di dati è generalmente organizzata come un
processo incrementale costituito da tre fasi principali:
• PROGETTAZIONE CONCETTUALE: lo scopo di questa fase è di fornire
una rappresentazione formale del contenuto informativo della base di dati, che possa
essere utilizzata come punto di partenza per le fasi successive. Questa
formalizzazione è basata sull’utilizzo di un opportuno modello concettuale, ossia di un
modello che consenta di descrivere ad alto livello la semantica delle informazioni che
costituiranno la base di dati, trascurando gli aspetti implementativi. Risultato di tutto
ciò è lo schema concettuale della base di dati, ossia uno schema del tutto indipendente
dallo specifico DBMS adottato.
• PROGETTAZIONE LOGICA: nella progettazione logica il risultato della
fase precedente è tradotto nel modello dei dati supportato dal DBMS prescelto. Al
termine otterremo uno schema logico dei dati definito nel linguaggio di definizione dei
dati dello specifico DBMS utilizzato.
• PROGETTAZIONE FISICA: in questa fase sono scelte le caratteristiche
fisiche della base di dati, cioè uno schema che descriva le strutture di
memorizzazione e di accesso ai dati.
Preliminare a questo processo incrementale sono le fasi di raccolta ed analisi dei
requisiti in cui vengono raccolte le specifiche informali ed eterogenee che i vari utenti
danno delle caratteristiche che la base di dati dovrà possedere. Tali specifiche riguardano:
i requisiti informativi (caratteristiche intrinseche dei dati), i requisiti sui processi (operazioni che
devono essere svolte sui dati), i requisiti sui vincoli di integrità (proprietà che i dati ed i
processi che su di essi operano dovrebbero possedere).
1.1 MODELLO CONCETTUALE
Durante la fase di progettazione concettuale si fornisce una rappresentazione formale
del contenuto informativo della base di dati utilizzando un adeguato modello concettuale.
Tale modello si basa sul concetto di astrazione. Individuiamo quattro differenti tipi di
astrazione utilizzati durante questa fase:
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
6
• ASTRAZIONE DI CLASSIFICAZIONE: consente la definizione di una
classe partendo da un insieme di oggetti aventi proprietà comuni. Gli elementi di una
classe vengono dette istanze della classe. Tra le istanze di una classe e la classe stessa
si instaura una relazione di appartenenza, chiamata instance_of, in quanto ogni istanza
è un elemento dell’insieme di elementi rappresentati dalla classe.
• ASTRAZIONE DI AGGREGAZIONE: consente di definire una nuova
classe partendo da un insieme di classi che costituiscono le sue componenti. La
relazione semantica che si viene a stabilire tra una classe e le sue classi componenti è
la relazione part_of. Ciascuna classe è aggregazione delle classi rappresentate dai nodi
figli.
• ASTRAZIONE DI GENERALIZZAZIONE: consente la definizione di una
classe partendo da un insieme di classi aventi proprietà comuni (dette sottoclassi). La
relazione che si instaura tra una classe e la sua generalizzazione è una relazione di
contenimento in quanto tutte le istanze di una sottoclasse sono anche istanze della
superclasse. Questo implica che una sottoclasse possiede tutte le proprietà della sua
superclasse. La relazione semantica che lega una sottoclasse alla sua superclasse viene
chiamata subset_of o is_a. Consideriamo ora una classe C generalizzazione delle classi
n
CC ,...,
1
. Tra di esse possono intercorrere due diversi tipi di relazione di
generalizzazione:
• Generalizzazione totale: la relazione di generalizzazione è totale se ogni
istanza di C è istanza di almeno una classe
i
C , i = 1,…,n
• Generalizzazione parziale: la relazione di generalizzazione è parziale se
esiste almeno un’istanza di C che non è istanza di alcuna classe
i
C , i = 1,…,n
La relazione di generalizzazione esistente tra la classe C e le sottoclassi
n
CC ,...,
1
può essere ulteriormente classificata in:
• Generalizzazione esclusiva: la relazione di generalizzazione è esclusiva se
ogni istanza di C è istanza di non più di una classe
i
C , i = 1,…,n
• Generalizzazione condivisa: la relazione di generalizzazione è condivisa se
esiste almeno un’istanza di C che è istanza di più di una classe
i
C , i = 1,…,n
Le due classificazioni precedentemente esposte sono ortogonali; questo implica che
le relazioni di generalizzazione possono essere di quattro tipi diversi: totali esclusive,
totali condivise, parziali esclusive, parziali condivise.
• ASTRAZIONE DI ASSOCIAZIONE: consente di stabilire dei collegamenti
tra classi. Il grado di un’associazione è il numero delle classi che vi partecipano. In
base al grado, le associazioni possono essere classificate in: associazioni unarie
(associazioni di grado uno), associazioni binarie (associazioni di grado due), associazioni
n-arie (associazioni di grado maggiore a due). Per specificare la funzione che un’entità
esercita nell’ambito di un’associazione si può far riferimento al concetto di ruolo. Nel
caso di associazioni unarie è sempre necessario specificare l’insieme di ruoli che ogni
entità della classe può giocare nell’associazione. Inoltre, per ogni classe partecipante
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
7
ad un’associazione possono essere definiti dei vincoli di cardinalità che rappresentano il
numero minimo e massimo di istanze della associazione a cui un’istanza della classe
può partecipare. I valori più comunemente utilizzati per la cardinalità minima sono
zero ed uno, mentre per la cardinalità massima sono uno ed n, con il significato, per
quest’ultimo, di indicare un qualsiasi numero intero maggiore di uno.
Nel caso di associazioni unarie i vincoli di cardinalità vengono specificati rispetto ai
diversi ruoli che le istanze della classe possono ricoprire nell’associazione.
Infine, le associazioni binarie ed unarie possono essere ulteriormente classificate in
base al numero massimo di istanze a cui le classi associate possono partecipare.
Consideriamo il caso di un’associazione binaria. Siano
1
C e
2
C due classi legate da
un’associazione binaria A. Distinguiamo i seguenti casi:
• Se la cardinalità massima di
1
C e
2
C rispetto ad A è pari ad uno, allora A è
un’associazione uno a uno.
• Se la cardinalità massima di
1
C rispetto ad A è n e la cardinalità massima di
2
C rispetto ad A è uno, allora A è un’associazione uno a molti.
• Se la cardinalità massima di
1
C rispetto ad A è uno e la cardinalità massima di
2
C rispetto ad A è n, allora A è un’associazione molti a uno.
• Se la cardinalità massima di
1
C e
2
C rispetto ad A è pari ad n, allora A è
un’associazione molti a molti
1.2 MODELLO ENTITÁ – RELAZIONE
I costrutti di base del modello ER sono: entità, relazioni ed attributi.
Un’entità rappresenta un insieme di oggetti della realtà che possiedono caratteristiche
comuni. Gli oggetti appartenenti ad una certa entità rappresentano le istanze dell’entità.
Graficamente un’entità viene rappresentata tramite un rettangolo.
Una relazione o associazione rappresenta un legame logico tra più entità. Le istanze di
una relazione denotano combinazioni di istanze delle entità che prendono parte alla
relazione. Graficamente una relazione viene rappresentata tramite un rombo connesso
alle entità che vi partecipano.
Le relazioni, sappiamo, possono essere classificate in base al numero di entità coinvolte
in:
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
8
• relazioni unarie
• relazioni binarie
• relazioni n-arie
Per specificare la funzione che un’entità esercita nell’ambito di un’associazione si può far
uso del concetto di ruolo.
Un attributo rappresenta una proprietà elementare posseduta da entità o da relazioni.
Gli attributi vengono inseriti in un diagramma accanto al costrutto a cui sono relativi, e
vengono denotati tramite un pallino collegato al relativo costrutto.
Un attributo si dice monovalore se può assumere al più un valore; si dice multivalore
altrimenti. Un attributo può a sua volta consistere di un certo numero di sottoattributi.
PERSONA
PADRE_DI
padre
figlio
CLIENTE
ORDINA
ARTICOLI
CLIENTE
ORDINA
ARTICOLO
STAGIONE
CLIENTE
ORDINA
ARTICOLI
Id_Cliente
Nome
Indirizzo
Partita_iva
Id_Articolo
Descrizione
Categoria
Peso Id_Ordine
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
9
Attributi di questo tipo si dicono attributi compositi. Ad ogni attributo è associato un
dominio che denota l’insieme di valori legali per l’attributo. I domini supportati dal
modello ER sono: interi, reali, booleani, caratteri, gli intervalli di interi e di caratteri, le
stringhe di caratteri ed i domini definiti dall’utente. Tali domini vengono detti semplici.
Esistono anche domini chiamati compositi ottenuti come combinazione di domini
semplici. Questi rappresentano l’insieme di valori assunti dagli attributi compositi.
L’insieme di valori associati ad un dominio composito è dato dal prodotto cartesiano
degli insiemi di valori associati ai domini componenti.
Nel modello ER è anche possibile organizzare le entità in gerarchie di
generalizzazione. Un’entità E è una generalizzazione delle entità
n
EE ,...,
1
se ogni
istanza delle entità
n
EE ,...,
1
è anche istanza di E. L’entità E viene chiamata entità padre,
mentre le entità
n
EE ,...,
1
sono dette entità figlie. Inoltre, tutte le proprietà dell’entità
padre sono anche proprietà delle entità figlie.
Un caso particolare di generalizzazione è rappresentato dalla relazione di sottoinsieme.
Nella relazione, a differenza della relazione di generalizzazione, ogni entità può avere al
più un’entità figlia. Definire una relazione di sottoinsieme tra un’entità
1
E ed un’entità
2
E significa specificare che ogni istanza dell’entità
1
E è anche istanza dell’entità
2
E . Ne
segue che la relazione di sottoinsieme è una gerarchia di generalizzazione parziale ed
esclusiva.
Analogamente a quanto avviene per le entità, è possibile definire gerarchie di
generalizzazione tra relazioni e tra attributi. In quest’ultimo caso l’insieme di valori che
un attributo figlio può assumere è un sottoinsieme dell’insieme dei valori legali per
l’attributo padre.
Nel modello ER è inoltre possibile definire dei vincoli di integrità. A tal proposito né
individuiamo di due tipi: vincoli impliciti e vincoli espliciti. I vincoli impliciti sono vincoli
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
10
automaticamente verificati dal sistema, che ogni occorrenza di una base di dati relativa
ad un determinato schema ER deve soddisfare. I vincoli impliciti sono i seguenti:
• Ogni istanza di relazione deve riferirsi ad istanze di entità presenti
nell’occorrenza della base di dati;
• Istanze diverse della stessa relazione devono riferirsi a differenti combinazioni di
istanze delle entità partecipanti alla relazione;
• Se un’istanza
1
E è definita come una generalizzazione di un’entità
2
E , l’insieme
delle istanze di
2
E deve essere contenuto nell’insieme delle istanze di
1
E . Simili
vincoli esistono anche per gli attributi e le relazioni legate da gerarchie di
generalizzazione.
Per quanto riguarda i vincoli espliciti, i vincoli cioè esplicitamente definiti da chi specifica
lo schema concettuale, il modello ER prevede costrutti per definire due diverse classi di
vincoli: i vincoli di cardinalità ed i vincoli di identificazione.
I vincoli di cardinalità possono essere classificati nei seguenti gruppi:
• Vincoli di cardinalità su relazioni: è possibile definire vincoli di cardinalità
minima e massima sulle relazioni. Graficamente, la cardinalità minima e massima di
un’entità rispetto ad una relazione viene rappresentata tramite una coppia (c_min,
c_max), collocata vicino alla linea che connette l’entità con la relazione. Se non è
specificato alcun vincolo di cardinalità tra un’entità ed una relazione, si assume (0,n)
come valore di default, si suppone cioè che un numero arbitrario di entità,
eventualmente anche nessuna, possano partecipare alla relazione.
• Vincoli di cardinalità su attributi: la cardinalità minima di un attributo
rappresenta il numero minimo di valori dell’attributo che possono essere associati ad
un’istanza della relazione o entità a cui l’attributo si riferisce, mentre la cardinalità
massima di un attributo rappresenta il numero massimo di valori dell’attributo che
possono essere associati ad un’istanza della corrispondente relazione od entità. Un
attributo con cardinalità minima zero è un attributo che può assumere un valore
nullo; se la cardinalità minima è uno allora l’attributo deve per forza assumere
almeno un valore. Analogamente, un attributo con cardinalità massima pari ad uno, è
un attributo che può assumere un solo valore, mentre un attributo con cardinalità
massima maggiore di uno può assumere un insieme di valori. Graficamente i vincoli
di cardinalità degli attributi vengono rappresentati in maniera analoga a quelli su
relazioni. Per attributi per cui non è specificato un vincolo di cardinalità si assume,
come valore di default, il valore (1,1), che viene quindi omesso dalla
rappresentazione grafica. Se la cardinalità massima di un attributo assume il valore
infinito, tale valore è graficamente rappresentato, analogamente a quanto avviene per
le relazioni, tramite il simbolo “n”.
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
11
L’altra classe di vincoli espliciti specificabili dal modello ER è la classe dei vincoli di
identificazione. Definire un vincolo di identificazione per un’entità significa specificare
un insieme di attributi e/o di entità che posseggono la proprietà di identificare
univocamente le istanze dell’entità. Tali insiemi di entità e/o di attributi vengono
solitamente chiamati identificatori o chiavi. Gli identificatori possono essere suddivisi in tre
classi:
• Identificatori interni: sono identificatori costituiti da uno o più attributi dell’entità a
cui si riferiscono;
• Identificatori esterni: sono identificatori costituiti da una o più entità collegate
all’entità cui si riferiscono;
• Identificatori misti: sono identificatori costituiti sia da attributi dell’entità sia da
entità ad essa collegate.
Gli identificatori possono essere ulteriormente classificati in identificatori semplici (composti
da un solo elemento), ed identificatori compositi (formati da più di un elemento).
Graficamente un identificatore è rappresentato da un circolino nero.
È importante notare che un’entità può possedere più identificatori. Un identificatore si
dice minimale se non è sottoinsieme proprio di alcun altro identificatore.
È importante osservare come il modello ER supporti i quattro tipi di astrazione illustrati
precedentemente.
• L’astrazione di classificazione è rappresentata nel modello ER dai concetti di
entità, relazione ed attributo.
• L’astrazione di aggregazione è rappresentata dal fatto che un’entità può essere
vista come un’aggregazione di attributi, una relazione come un’aggregazione di
attributi e di entità, un attributo composito come un’aggregazione di sottoattributi.
• L’astrazione di generalizzazione è rappresentata nel modello tramite la possibilità
di definire gerarchie di generalizzazione tra entità relazioni ed attributi.
• L’astrazione di associazione è rappresentata nel modello tramite il concetto di
relazione.
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
12
1.3 TRASFORMAZIONE DI UNO SCHEMA ER IN UNO SCHEMA
RELAZIONALE
La traduzione dal modello ER al modello relazionale può essere vista come un’attività
incrementale composta da due fasi principali:
• Fase di ristrutturazione
• Fase di traduzione
1.3.1 FASE DI RISTRUTTURAZIONE
Scopo di questa fase è eliminare dallo schema ER tutti quei costrutti che non possono
essere direttamente rappresentati nel modello relazionale. A sua volta questa fase è
suddivisa in tre sottofasi:
1. eliminazione degli identificatori esterni
2. eliminazione degli attributi compositi e multivalore
3. eliminazione delle gerarchie di generalizzazione
Risultato della fase di ristrutturazione è uno schema ER, equivalente a quello di partenza,
le cui entità ed associazioni non contengono né identificatori esterni né attributi
multivalore e compositi, né gerarchie di generalizzazione.
1.3.1.1 ELIMINAZIONE DEGLI IDENTIFICATORI ESTERNI
Si rende necessario trasformare ogni identificatore esterno o misto in un equivalente
identificatore interno in quanto il modello relazionale non supporta direttamente il
concetto di identificatore esterno.
Consideriamo due entità
1
E ed
2
E legate da un’associazione A e si supponga che
1
E
abbia un identificatore misto od esterno e che questo identificatore sia costituito
dall’entità
2
E attraverso l’associazione A. Possiamo distinguere due casi:
• l’entità
2
E è caratterizzata da un identificatore interno;
• l’entità
2
E è a sua volta caratterizzata da un identificatore misto od esterno
costituito da un’entità
3
E .
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
13
Nel primo caso, l’identificatore
1
E può essere trasformato in un identificatore interno
aggiungendo agli attributi dell’entità
1
E l’identificatore interno di
2
E . A questo punto
l’associazione che legava
1
E ad
2
E può essere eliminata perché è rappresentata
dall’attributo inserito in
1
E .
Nel secondo caso invece se
3
E è caratterizzata da un identificatore interno,
l’eliminazione dell’identificatore esterno di
1
E avviene mediante l’esecuzione sequenziale
dei seguenti passi:
1. trasformazione dell’identificatore di
2
E in un equivalente identificatore interno
2. trasformazione dell’identificatore di
1
E in un equivalente identificatore interno.
Nel caso in cui
3
E sia a sua volta caratterizzata da un identificatore esterno o misto si
applica ricorsivamente il procedimento illustrato per
2
E fino a quando si arriva ad
un’entità caratterizzata da un identificatore interno.
1.3.1.2 ELIMINAZIONE DI ATTRIBUTI COMPOSITI O MULTIVALORE
Consideriamo gli attributi compositi. Consideriamo il caso in cui i sottoattributi siano
attributi semplici. L’eliminazione di un attributo composito da un’entità E può avvenire
in due modi:
1. considerando tutti i sottoattributi dell’attributo composito come attributi di E.
2. eliminando i sottoattributi e considerando l’attributo composito come un attributo
semplice. Tale soluzione richiede la ridefinizione del dominio dell’attributo.
Se le componenti dell’attributo composito sono a loro volta attributi compositi si può
ricorsivamente applicare la procedura illustrata alle componenti fino a quando si arriva
ad un attributo composito formato solo da attributi semplici.
La modellazione di attributi multivalore mediante attributi a valore semplice richiede
invece la definizione di una nuova entità, collegata all’entità di partenza mediante
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
14
un’opportuna associazione, in cui l’attributo multivalore è rappresentato mediante un
attributo a valore singolo.
1.3.1.3 ELIMINAZIONE DELLE GERARCHIE DI GENERALIZZAZIONE
Consideriamo un’entità
1
E generalizzazione di un insieme di entità
n
EE ,...,
2
. Per
eliminare la gerarchia di generalizzazione che lega
1
E ad
n
EE ,...,
2
si possono adottare
tre alternative:
Eliminazione delle entità figlie: le entità
n
EE ,...,
2
vengono eliminate e i loro attributi
vengono inseriti nell’entità padre. All’entità padre viene inoltre aggiunto un attributo che
identifica da quale entità figlia nello schema originario proveniva ciascuna istanza
dell’entità padre. Nel caso di generalizzazioni totali tale attributo non può mai assumere
valore nullo, mentre nel caso di generalizzazioni parziali un valore nullo indica un’istanza
delle entità padre che, nello schema originario, non apparteneva ad alcuna delle entità
figlie.
Eliminazione dell’entità padre: questa soluzione, simmetrica a quella precedente, consiste
nell’eliminare l’entità padre
1
E e nell’inserire i suoi attributi in ciascuna delle entità figlie.
Chiaramente tale procedimento è applicabile solo nel caso in cui la generalizzazione è
totale.
Sostituzione della generalizzazione con associazioni: le entità coinvolte nella generalizzazione
non vengono modificate, mentre la gerarchia di generalizzazione viene sostituita da n
associazioni uno a uno, ognuna delle quali lega l’entità padre con una diversa entità figlia.
La scelta della soluzione da adottare dipende fortemente dal tipo di operazioni che si
devono effettuare sulle entità. In generale, la scelta di accorpare le entità figlie nella entità
padre comporta uno spreco di memoria per la presenza di valori nulli. Tale scelta è
quindi conveniente solo nel caso in cui le operazioni non fanno distinzione tra le varie
entità. La soluzione di eliminare l’entità padre consente invece un risparmio di memoria
rispetto alla soluzione di eliminare le entità figlie in quanto evita il problema dei valori
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
15
nulli. Tale soluzione è conveniente soprattutto nel caso in cui esistano operazioni che si
riferiscono alle istanze di una specifica entità figlia. Si noti però come tale soluzione è
applicabile solo quando la generalizzazione è totale. Infine la soluzione di sostituire la
generalizzazione con delle associazioni è, analogamente alla soluzione di eliminare
l’entità padre, preferibile alla soluzione di eliminare le entità figlie per quanto riguarda la
quantità di memoria utilizzata. Tale soluzione risulta conveniente quando esistono delle
operazioni che fanno delle distinzioni tra entità padre ed entità figlie in quanto consente,
rispetto alla soluzione di eliminare l’entità padre, di accedere ad un numero minore di
attributi.
1.3.2 FASE DI TRADUZIONE
Scopo di questa fase è di generare dallo schema ER restituito dalla fase di
ristrutturazione, un equivalente schema relazionale. La metodologia seguita è basata
sull’applicazione di un insieme di regole di traduzione che consentono di mappare i
costrutti di base del modello ER in costrutti equivalenti del modello relazionale. La
traduzione nel modello relazionale avviene generando una relazione per ogni entità dello
schema ER di partenza; tale relazione contiene un attributo per ogni attributo dell’entità.
La chiave di tale relazione è costituita dagli attributi corrispondenti all’identificatore
dell’entità. Il metodo con cui le associazioni vengono tradotte dipende invece sia dal
numero di entità partecipanti all’associazione sia dai vincoli di cardinalità dell’associa-
zione. In generale sono possibili due alternative:
1. l’associazione viene rappresentata inserendo opportuni attributi in una delle relazioni
rappresentanti le entità che partecipano all’associazione
2. l’associazione viene modellata tramite un’associazione
• Associazione binaria uno a uno: in questo caso, l’associazione viene modellata
mediante attributi inseriti nelle relazioni che modellano le entità partecipanti
all’associazione. L’entità in cui inserire gli attributi ed il numero di attributi da inserire
dipende dal fatto che la partecipazione all’associazione di una o di entrambe le entità
sia opzionale od obbligatoria e dal fatto che l’associazione contenga o meno attributi
propri. Distinguiamo i seguenti possibili casi:
• Partecipazione obbligatoria di una sola entitá: in questo caso la relazione
che rappresenta l’entità per cui l’associazione è obbligatoria contiene come
PROGETTAZIONE DI UN DATA WAREHOUSE PER AZIENDE TESSILI
Capitolo 1: Progettazione di una base di dati
16
chiave esterna la chiave della relazione rappresentante l’entità la cui
partecipazione all’associazione è opzionale. Inoltre, per ogni attributo
dell’associazione, viene inserito un attributo con lo stesso nome nella relazione
rappresentante l’entità la cui partecipazione all’associazione è obbligatoria.
• Partecipazione opzionale od obbligatoria di entrambe le entitá: in questo
caso è possibile, rappresentare l’associazione all’interno di una delle due
relazioni rappresentanti le entità, facendo in modo che una delle due relazioni
contenga come chiave esterna la chiave della relazione rappresentante l’altra
entità partecipante all’associazione, ed un attributo per ogni attributo
dell’associazione. Nel caso in cui la partecipazione di entrambe le entità sia
opzionale, può a volte essere utile rappresentare l’associazione tramite una
relazione che contiene come attributi sia le chiavi delle relazioni rappresentanti
le entità che partecipano all’associazione, sia un attributo per ogni distinto
attributo dell’associazione. La chiave della relazione rappresentante
l’associazione è la chiave di una qualsiasi delle relazioni che rappresentano le
entità coinvolte nell’associazione. Tale alternativa ha il vantaggio di non
presentare mai valori nulli per gli attributi che rappresentano l’associazione.
Lo svantaggio è invece quello di dover creare una relazione in più con
conseguente aumento della complessità dello schema relazionale risultante.
Tale soluzione dovrebbe quindi essere adottata solo quando le istanze delle
entità che partecipano all’associazione sono molto più numerose delle istanze
dell’associazione.
• Associazione binaria uno a molti: in questo caso l’associazione viene
rappresentata inserendo nella relazione che rappresenta l’entità dal lato uno
dell’associazione sia la chiave della relazione rappresentante l’altra entità che
partecipa all’associazione sia un attributo per ogni distinto attributo dell’associazione.
Questa strategia si applica indipendentemente dal fatto che l’entità dal lato uno della
relazione partecipi obbligatoriamente od opzionalmente all’associazione.
• Associazione binaria molti a molti: nel caso in cui le entità siano legate da
un’associazione binaria molti a molti l’unico metodo possibile per la traduzione della
associazione è di definire una relazione che rappresenta l’associazione stessa
contenente un attributo per ogni distinto attributo dell’associazione. Inoltre tale
relazione ha come attributi le chiavi di entrambe le relazioni che rappresentano le
entità partecipanti all’associazione. La chiave della relazione rappresentante
l’associazione è costituita dalle chiavi delle relazioni corrispondenti alle entità
partecipanti alla relazione.
• Associazione unaria: la traduzione in questo caso è del tutto analoga a quella
effettuata per le associazioni binarie a parte il fatto di generare attributi distinti per i
distinti ruoli giocati dall’entità nell’associazione. Nel caso in cui l’associazione unaria
sia uno a uno o uno a molti, l’associazione viene generalmente rappresentata
inserendo opportuni attributi nella relazione che modella l’entità coinvolta
nell’associazione.