Il database che sto attualmente costruendo è un database relazionale piuttosto tradizionale, ma c'è un requisito che non mi è chiaro come modellarlo in modo appropriato.
Esistono molte regole di business che vengono tradotte in controlli di coerenza del database (vale a dire che la data A deve essere compresa tra la data B e C o che questo campo non deve essere nullo quando un altro campo è un valore specifico). Il mio problema sorge perché un utente deve essere in grado di lavorare su una versione "bozza" dei dati, consentendo di salvare le modifiche anche se i controlli di coerenza non hanno esito positivo.
Alla fine, un utente può impegnare la bozza, ma solo una volta che tutti i controlli di coerenza passano.
La ragione principale per cui il client desidera questa funzionalità è che possano interrogare il database direttamente per i report e assicurarsi che stiano utilizzando la versione più recente dei dati che è "coerente", ma non impediscono all'utente di entrare dati parziali.
Ho giocato con l'archiviazione del changeset ai dati in JSON in un archivio documenti, e quindi l'applicazione del changeset nel codice quando si tratta di dati di bozza, ma questo rende difficile gestire cose come le relazioni e la creazione / cancellazione di record.
C'è un modo comune per raggiungere questo obiettivo? O qualcuno ha qualche suggerimento su come posso affrontare questo problema in modo diverso?