【问题标题】:soft delete or hard delete good for eCommerce适合电子商务的软删除或硬删除
【发布时间】:2017-03-24 10:15:01
【问题描述】:

我已经阅读了this 的帖子,但我担心电子商务网站的最佳解决方案

我们的场景:

产品表

ProductID Name Price

订单详情表

OrderID ProductID 

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

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

选项:

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

硬删除缺点 - 在获取报告时需要额外的连接查询

任何帮助都会很棒。

【问题讨论】:

  • 软删除会是更好的方法。换句话说,您可以有一个单独的表来保存历史数据并将其从原始表中硬删除。
  • @viki888 感谢它,但目前我们计划对 IsDeleted 和 DeletedDate 字段使用软删除。将来如果需要,我们将移动到硬删除并将数据存档在不同的表中。

标签: sql sql-server sql-delete archive


【解决方案1】:

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

如何将已删除的产品存储在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

当你说

影响数据库存储性能

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

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

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 2018-03-30
    • 2021-05-27
    • 2021-07-22
    • 1970-01-01
    • 2019-08-07
    相关资源
    最近更新 更多