当客户下订单时,item_id和option_id存储在order_items
表中,从那里它将生成客户的发票。但是,该项目的价格每隔几个月就会更改一次,并且会影响旧的发票信息。发票的历史价格表?
有什么解决方案来解决这个问题?我不想将价格和商品名称存储在order_items
表格中。
我已阅读可能的解决方案是创建history_prices
表(审计系统通过触发器或SQL插入查询手动通过php?),是审计最佳解决方案还是有任何其他解决方案吗?
您能否提供示例如何创建history_prices
表,因此当我将价格从item_options.option_price
更改为 - 它将存储到history_prices表中?
现在我在item_options表中有超过200,000行,是否需要将价格复制到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 | |
+----------------+---------+------+-----+---------+----------------+
谢谢你的设计,你会推荐或存储订单本身的价格?在关于新的行..如何做到这一点?例如,如果我更改项目表中的项目名称,那么这是否意味着我需要在选项表中添加新闻重复行?为什么添加StartDate和EndDate字段(在OrderItems表中有一个ItemPriceID字段) – user622378 2011-04-26 00:30:35
如果您有机会,可以请我更新您的设计,以了解上一个问题主题上的orderitems表。谢谢:)这非常有帮助。 – user622378 2011-04-26 00:55:44