Как сохранить историю заказов в базе данных, особенно старые пути к изображениям? - PullRequest
0 голосов
/ 07 ноября 2018

enter image description here (таблица: order_items)

Я не уверен, что это правильный способ реализации таблицы истории заказов в моей базе данных. Обычно я пытаюсь уменьшить избыточность. Но поскольку пользователь может изменить данные в своем предложении, мне нужно сохранить минимальную информацию заказа.

Цель: Покупатель может видеть свои старые заказы с правильным названием / изображениями / исходным путем / аллергенами (длинная история ...)

Что говорит против моего подхода?

Единственный «страх» состоит в том, что таблица будет раздута с большим количеством избыточной информации.

1 Ответ

0 голосов
/ 08 ноября 2018

Это началось с комментария, но стало слишком длинным, так что ...

С какой базой данных вы работаете?

Например, SQL Server представил концепцию временных таблиц в версии 2016 года.По сути, у вас есть две таблицы, идентичные по структуре, одна из которых является основной таблицей, в которой вы можете использовать DML, как если бы вы использовали обычную таблицу, а другая - таблицу только для чтения, в которой хранятся исторические данные - так что когда вы обновляете запись в основнойВ действительности, таблица сначала копируется в таблицу истории, а затем обновляется.

Нечто подобное может существовать и в других базах данных, а также может быть довольно легко реализовано вручную с использованием триггеров, если ваша база данных не предоставляет его «из коробки».

Конечно, вы можетеиспользуйте технику, называемую «мягкое удаление», где вместо фактического удаления данных вы просто помечаете их как удаленные, и вместо обновления данных вы создаете новую запись с обновленными данными и меняете статус существующей записи на «Неактивный».
Основным преимуществом этого подхода перед временными таблицами является то, что у вас по-прежнему есть только одна таблица для вашей сущности вместо двух, но с другой стороны, преимущество временных таблиц состоит в том, что активные данные хранятся в отдельной таблице.Исходя из исторических данных, активные данные хранятся в сравнительно небольшой таблице, и в результате все операции CRUD более эффективны.

«Боязнь» раздутой таблицы в наши дни и в возрасте, когда памятьи хранилище так дешево кажется немного страннымдля меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...