Bonne pratiques suppression de données

Mammouth du PHP | 568 Messages

15 avr. 2011, 13:38

Salut à tous,

J'aimerais savoir de quelles façon vous gérer la suppression de données??

Physiquement, virtuellement (tag de la donnée à l'état supprimé)?

Dans la plupart de mes applications je supprime physiquement les données et cela peut poser problème lorsque qu'une donnée fait référence à une autre qui à été supprimé.

En attente de vous lire.

Mammouth du PHP | 672 Messages

15 avr. 2011, 13:56

Bonjour.

Ca dépend :mrgreen:

Si tu estimes qu'on peut avoir besoin d'une donnée supprimée, ça peut être intéressant de la conserver - et donc de juste la flagger.
Par exemple, pour de la facturation, si tu "supprimes" un article tu peux avoir besoin de le conserver, histoire de pouvoir ressortir des vieilles factures correctement.
Mais dans le cas général, on peut la supprimer purement et simplement.

Après, pour le problème de la gestion en cas de référence ailleurs, c'est (normalement) parfaitement géré par le SGBD, à coup de FOREIGN KEYS et de ON DELETE (SET NULL |CASCADE)

devlop78
Invité n'ayant pas de compte PHPfrance

16 avr. 2011, 01:45

Oui, la suppression n'est pas toujours une bonne chose. Par exemple, dans le cadre d'une application de suivi de commandes, tu as des utilisateurs, et des commandes, pour faire simple. Si tu supprimes l'utilisateur, que faire ? Supprimer les commandes ? Impensable ... Tu perdrais toute information pour les suivre, et pire, cela nuirais à la cohérence globale du service. Mettre NULL sur l'utilisateurs ? Même problème. Donc, le mieux ici est tout simplement de "désactiver" l'utilisateur, donc de bien voir sa présence dans les jeux de résultats, mais ne pas lui permettre de se connecter, ne pas l'afficher dans certaines listes (ex: destiner la commande à), etc. Après, c'est vraiment une question de réflexion sur mesure.

Eléphant du PHP | 71 Messages

16 avr. 2011, 11:41

Moi je mets simplement une variable qui vaut 1 ou 0. Et donc si la variable vaut 0, le message concerné s'affiche, et si il vaut 1, il ne s'affiche pas.
Tout simplement ^^

Et, concernant les membres, j'ai une autre table, "ban", et si le membre est dedans, lorsqu'il se connecte, il voit pourquoi et pendant combien de temps il est banni.