Data una versione , sia
la sequenza di operazioni eseguite all'interno di una transazione di modifiche sullo schema. La nuova versione
è definita eseguendo le operazioni di modifica una dopo l'altra.
Allo scopo di popolare , è necessario portare a termine alcune operazioni di migrazione che sposteranno i dati da una versione alla successiva. Se
viene creata all'istante
, le operazioni di migrazione coinvolgono i dati che sono validi al tempo t, quindi tutti i dati la cui validità coinvolge sia
sia
.
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
la nuova versione ottenuta applicando la transazione alla versione
. Definiamo quindi:
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
Non viene definito
(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.
Aggiungere i valori per : Una nuova proprietà A è stata aggiunta alla gerarchia. Ogni istanza valida della gerarchia viene migrata in
, 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 : Se la proprietà A viene cancellata, i suoi valori sono semplicemente eliminati da tutte le istanze valide migrate in
Controllare : Una nuova dipendenza funzionale
è stata aggiunta alla gerarchia. Avremo quindi due casi distinti:
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.