2016-11-10 2 views
2

J'ai déjà lu this post, mais je suis préoccupé par la meilleure solution pour le site de commerce électroniquedoux supprimer ou supprimer dur bon pour le commerce électronique

Notre scénario:

table produit

ProductID Name Price 

CommanderDétails tableau

OrderID ProductID 

table OrderDetails a FK ProductID referrenced à ProductID de table produit

une fois a été supprimé produit, comment allez-vous afficher le rapport de l'ordre historique?

Options:

désavantager suppression douce - elle affecte les performances de stockage db

désavantage suppression définitive - besoin supplémentaire se joindre à la requête tout en prenant rapport

Toute aide serait génial.

+0

Suppression douce serait le meilleur moyen. En d'autres termes, vous pouvez avoir une table distincte pour stocker les données historiques et les effacer de la table d'origine. – Viki888

+0

@ viki888 merci pour cela mais actuellement nous prévoyons d'utiliser la suppression douce avec les champs IsDeleted et DeletedDate. Dans l'avenir, si nécessaire, nous passerions à effacer et archiver les données dans différentes tables. – Lishna

Répondre

0

Je voudrais vraiment aller avec soft delete. Surtout si dans un contexte de commerce électronique.

Comment sur le stockage des produits supprimés dans une table ArchivedProduct et puis en faisant ce qui suit:

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

Quand vous dites

il affecte les performances de stockage db

Oui, il y a un surcoût en termes de performance qui dépend entièrement de la taille des 3 tables. Si, à un stade ultérieur, vous souhaitez augmenter les performances de la requête, vous pouvez soit supprimer certains des produits précédemment "supprimés" du tableau ArchivedProduct en fonction de vos propres considérations (par exemple, tous les produits insérés avant ...) ou ajouter des contraintes à la deuxième instruction SELECT. Vous seriez toujours dans une position plus sûre qu'avec une suppression dure.