我对已售产品报告中的交易数据有疑问。如果产品已输入交易/订单但有问题的产品已删除,则会发生约束。
如何使交易报告仍可与之前删除的产品一起使用?
谢谢。
答案 0 :(得分:0)
也许处理这种可能性的最佳方法是在相关表中添加约束,如果存在使用该产品的现有订单,则无法删除该产品行。 Products
和Order_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
表中删除产品记录,而同时存在一个或多个引用该产品的订单项记录,则删除尝试将失败。
答案 1 :(得分:0)
如果Products
表中的一行用于两件事,即用于购买产品和报告历史交易,则您将永远无法删除该行。
您可以通过多种方式进行标记:“ available_for_purchase”,“库存= 0”,“ no_longer_produced”等。