0

在此处输入图像描述

我对已售产品报告中的交易数据有疑问。如果产品已进入交易/订单但相关产品已被删除,则会出现约束。

如何使交易报告仍然可以与之前删除的产品一起使用?

谢谢。

4

2 回答 2

0

如果Products表中的一行用于两件事,即用于购买产品和报告历史交易,那么您永远无法真正删除该行。

您可以通过各种方式对其进行标记:“available_for_purchase”、“inventory = 0”、“no_longer_produced”等。

于 2019-01-26T06:45:48.450 回答
0

处理这种可能性的最佳方法可能是向所涉及的表添加约束,如果存在使用该产品的现有订单,则无法删除产品行。这是表定义的内容ProductsOrder_Items可能看起来像:

CREATE TABLE Order_Items (
    order_item_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    ...
    FOREIGN KEY fk_prod (product_id) REFERENCES Products (product_id)
)

CREATE TABLE Products (
    product_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(255) NOT NULL,
    ...
)

有了这个设计,如果有人试图从Products表中删除产品记录,而存在一个或多个引用该产品的订单项目记录,则删除尝试将失败。

于 2019-01-25T10:22:19.523 回答