mysql - MySQL 中的产品和订单表结构

标签 mysql database database-design e-commerce

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

这是我目前拥有的三个表,并且还建立了外键关系。

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> 您可以使用产品表中的代理键作为订单表引用的主/唯一键。当删除产品行时(如果强制),请使用外键的“删除时设置为空”选项。这里使用代理键只是为了防止订单表中任何关键信息丢失。

关于mysql - MySQL 中的产品和订单表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41801838/

相关文章:

mysql - PHPMyAdmin 不允许我导入 .sql 文件

database-design - SQL并发测试更新问题

mysql - 类似 Facebook 的通知系统(地球图标)

mysql - SELECT all 如果参数为 null 否则返回特定项目 laravel

checkin 解释计划时使用 JOIN TYPE 'ALL' 的 MYSQL

sql - MySQL 运行时生成的 View

java - 在 ListView 中获取长按的内容

javascript - 如何通过javascript打开sqlite3 db?

c# - 存储此类信息的适当方式

php - 准备好的语句和二阶 SQL 注入(inject)