在拥有相当一部分用户生成内容的网站上,例如论坛主题、博客评论、提交的文章、私有(private)和公共(public)消息、用户资料等;如果用户终止其帐户,如何处理用户生成的数据的最佳做法是什么?
我不是在寻求法律建议,我也不认为这是一个法律问题,而是在用户、其他用户和网站之间取得平衡的问题,因为可以在达到平衡后制定使用条款.当用户删除其帐户时,应考虑以下一些情况:
对话轨迹应该是
删除?如果是这样,你如何记账
对于合法的骚扰案件
需要证据吗?
用户问了一个问题,应该
整个线程被删除?如果他们
回答一个问题,应该回答
被删除?
我在将用户帐户实现到 CMS 时问这个问题。我知道 Facebook 最近遇到了 trouble随着他们使用条款的变化,但您如何平衡删除的愿望与其他参与的用户的需求和投资?
最佳答案
一般来说,对于数据库,您很少删除任何内容。您可以将其标记为已删除,但一般来说,您至少会在数据库中保留一段时间。
这件事情是由很多原因导致的。其中一些是合法的。您可能需要在给定期间保留数据。其中一些是技术性的。有时它只是一种保障。您可能需要恢复信息。用户可能会要求重新打开他们的帐户,或者它可能由于垃圾邮件而被锁定,但那是因为该帐户已被盗用并且现在已经恢复。
旧数据可能会被删除或存档,但这可能需要几个月甚至几年的时间。
就我个人而言,我只是给相关数据一个状态列(例如 1 = 事件,0 = 已删除),然后在 99% 的时间里只更改状态而不是删除它。
数据完整性是这里的另一个问题。让我给你举个例子。
假设您有两个实体:
User: id, nick, name, email
Message: id, sender_id, receiver_id, subject, body
您要删除特定用户。您如何处理他们发送和接收的消息?这些消息将出现在其他人的收件箱或已发送的项目中,因此您无法删除它们。您是否将 Message 中的相关字段设置为 NULL?这也没有多大意义,因为该消息确实来自(或去往)某人,即使他们不再活跃。
您最好将该用户标记为已删除并保留它们。它使这种情况和类似情况更容易处理。
您还提到了论坛主题等。您也不能删除这些(除非有其他原因,例如垃圾邮件或滥用),因为它们是与其他内容相关的内容(例如已回复的论坛消息)。
您可以安全合理地删除的唯一数据是子数据。这确实是聚合和组合之间的区别。上面的用户和消息关系是聚合。组合的一个例子是房子和房间。你删除一个房子,所有的房间都去。没有房子,房间就不能存在。这是组合,或者,在实体关系术语中,是父子关系。
但是你会发现聚合的实例比组合的多(根据我的经验),所以问题就变成了:你如何处理这些数据?不删除不应该删除的东西,真的很难抹去某人的所有痕迹。只需将它们标记为已删除、锁定或非事件状态并以这种方式处理即可。
关于user-accounts - 在用户帐户终止时删除数据的最佳做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/693725/