Я выполняю краткосрочную контрактную работу для компании, которая пытается внедрить тип рабочего процесса регистрации/выписки для своих записей в базе данных.Как управлять несколькими версиями одной и той же записи
Вот как это должно работать ...
- Пользователь создает новый объект в приложении. Существует около 20 связанных таблиц, которые будут заполнены в дополнение к основной таблице сущностей.
- После создания объекта пользователь будет отмечать его как ведущий.
- Другой пользователь может внести изменения в мастер только путем «проверки» объекта. Несколько пользователей могут проверять объект одновременно.
- После того, как пользователь внес все необходимые изменения в объект, они разместили его в статусе «необходимость утверждения».
- После того, как авторизованный пользователь просмотрит объект, они могут продвигать его, чтобы выполнить мастер, который поместит оригинальную запись в статус с надгробным памятником.
Способ, которым они в настоящее время выполняют «проверку», заключается в дублировании записей сущности во всех таблицах. Первичные ключи включают EntityID + EntityDate, поэтому они дублируют записи сущности во всех связанных таблицах с тем же EntityID и обновленным EntityDate и дают ему статус «проверено». Когда запись помещается в следующее состояние (требуется утверждение), дублирование происходит снова. В конце концов, он будет продвигаться, чтобы овладеть, и в это время окончательная запись будет отмечена как мастер, а оригинал будет отмечен как мертвый.
Этот дизайн кажется мне отвратительным, но я понимаю, почему они это сделали. Когда кто-то ищет сущность из приложения, они должны видеть все текущие версии этого объекта. Это было очень просто, чтобы это произошло. Но тот факт, что они представляют один и тот же объект несколько раз в одной и той же таблице (-ах), не подходит мне, а также тот факт, что они дублируют КАЖДОЙ кусок данных, а не только хранят дельта.
Мне было бы интересно услышать вашу реакцию на дизайн, будь то положительный или отрицательный.
Я также был бы благодарен за любые ресурсы, на которые вы можете указать мне, что может быть полезно для того, чтобы увидеть, как кто-то еще реализовал такой механизм.
Спасибо!
Darvis
Эта система находится на ранней стадии разработки, поэтому они либо получить его прямо сейчас, или жить с последствиями. Спасибо за ваш вклад. – DarLom
Мусор! это было близко! ;) Купите CMS. – msw