软删除或硬删除对电子商务有利



我已经读了这篇文章,但我关心的是电子商务网站的最佳解决方案

我们的场景:

产品表

ProductID Name Price

一张表

OrderID ProductID 

OrderDetails表有FK ProductID引用到Product表的ProductID

一旦产品被删除,您将如何显示历史订单报告?

选项:

软删除缺点-影响数据库存储性能

硬删除缺点-在获取报表

时需要额外的连接查询

我肯定会选择软删除。尤其是在电子商务环境中。

将已删除的产品存储在ArchivedProduct表中,然后执行以下操作:

SELECT
*
FROM
OrderDetails RIGHT JOIN Product ON OrderDetails.ProductID = Product.ProductID
UNION ALL
SELECT
*
FROM
OrderDetails RIGHT JOIN ArchivedProduct ON OrderDetails.ProductID = ArchivedProduct.ProductID

当你说

影响db存储性能

是的,在性能方面有一个开销,这完全取决于3个表的大小。

如果在后面的阶段您想要提高查询的性能,您可以根据自己的考虑从ArchivedProduct表中删除一些先前"删除"的产品(例如,在…之前插入的所有产品),或者在第二个SELECT语句中添加一些约束。你仍然处于比硬删除更安全的位置。

相关内容

最新更新