next up previous contents index
Next: Aggiornamento degli schemi Up: Versioni Previous: Versioni   Indice   Indice analitico


Migrazione dei dati

Data una versione $ S$, sia $ M_{1}(Z_{1}), \ldots, M_{h}(Z_{h})$ la sequenza di operazioni eseguite all'interno di una transazione di modifiche sullo schema. La nuova versione $ S'$ è definita eseguendo le operazioni di modifica una dopo l'altra.

Allo scopo di popolare $ S'$, è necessario portare a termine alcune operazioni di migrazione che sposteranno i dati da una versione alla successiva. Se $ S'$ viene creata all'istante $ t$, le operazioni di migrazione coinvolgono i dati che sono validi al tempo t, quindi tutti i dati la cui validità coinvolge sia $ S$ sia $ S'$. Nei data warehouse le considerazioni sulla validità dei dati possono essere distinte in due categorie:

Per determinare l'insieme delle operazioni di migrazione che devono essere eseguite dopo una transazione, indipendentemente dalla sequenza delle operazioni coinvolte all'interno di questa, definiamo l'effetto di rete per gli attributi e le dipendenze funzionali connesse alla transazione. Sia $ S'=(\hat{U}', F')$ la nuova versione ottenuta applicando la transazione alla versione $ S=(\hat{U}, F)$. Definiamo quindi:

$\displaystyle \mathtt{Diff_A^+}(S,S')$ $\displaystyle := U' \setminus U$ (insieme degli attributi aggiunti)    
$\displaystyle \mathtt{Diff_F^+}(S,S')$ $\displaystyle := {F'} \setminus F^*$ (insieme delle dipendenze funzionali aggiunte)    
$\displaystyle \mathtt{Diff_A^-}(S,S')$ $\displaystyle := U \setminus U'$ (insieme degli attributi eliminati    

Non viene definito $ \mathtt{Diff_F^-}(S,S')$ (insieme delle dipendenze funzionali eliminate), dal momento che a seguito di una cancellazione di una dipendenza funzionale non è necessario eseguire nessuna operazione. Quando viene eliminata una dipendenza funzionale una regola di integrità viene eliminata, ma non è necessario nessun allineamento delle istanze precedenti.


Tabella 4.1: Azioni di migrazione associate alle operazioni di aggiunta o rimozione di attributi e dipendenze funzionali
Elemento Condizione Azione di Migrazione
$ A \in \mathtt{Diff_A^+}(S,S')$ $ (E \to A) \not \in F'$ $ A$ è una proprietà Aggiungere i valori per $ A$
$ A \in \mathtt{Diff_A^-}(S,S')$ $ (E \to A) \not \in F'$ $ A$ è una proprietà Eliminare $ A$
$ f \in \mathtt{Diff_F^+}(S,S')$ - Controllare $ f$

Aggiungere i valori per $ A$: Una nuova proprietà A è stata aggiunta alla gerarchia. Ogni istanza valida della gerarchia viene migrata in $ S'$, inserendo i valori per A. Come esempio, al momento dell'inserimento di SubCategory dovranno essere inseriti tutti i valori validi per la gerarchia della dimensione Part.

Eliminare $ A$: Se la proprietà A viene cancellata, i suoi valori sono semplicemente eliminati da tutte le istanze valide migrate in $ S'$

Controllare $ f$: Una nuova dipendenza funzionale $ f$ è stata aggiunta alla gerarchia. Avremo quindi due casi distinti:

  1. Se la nuova dipendenza funzionale $ f$ coinvolge due attributi già presenti, è necessario controllare se $ f$ è soddisfatta per tutte le istanze valide esistenti, ed eventualmente forzare questo vincolo modificando sotto la guida dell'utente i valori di uno o entrambi gli attributi coinvolti da $ f$.
  2. Se $ f$ coinvolge una nuova proprietà $ A$ appena aggiunta, allora sarà necessario solamente assicurarsi che tutte le nuove istanze soddisfino $ f$.

In tutti i casi non citati nella tabella 4.1 non è necessario eseguire nessuna operazione di migrazione. Per quanto riguarda la cancellazione o l'aggiunta di una misura, infatti, vengono coinvolti solamente le istanze del fatto, e dato che gli eventi non possono essere presenti contemporaneamente in due versioni distinte, non ci sarà nessuna migrazione. La cancellazione di una dipendenza funzionale non ha nessun impatto sulle istanze delle gerarchie, in quanto un vincolo precedentemente presente viene a mancare, ma i valori delle istanze rimangono tali e quali.


next up previous contents index
Next: Aggiornamento degli schemi Up: Versioni Previous: Versioni   Indice   Indice analitico
Alessandro Ronchi 2005-07-16