Scenario
Un ordine è associato ad un cliente.
Vogliamo memorizzare tutte le modifiche che vengono effettuate su un cliente.
Vogliamo avere le informazioni del cliente al momento della creazione dell’ordine (es Ragione sociale) ma anche avere le informazioni aggiornate ad oggi (es Area).
Possibile soluzione
Dividiamo il cliente in due tabelle una clienti_tb che conserva i dati immutabili, l’altra clienti_rev_tb che mantiene lo storico di tutte le modifiche apportate sui clienti e tramite il campo isActve indica la revisione attivà.
Quando vogliamo creare un legame con un specifica versione del cliente useremo la chiave idCliente_rev invece quando vogliamo avere il cliente in generale useremo idCliente.
Considerazioni
Abbastanza complessa da gestire soprattutto quando ci sono più relazioni, pensiamo ad esempio se volessimo storicizzare anche i contatti dei clienti.
Può essere usata anche in contesti dove la revisione necessaria di una approvazione. Ad esempio potremmo avere un medicinale attivo e uno in revisione e solo al momento della approvazione le caratteristiche del nuovo medicinale diventeranno attive.
posted @ venerdì 11 giugno 2010 12:00