Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
产品及服务;MySQL中的Orders表结构_Mysql_Database_Database Design_E Commerce - Fatal编程技术网

产品及服务;MySQL中的Orders表结构

产品及服务;MySQL中的Orders表结构,mysql,database,database-design,e-commerce,Mysql,Database,Database Design,E Commerce,我正在为一个电子商务系统设计一个数据库,我只是被一个场景所困扰。我认为如果站点管理员从后端删除一个产品,那么与该产品相关的所有订单也将被删除。防止这种情况发生的最佳方法是什么?如果产品被删除,那么它不应该干扰以前的订单,因为我们必须在订单中显示从products表获取的产品详细信息 这是我目前拥有的三个表,外键关系也已建立 Products | product_id | name | | 1 | iphone 5s | | 2 | Samsun

我正在为一个电子商务系统设计一个数据库,我只是被一个场景所困扰。我认为如果站点管理员从后端删除一个产品,那么与该产品相关的所有订单也将被删除。防止这种情况发生的最佳方法是什么?如果产品被删除,那么它不应该干扰以前的订单,因为我们必须在订单中显示从products表获取的产品详细信息

这是我目前拥有的三个表,外键关系也已建立

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 |
谢谢

没有多少选择

1> 删除产品不应真正删除行,而应将产品标记为已删除。-优先选择权


2>您可以使用products表中的代理键作为orders表引用的主键/唯一键。删除产品行时(如果强制),则使用外键的“on delete set null”选项。这里使用代理键只是为了防止orders表中的任何键信息丢失