@immelnikoff
Изучаю БД

Разрешить в таблице только INSERT с целью логирования событий?

5db0670744127239071184.png
Имеется таблица ScheduleTest, в которой (через web-морду, разумеется) энергетиками в разных городах устанавливается расписание включения и отключения уличного освещения.
Встала зада о логировании действий пользователей в этой таблице.
Насколько годится следующая идея? Запрещаем UPDATE'ы и DELETE'ы. Если пользователь в web-интерфейсе удаляет или изменяет расписание на определенную дату, то запись с этой датой помечается в поле active 0 и делается новая запись в таблицу с этой датой. При создании нового расписания в поле active по дефолту ставится 1. В итоге имеем доступ ко всей истории изменения расписания в рабочей таблице расписания.
ts – время события на WEB-сервере (например, удаление или изменение расписания на определенную дату),
created – время создания записи в таблице.
Мой глаз замылился. Нужен свежий взгляд со стороны.
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 3
@trooper
Я бы в ScheduleTest хранил текущее состояние записи (актуальное), а лог бы вынес в отдельную таблицу и при любом изменение записи через триггер заполнял эту таблицу, на выходе получаем полный лог по изменениям.
Ответ написан
Комментировать
bigton
@bigton
Web-программист
Все таки для логов лучше сделать отдельную таблицу на INSERT и все.
А от при вашем подходе в таблице расписания 10 записей будет с active=1, а 90 с active=0
Ответ написан
Комментировать
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Все фигня, главное маневры. Прочитайте про event log на основе CQRS паттерна и перестаньте мешать данные с логами
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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