【问题标题】:Products & Orders Table Structure in MySQLMySQL中的产品和订单表结构
【发布时间】:2017-06-07 16:43:02
【问题描述】:

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

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

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 |

谢谢

【问题讨论】:

    标签: mysql database database-design e-commerce


    【解决方案1】:

    几个选项..

    1> 产品的删除不应真正删除行,而只是将产品标记为已删除。 - 首选选项


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      相关资源
      最近更新 更多