Как спроектировать базу данных с хранением статусов?

Для примера сайт будет посвящен книгам. Имеются авторы и книги (таблицы authors и books). Механизм действия примерно такой:
Автор создаёт книгу со статусом "В написании" (Книга еще не видна пользователям).
После написания первой главы автор устанавливает статус "Написана первая глава".
После полного написания книги устанавливается статус "Книга доступна пользователям" (Соответственно, книга становится доступна пользователям)

В конечном итоге автор и пользователи видят полную историю изменений статусов. Понимаю, что это похоже на систему управления версиями, но в данном случае суть в том, что имеется уже какое-то количество предопределенных статусов, от которых зависит дальнейшее поведение (книга видна/не видна/доступна к скачиванию). В частности интересует такой вопрос, где будет храниться основной статус книги? В самой записи о книге, или же будет браться из истории статусов последний статус книги?

Если необходимо, распишу подробнее.
  • Вопрос задан
  • 3478 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Snewer
Как вариант вести две колонки в таблице: status, status_log. Лог можно хранить в виде json.
Ответ написан
в таблице books колонка status. При изменения автором статуса книги апдейтить поле status. Т.е. в таблице books хранится всегда текущий статус книги.
Добавить ещё одну историческую таблицу hbooks, в которую будут вставляться записи об изменении статуса книги (триггером).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы