È necessario memorizzare le modifiche immesse dall'utente in una determinata tabella, ma non mostrare tali modifiche finché non sono state visualizzate e approvate da un utente amministrativo. Mentre tali modifiche sono ancora in sospeso, visualizzerei comunque la versione precedente dei dati. Quale sarebbe il modo migliore di conservare queste modifiche in attesa di approvazione?Qual è il modo migliore per memorizzare le modifiche ai record del database che richiedono l'approvazione prima di essere visibili?
Ho pensato a diversi modi, ma non riesco a capire quale sia il metodo migliore. Questa è un'app web molto piccola. Un modo sarebbe di avere una tabella PendingChanges che imita lo schema dell'altro tavolo, e quindi una volta approvata la modifica, potrei aggiornare la tabella reale con le informazioni. Un altro approccio sarebbe quello di eseguire una sorta di controllo delle versioni dei record in cui memorizzo più versioni dei dati nella tabella e quindi estrarre sempre il record con il numero di versione più alto contrassegnato come approvato. Ciò limiterebbe il numero di tabelle aggiuntive (ho bisogno di farlo per più tabelle), ma mi richiederebbe di eseguire un'ulteriore elaborazione ogni volta che estraggo un set di record per assicurarmi di ottenere quelli giusti.
Eventuali esperienze personali con questi metodi o altri che potrebbero essere buoni?
Aggiornamento: Giusto per chiarire, in questa particolare situazione non mi interessa tanto nei dati storici. Ho solo bisogno di un modo per approvare eventuali modifiche apportate da un utente prima che vengano pubblicate sul sito. Quindi, un utente modificherà il proprio "profilo" e quindi un amministratore esaminerà tale modifica e la approverà. Una volta approvato, questo diventerà il valore visualizzato e la vecchia versione non dovrà essere conservata.
Qualcuno ha provato la soluzione qui sotto in cui si memorizzano le modifiche in sospeso da qualsiasi tabella che deve tracciarle come XML in una tabella PendingChanges speciale? Ogni record avrebbe una colonna che diceva a quale tabella erano destinate le modifiche, una colonna che forse memorizzava l'id del record che sarebbe stato modificato (null se si trattava di un nuovo record), una colonna datetime da memorizzare al momento della modifica, e una colonna per memorizzare l'xml del record modificato (potrebbe forse serializzare il mio oggetto dati). Poiché non ho bisogno di cronologia, dopo che è stata approvata una modifica, la tabella reale verrebbe aggiornata e il record PendingChange potrebbe essere eliminato.
Qualche idea su questo metodo?
Vuoi memorizzare le versioni (ti interessano veramente i vecchi dati) o vuoi solo avere gli ultimi dati approvati? –