Un'applicazione CRUD (relativamente) semplice su cui lavoro ha una tabella di ricerca che contiene coppie chiave-valore, alcune delle quali hanno coppie di valori-chiave figlio. Questi sono usati principalmente negli elenchi a discesa sul front-end dell'applicazione.
Attualmente esiste un campo RowStatus per specificare che una coppia valore-chiave è attiva / non attiva e non deve essere inclusa negli elenchi a discesa. Questo va bene per la creazione di record, tuttavia si tratta di un problema durante l'aggiornamento dei record storici.
Ho intenzione di introdurre un campo ValidFrom e ValidTo nella tabella di ricerca per cui verranno utilizzate le schermate "Crea", insieme al campo RowStatus esistente, per garantire che tutti gli elementi negli elenchi a discesa siano validi per la data corrente- tempo. Anche questi sarebbero nullable nel qual caso il sql sottostante ignorerebbe il campo.
Le schermate"Aggiornamento" continueranno a utilizzare solo il campo RowStatus, un vantaggio sarebbe che le schermate di aggiornamento potessero visualizzare anche gli articoli che erano validi al momento della creazione, anche se le regole aziendali lo determinerebbero.
In pratica, un controllo utente carica le coppie chiave-valore dalla tabella di ricerca e utilizza criteri diversi a seconda della pagina su cui si trova il controllo utente. vale a dire.
Crea:
select * from lookuplist where RowStatus=1 and ValidFrom < sysdate and ValidTo > sysdate
Aggiornamento:
select * from lookuplist where RowStatus=1
o
select * from lookuplist where RowStatus=1 and ValidFrom < CreatedOn and ValidTo > CreatedOn
Ci sono problemi con questo approccio che non ho considerato?
Qualsiasi modo in cui questo potrebbe essere migliorato?
Il codice è in c # / ASP.Net / Oracle 12C ma non è estremamente rilevante.