我正在为电子商务系统设计一个数据库,我只是遇到了一个提供情况的情景。我想如果站点管理员从后端删除产品,那么所有与该产品相关的订单也将被删除。如果产品被删除,防止发生这种情况的最佳方法是什么,那么它不应该打扰以前的订单,因为我们必须在订单中显示正在从产品表中提取的产品详细信息。
这些是我目前拥有的三个表,也建立了外键关系。
Products
| product_id | name |
| 1 | iphone 5s |
| 2 | Samsung S3 |
| 3 | iphone 6s |
Orders
| order_id | customer_id | datetime |
| 1 | 12 | 2015-08-15 |
Order_Product
| order_product_id | order_id | product_id | qty | price |
| 10 | 1 | 2 | 1 | 300.00 |
由于
答案 0 :(得分:0)
几个选项..
1>删除产品不应该真正删除行,而只是将产品标记为已删除。 - 首选方案
2 - ;您可以使用products表中的代理键作为orders表引用的主/唯一键。删除产品行时(如果必须),则使用选项" on delete set null"对于外键。这里使用代理键只是为了防止订单表中的任何关键信息丢失。