Когда клиент размещает заказ, item_id и option_id сохраняются в таблице order_items
, оттуда он генерирует счет для клиента. Однако цена товара всегда меняется каждые несколько месяцев, и это влияет на информацию о старых счетах.
Как решить эту проблему? Я не хочу хранить цену и наименование товара в таблице order_items
.
Я прочитал, что возможное решение заключается в создании таблицы history_prices
(система аудита через триггер или запрос вставки SQL вручную через php?), Является ли Аудит лучшим решением или есть какое-то другое решение?
Можете ли вы привести пример, как мне создать таблицу history_prices
, чтобы при изменении цены с item_options.option_price
она сохранялась в таблице history_prices?
Сейчас у меня более 200 000 строк в таблице item_options, нужно ли мне копировать цены в history_prices?
Мне нужен эффективный способ, чтобы на счета не повлияло новое изменение цены.
таблица item_options:
mysql> desc item_options;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| option_id | int(11) | NO | PRI | NULL | auto_increment |
| item_id | int(11) | YES | MUL | NULL | |
| option_name | varchar(100) | YES | | NULL | |
| option_price | int(11) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
Таблица order_items:
mysql> desc order_items;
+----------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------+------+-----+---------+----------------+
| order_items_id | int(11) | NO | PRI | NULL | auto_increment |
| order_id | int(11) | NO | | NULL | |
| item_id | int(11) | NO | | NULL | |
| option_id | int(11) | NO | | NULL | |
+----------------+---------+------+-----+---------+----------------+