Les meilleures pratiques pour la suppression des données relatives à la résiliation du compte utilisateur

StackOverflow https://stackoverflow.com/questions/693725

  •  22-08-2019
  •  | 
  •  

Question

Sur un site qui a une part équitable du contenu généré par les utilisateurs, tels que les discussions du forum, commentaires de blog, des articles soumis, messagerie privée et publique, les profils utilisateur, etc; quelle est la meilleure pratique pour autant que ce qu'il faut faire avec les données générées par l'utilisateur si un utilisateur met fin à leur compte?

Je ne demande pas des conseils juridiques et je ne considère pas cela comme une question juridique tant comme une question de trouver un équilibre entre l'utilisateur, d'autres utilisateurs, et le site parce conditions d'utilisation peuvent être établis après équilibre est atteint. devraient être considérés comme certains des scénarios suivants lorsqu'un utilisateur supprime son compte:

  • Messages privés entre utilisateurs - la piste de conversation devrait être supprimé? Si oui, comment expliquez-vous pour les cas de harcèlement juridique où la preuve est nécessaire?
  • questions ou réponses Forum - Si le l'utilisateur a posé une question, si le fil de discussion est supprimé? Si ils répondre à une question, si la réponse supprimer?

Je pose cette question car je suis la mise en œuvre des comptes d'utilisateurs dans un CMS. Je sais que Facebook a récemment couru dans la difficulté de avec leurs changements dans leurs conditions d'utilisation, mais comment conciliez-vous le désir de supprimer les besoins et les investissements des autres utilisateurs qui ont aussi participé?

Était-ce utile?

La solution

D'une manière générale avec les bases de données que vous supprimez rarement quoi que ce soit. Vous pouvez le marquer comme supprimé mais d'une manière générale, vous conservez dans votre base de données au moins pendant un certain temps.

Il y a plusieurs raisons à cela. Certains d'entre eux sont légaux. Vous pouvez avoir des exigences ot conserver les données pour une période donnée. Certains d'entre eux sont d'ordre technique. Parfois, il est juste une sauvegarde. Vous devrez peut-être restaurer les informations. L'utilisateur peut demander leur compte réouverture ou il peut avoir été bloqué en raison de spamming mais c'était parce que le compte avait été compromis et a été restauré.

Les anciennes données peuvent être supprimés ou archivés mais cela peut prendre des mois, voire des années.

Personnellement, je viens de donner des données pertinentes une colonne d'état (par exemple 1 = actif, 0 = supprimé), puis il suffit de changer l'état plutôt que de le supprimer 99% du temps.

L'intégrité des données est une autre question ici. Permettez-moi de vous donner un exemple.

Supposons que vous avez deux entités:

User: id, nick, name, email
Message: id, sender_id, receiver_id, subject, body

Vous voulez supprimer un utilisateur particulier. Que faites-vous sur les messages qu'ils ont envoyés et reçus? Ces messages apparaissent dans la boîte de réception de quelqu'un d'autre ou envoyé des articles de sorte que vous ne pouvez pas les supprimer. Définissez-vous le champ correspondant dans le message à NULL? Cela ne fait pas beaucoup de sens, soit parce que ce message est venu de (ou aller à) quelqu'un, même si elles ne sont pas plus actifs.

Vous êtes mieux marquer juste que l'utilisateur comme supprimé et les garder autour. Il en fait des situations semblables beaucoup plus facile à traiter.

Vous mentionnez également les discussions du forum et ainsi de suite. Vous ne pouvez pas supprimer les deux (à moins que d'autres raisons de le faire, comme le spam ou d'abus) parce qu'ils sont le contenu qui est lié à d'autres contenus (par exemple des messages du forum qui ont été répondues).

Les seules données que vous pouvez supprimer en toute sécurité et raisonnablement est des données de l'enfant. C'est vraiment la différence entre l'agrégation et la composition. La relation de l'utilisateur et le message ci-dessus est l'agrégation. Un exemple de composition est Maison et la salle. Vous supprimez une maison et toutes les chambres aller. Les chambres ne peuvent exister sans une maison. Cette composition est ou, en termes de relation d'entité, une relation parent-enfant.

Mais vous trouverez plus de cas d'agrégation que la composition (dans mon expérience) si la question devient: qu'est-ce que vous faites avec ces données? Il est vraiment difficile d'effacer toute trace de quelqu'un sans supprimer des choses que vous ne devriez pas. Il suffit de les marquer comme supprimé, verrouillé ou inactif et traiter de cette façon.

Autres conseils

Vous pouvez simplement marquer l'utilisateur comme supprimé et chaque fois que vous afficher tout contenu impliquant que l'utilisateur vous affichez le nom « Ex-utilisateur » ou quelque chose.

Cela protège l'identité des utilisateurs quitté sans détruire votre contenu.

Vous devez garder tout le contenu et l'utilisateur simplement marquer comme supprimé pour que les autres utilisateurs ne seront pas en mesure de voir son profil, le nom d'utilisateur, etc. Ensuite, un autre utilisateur doit être en mesure d'enregistrer le même nom (car il devrait devenir gratuit).

J'ai pensé à ces mêmes problèmes pour un certain temps. Honnêtement, vous ne devriez pas supprimer un fil commencé par un utilisateur-être à supprimer si les autres personnes ont contribué de leur temps et des efforts pour lui. Je me souviens d'un forum il y avait une règle, vous ne pouvez pas supprimer votre fil après quelque peu 11 heures après qu'il a été publié. Je suppose que l'idée est derrière que vous ne pouvez pas prendre votre mot de retour après avoir prononçaient.

Alors, compte serrure mieux mais ne rien en cascade supprimer par rapport à l'utilisateur.

En particulier, afin qu'ils puissent supprimer leur compte, puis enregistrez sous le même nom et commencer à tout recommencer.

scroll top