【发布时间】:2011-11-29 07:03:49
【问题描述】:
我正在开发在线购物车系统,我有 items 和 item_options 表。
每个项目可以有 1 个或多个选项,见下文。
项目表
- item_id (PK)
- item_name
- item_description
注意:物品价格在 item_options 表中
item_options 表
- option_id (PK)
- item_id (FK)
- 选项名称
- option_price
当客户下单时,数据会添加到order和order_items表中。
订单表
- orders_id (PK)
- customer_id (FK)
- address_address_id (FK)
- 购买日期
- orders_status
- orders_date_finished
order_items 表
- orders_items_id (PK)
- orders_id (FK)
- item_id (FK)
- item_option_id (FK)
有一个问题,如果员工更改价格、商品名称或删除商品.. 客户发票将受到影响,因为来自 order_items 的 FK 将不再存在于 items 表中。有什么办法解决这个问题?
这个解决方案怎么样:在items 和item_options 表中添加活动字段。当员工想要更改商品的价格或名称时 - 只需将当前活动记录变为 0 (items.active),然后插入一条带有新信息的新记录,活动变为 1。旧订单仍然指向正确的 id不活动的条目。这是好方法吗?
在 items 表中插入新信息后,是否意味着我必须更新/更改 item_id.item_options 表中的新 PK ID?
【问题讨论】:
标签: mysql database database-design