2016-11-10 81 views
2

我已經看過this後刪除不錯,但我擔心的電子商務網站的最佳解決方案軟刪除或硬的電子商務

我們的情景:

產品表

ProductID Name Price 

OrderDetails表

OrderID ProductID 

OrderDetails表已經FK的ProductID referrenced到的ProductID產品表

一旦產品已被刪除,你打算怎麼顯示的歷史訂單報告?

選項:

軟刪除的缺點 - 它會影響數據庫的存儲性能

硬刪除缺點 - 需要額外的連接查詢的同時服用報告

任何幫助將是巨大的。

+0

軟刪除將是更好的方法。換句話說,您可以擁有一個單獨的表來保存歷史數據並從原始表中將其刪除。 – Viki888

+0

@ viki888感謝它,但目前我們正在計劃使用軟刪除與IsDeleted和DeletedDate字段。未來如果需要我們將移動到硬刪除和存檔在不同的表中的數據。 – Lishna

回答

0

我肯定會去軟刪除。特別是如果在電子商務環境中。

如何存儲在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表中刪除以前「已刪除」的產品中的某些產品(例如,之前插入的所有產品...)或添加一些約束到第二個SELECT聲明。與硬刪除相比,您仍處於更安全的位置。