версии
Есть припустим 10к записей о запчастях в базе, какие-то пользователи купили запчасти и теперь в некой таблице заказов есть отношение между покупателем и автозапчастью. Через 3 дня пришёл новый прайс-лист, с базы полностью удалились все записи и записались новые (чтобы хранить актуальную информацию), получается мы теряем историю заказов пользователей. Подскажите как правильнее решить мою задачу.
Я думал при получении новых, актуальных записей ставить у старых флаг "не актуально". Тогда было бы хорошо впилить полную подгрузку в память (для быстрого поиска) актуальной базы. Как это сделать? Припустим в базе будет 100к записей, из которых 10к актуальные с булевым полем. Как бы так сделать, чтобы искать только по этим актуальным записям и быстро?
Второй вариант - при покупке тупо копировать все данные из таблички автозапчастей, включая дату заказа и прочее и при поступлении актуального состояния удалять старые данные. Я понимаю, что механизмы СУБД сами по себе неявно подгрузят табличку в память, но только если в ней будет не так и много записей. И если их оставлять в таблице - рано или поздно она раздуется.
еще можно через триггеры реализовать систему из двух таблиц, актуальные+ таблица с историческими данными, но вообще это жутко стандартная задача, я бы попробовал поискать примеры схем баз для твоей задачи
Не удалять физически запчасти.
Быстро будет и так, ничего подгружать не нужно.
У тебя есть запчасть и история цен и это две разные сущности, в счетах храни ставку, которая была на момент создания счета. Удалять запчасти не надо. Добавляй цену в историю
Обсуждают сегодня