Если вы хотите быть очень осторожным при утверждении изменений и ожидаете так много изменений, что вполне вероятно, что в запись будет внесено больше изменений, прежде чем будут одобрены предыдущие изменения, тогда вашим лучшим подходом будет иметь отдельный набор таблиц с одной записью для каждого предложенного изменения.
Эти записи "ожидающих изменений" могут (должны) включать дополнительную информацию о транзакции изменений, например, кто ее предложил и когда.
Ваш процесс обработки всех этих изменений, особенно конфликтующих или перекрывающихся изменений, будет зависеть от ваших бизнес-правил, которые вы не указали окончательно. Варианты включают в себя:
- Запретить второе изменение, пока оно находится в ожидании
- Последнее одобренное изменение выигрывает
- Изменения должны утверждаться последовательно, с наложением ранее ожидаемых изменений поверх официальных данных, так что существует предположение, что все более ранние изменения будут утверждены до применения более поздних изменений
Что касается нормализованных баз данных и объединений, это не представляет особых проблем в вашем случае. Вы присоединитесь к таблицам, содержащим официальные, утвержденные данные, как в любом случае. Если вы хотите присоединиться к промежуточной / предварительно утвержденной версии записи, вы должны создать представление, отражающее эти изменения, перекрывающиеся с официальными данными, а затем присоединиться к этому представлению.