136 votes

Est doux supprime une bonne idée ?

Est doux supprime une bonne idée ou une mauvaise idée ?

Au lieu de réellement supprimer un enregistrement dans votre base de données, vous marquait juste comme , et lors de la restauration de l’enregistrement, vous pourriez marquer juste comme .

Est-ce une bonne idée ?

Est-ce une meilleure idée pour physiquement supprimer l’enregistrement, puis déplacez-le vers une base de données d’archive, et si l’utilisateur veut l’arrière record, puis logiciel recherchez le dossier dans l’archive et le recréer ?

100voto

MusiGenesis Points 49273

Je dis que c'est une mauvaise idée, en général (à quelques exceptions près, peut-être).

Tout d'abord, votre base de données doivent être sauvegardées régulièrement, de sorte que vous ne devrait jamais être dans une situation où vous ne voudriez pas perdre les données de manière permanente en raison d'une SUPPRESSION (sauf si c'est une suppression de la juste ajouté des données, bien sûr).

Deuxièmement, un doux supprimer comme ceci signifie que vous pouvez désormais inclure un WHERE IsDeleted = false clause dans chaque requête sur ce tableau (et tant pis si vous êtes l'Adhésion à ces tables). Une erreur ici serait pris dès qu'un utilisateur ou un testeur remarqué un enregistrement supprimé montrant encore, ce qui peut prendre un certain temps. Aussi, il serait facile pour un développeur d'omettre la clause where de COUNT(*) les requêtes, ce qui pourrait prendre encore plus de temps pour découvrir (j'ai travaillé sur un projet où cela avait été le cas pendant des années, pas beaucoup de dossiers ont jamais été "supprimé", de sorte que les totaux de près à ce qui était prévu et personne n'a remarqué).

Enfin, un doux supprimer va travailler sur une table avec des clés artificielles, mais aussi, potentiellement, ne fonctionne pas sur une table avec une clé primaire (par exemple, vous "effacer" quelqu'un à partir d'une table assortie, par Numéro de Sécurité Sociale - que faites-vous quand vous avez besoin d'ajouter lui revenir? Merci de ne pas dire "inclure IsDeleted dans un composé clé primaire".).

Dans une revue de la conception, je m'attends à ce que le développeur à démontrer une prise de conscience des coûts et des avantages et de présenter une excellente raison pour faire du soft supprime de cette manière. "Pourquoi ne pas le faire?" n'est pas une excellente raison.

93voto

Robert Harvey Points 103562

Il n’est jamais une mauvaise idée pour éviter la perte de données potentielle.

J’ai toujours soft-SUPPR. Dans les cas où la base de données doit être nettoyée d’un ou plusieurs enregistrements, j’emploie généralement soit un processus en deux étapes de suppression douce et puis vider une « corbeille » de dossiers ou d’une approche de gestion de document-style où documents dossiers peuvent être vieillies, et alors passer par un processus d’approbation avant suppression dur.

32voto

devuxer Points 15633

Cela dépend des circonstances. J'ai pu voir des situations où vous êtes légalement tenu de vraiment supprimer quelque chose. Peut-être quelqu'un a demandé à ce que leur numéro de sécurité sociale soit définitivement supprimé de votre système. Ou peut-être vous avez une copie de l'enregistrement que vous souhaitez consolider en un seul enregistrement. En gardant le double de traîner avec un drapeau supprimé peut ne pas être avantageux.

Il y a aussi une technique inconvénient: Vous ne pouvez pas faire les suppressions en cascade, ce qui automatiquement effacer toute référence à des données supprimées afin de prévenir des violations de clé étrangères. Ce n'est pas forcément un gros problème, mais c'est quelque chose à garder à l'esprit.

Sinon, je pense que c'est une bonne idée.

24voto

Josh Smeaton Points 18165

Si vous allez utiliser suppression douce, c’est une bonne idée d’avoir un champ de deleted_date, au lieu d’un champ is_deleted. Vous obtenez un beau morceau de données supplémentaires au lieu de simplement le champ de bits.

20voto

xandy Points 13480

Un des problèmes majeurs pour supprimer doux est que ces données non désirées seront potentiellement affecte les performances de la db. Il y a plusieurs années, un de mes Client m’a demandé de faire supprimer doux sur tous les éléments de base de données, que ma solution est de déplacer tous « » éléments supprimés pour un backup de la table, au lieu de laisser aux tables en cours d’exécution actuels.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X