mercoledì 31 luglio 2013

La storicizzazione (parte II)

Dopo aver dedicato un po' di tempo a prendere confidenza con il concetto di storicizzazione (un concetto semplice che potremmo semplificare in tenere traccia di quando succede qualcosa e di chi esegue un'azione), vediamo se è possibile estendere questo concetto in modo semplice, senza alcun impatto pesante sulle strutture delle banche dati e dei programmi che su di esse si appoggiano.
Sicuramente invalidare dei dati è importante: maschera le informazioni passate per l'utente che attualmente usa l'applicazione, ma tiene traccia delle informazioni pregresse. Così facendo si è gestita una delle tre istruzioni principali di manipolazione dei dati che ci mette a disposizione SQL: delete. Ma oltre a delete, che in realta noi abbiamo trasformato in update, ci sono appunto update e insert.
Anche solo come semplice estensione del concetto, potremmo pensare che update e insert vadano gestite come la delete, con le stesse proprietà e modalità. Tale assunto è anche completamente armonico con il concetto di OOP (Object Oriented Programming, Programmazione Orientata agli Oggetti), un paradigma molto di moda alcuni anni fa, oggi un po' meno in voga, ma che rimane comunque la base di moltissimi linguaggi di programmazione che vanno per la maggiore, prima di tutto Java e derivati, e dell'architettura di molti sistemi operativi e strumenti di sviluppo in uso. Ovviamente qui sto parlando di ereditarità: le tre istruzioni sono sorelle, quindi hanno lo stesso padre e quidi dovrebbero ereditare le stesse proprietà, gli stessi attributi, la stessa interfaccia e quindi necessitano degli stessi campi in banca dati.
Parlo quindi di aggiungere i seguenti campi:
DATA_INIZIO_VALIDITA
UTENTE_INIZIO_VALIDITA
DATA_MODIFICA
UTENTE_MODIFICA
Ovviamente la prima coppia supporta le operazioni di insert, che rimangono insert di nuovi record con due campi in più, mentre l seconda coppia supporta le modifiche ai record, che rimangono delle update che lavorano su due campi in più.
La semantica dei campi è piuttosto immediata: usiamo DATA_INIZIO_VALIDITA e UTENTE_INIZIO_VALIDITA per rispondere alle domande su quando e chi ha inserito l'informazione nell'ambiente di riferimento; usiamo DATA_MODIFICA e UTENTE_MODIFICA per rispondere alle domande su quando e chi ha effettuato l'ultima modifica dei dati.

Nessun commento:

Posta un commento