После прочтения много вопросов о Сохранении истории изменений страницы или Как управлять версией записи в базе данных (например), я не могу найти настоящего элегантного решения для выполнения работы.
Теперь попробуем как можно яснее объяснить, в чем мы нуждаемся, для этой простой системы пересмотра, которая позволяет зарегистрированным пользователям публиковать некоторые статьи и другие пользователи для публикации изменений этих статей, а затем некоторых пользователей-модераторов для проверки эти изменения.
База данных MySQL
База данных содержит таблицу статей со следующими упрощенными полями:
ARTICLE(id, id_user, title, content, date);
Чтобы реализовать версии версии/истории, я предполагаю, что у нас будет следующая таблица:
REVISION(id, id_article, revision_id_user, id_moderator, revision_date,
revision_title, revision_content, revision_description, revision_check);
С отношением: ARTICLE 0,n <---> 1,1 REVISION
Workflow
-
Пользователь создает
ARTICLE
, который вставлен в таблицуARTICLE
(потрясающе!) -
Другой пользователь делает обновление этого
ARTICLE
, это обновление записывается в таблицуREVISION
и помещается в очередь для пользователей-модераторов. (revision_check=0
). -
Пользователь модератора проверяет
REVISION(revision_check=1)
, затемARTICLE(content)
получает значениеREVISION(revision_content)
.
Мои вопросы
-
Является ли этот рабочий процесс хорошим способом сделать это? Потому что, я вижу ошибку: если для
ARTICLE
есть несколькоREVISION
:- Должны ли мы взять содержимое последнего отправленного
REVISION
или оригинальногоARTICLE
? - Или, если нам нужно заблокировать ревизии, поскольку никакие другие
REVISION
не могут быть отправлены, пока последнее не проверено.
- Должны ли мы взять содержимое последнего отправленного
-
Есть ли способ записи световых версий? Кстати, можно ли вставить в таблицу
REVISION
только обновленное содержимое через функцию сравнения SQL, PHP или js? И как отобразить его, как это сделать? Потому что я боюсь, что таблицаREVISION
будет очень тяжелой. -
Бонус: как SO??
Любая идея, ссылка, источник, плагин (MySQL, PHP 5 и JS/JQuery) будут очень полезны.