Как реализовать премодерацию запросов добавления/изменения в БД?
Такая ситуация: есть определенная база данных с различными записями, пользователь может не только добавлять новые записи, но и редактировать существующие. Как по умолчанию производится премодерация данных изменений? (т.е. чтобы изменённые данные внедрялись не сразу, а после одобрения условным администратором вручную)
И как при этом же реализовать историю изменений этой самой записи? Просто нужна подсказка в плане теории, ничего в голову не приходит
Очевидное - самое простое.
А очевидное решение, создать таблицу черновиков (или как лучше придумаете ей название), куда будут попадать все новые или изменённые записи в ожидание модерации. Как они пройдут модерацию, они добавляются или изменяются существующие записи.
Можно ещё дальше пойти и развить её так же для истории, то есть все записи в таблице черновик остаются, но привязываются к нужной записи и человек может посмотреть историю всех изменений.
Только при создании истории не забыть добавить внешний ключ на собственную таблицу - next_id - следующая запись истории в пределах id той таблицы, по которой ведется история. И добавить триггер, который будет при добавлении новой записи заполнять у предыдущей next_id.
Если повесить индекс на это поле, то это позволит в любом запросе очень легко определять последнюю запись истории (next_id is null).
Если кратко - то в задаче нужна версионность данных. Поскольку процесс одобрения - неодобрения связан с правками - то нужны версии одних и тех-же данных. Делать одну таблицу или две или три - это вопрос практический
и его надо привязать к схеме автора.