【发布时间】:2019-06-19 03:44:51
【问题描述】:
我对已售产品报告中的交易数据有疑问。如果产品已进入交易/订单但相关产品已被删除,则会出现约束。
如何使交易报告仍然可以与之前删除的产品一起使用?
谢谢。
【问题讨论】:
标签: mysql bigdata e-commerce pos
我对已售产品报告中的交易数据有疑问。如果产品已进入交易/订单但相关产品已被删除,则会出现约束。
如何使交易报告仍然可以与之前删除的产品一起使用?
谢谢。
【问题讨论】:
标签: mysql bigdata e-commerce pos
也许处理这种可能性的最佳方法是向所涉及的表添加约束,如果存在使用该产品的现有订单,则无法删除产品行。以下是 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 表中删除产品记录,而存在一个或多个涉及该产品的订单项目记录,则删除尝试将失败。
【讨论】:
如果Products 表中的一行用于两件事,即用于购买产品和报告历史交易,那么您永远无法真正删除该行。
您可以通过多种方式对其进行标记:“available_for_purchase”、“inventory = 0”、“no_longer_produced”等。
【讨论】: