2009-01-28 9 views
1

Quel est le concept de base de données équivalent à "lors de la suppression de l'utilisateur, supprimer tous ses messages"? Et est-ce une bonne chose?Quel est le concept de base de données équivalent à "lors de la suppression de l'utilisateur, supprimer tous ses messages"?

Autre exemple: si votre site Web est un forum de programmation, vous devez rechercher et supprimer les commentaires liés à ce sujet avant de supprimer le sujet.

Cela devrait-il être géré automatiquement dans la couche de base de données?

Répondre

7

Mises à jour en cascade, généralement utilisées conjointement avec des références de clés étrangères. Différents SGBD offrent différents niveaux de soutien. Dans le cas spécifique d'un forum ou d'un site web similaire, je suggère d'utiliser la suppression "soft" - marquer les lignes dans les bases de données comme étant supprimées, ce qui les empêchera d'être affichées ou retournées dans les listes ou les résultats de recherche , mais ne les supprimez pas complètement. Cela facilite la décomposition, etc. pour contrer une modération médiocre ou biaisée. En outre, je suggère que supprimer automatiquement les messages d'un utilisateur lorsque vous supprimez son compte d'utilisateur ne peut pas être le meilleur comportement dans tous les cas - certainement, lorsqu'il s'agit de comptes troll/spam, vous pouvez supprimer les messages indésirables , mais vous ne voulez pas nécessairement faire sauter toutes les informations dans d'autres cas, notamment en ce qui provoque des problèmes avec des références brisées (par exemple des références externes, réticulants d'autres postes, etc.)

11

cascade supprime

J'hésiterais à recommander la suppression réelle - au lieu d'utiliser une suppression douce qui marque un enregistrement comme supprimé - dans ce cas, vous pourriez utiliser des mises à jour en cascade (ou non, puisque le le sujet inal a déjà été marqué comme supprimé).

-1

Je ne sais pas si c'est ce que vous vouliez savoir, mais dans MySQL, le type de chose (je pense) que vous posez à propos de est appelé un déclencheur. C'est essentiellement une instruction SQL que vous associez à une table et une action sur cette table; Par exemple, vous pouvez définir une instruction qui s'exécutera chaque fois que l'enregistrement d'un utilisateur est supprimé, ce qui supprimera tous les commentaires/messages/tout ce qui est associé à cet utilisateur.

voir http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html et des liens qui y sont (ce qui est pour MySQL, bien sûr ... d'autres blocs de données peut varier)

0

La réponse à votre question est en cascade supprime. Pour l'enregistrement, je hate suppression de l'utilisateur en tant que fonction de forum. Si les gens veulent partir, super ... Je veux voir l'histoire de ce qu'ils ont fait pendant qu'ils étaient là.

+0

Des problèmes de confidentialité et de protection des données peuvent empêcher un site de conserver ces données. Pour ma part, j'espère que toute information personnelle fournie sera au moins anonymisée si je ferme un compte sur un site. – Kev

+0

@Kev, si vous êtes inquiet, au sujet de la vie privée, peut-être vous ne devriez pas créer le compte ou poster sur le site en premier lieu. – Zoredache

+0

+1 (s'il me restait des votes) – Rob

Questions connexes