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

Имеется телеграмм бот, который должен отсылать отчеты о состоянии оборудования по периодам (Сейчас, Прошлая неделя, эта неделя и т.д)
Как эффективно хранить такую информацию?
Пока в голову приходит записывать сразу в несколько таблиц, а на каждую таблицу повесить триггер на добавление данных. Т.е добавлять текущие данные в сейчас и в недельные данные сразу, а при добавлении удалять из недельных данных те, которые вышли за рамки недели (а точнее переносить их в таблицу прошлая неделя).
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Имеется телеграмм бот, который должен отсылать отчеты о состоянии оборудования по периодам (Сейчас, Прошлая неделя, эта неделя и т.д)
Если репорт - отдельная запись, то достаточно даты создания репорта. Никакой отдельной таблицы не нужно, так как это во первых будет нарушать 3 нормальную форму и соответственно вносит денормализацию в бд, и во вторых избавляет от множества лишних телодвижений по созданию странных таблиц. Селект с битвин или "дата < N энд дата > M" будет достаточно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Ну вариант первый - это просто хранить данные за день, а всякие укрупнения считать в момент необходимости.

Вариант соответственно второй - считать все укрупнёнки в момент записи текущих данных. Удалять/чистить лучше отдельной эвент-процедурой, если старая укрупнёнка недельку полежит, никто не помрёт. Вопрос отдельных таблиц под разные укрупнёнки - только если их структура различна в зависимости от периода, иначе одна таблица и поле маркер - диапазон периода записи.
Ответ написан
Ваш ответ на вопрос

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

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