最佳做法:删除用户帐户时保留用户的内容数据

时间:2014-01-30 22:10:28

标签: web-applications database-design web-application-design

在帮助台应用程序中,我们存储用户对话,用户帐户以及与这些帐户关联的各种联系信息。

由于典型服务台的性质,即使删除了用户帐户,我们仍然需要保留用户名的核心配置文件数据(否则,会话历史将变得无用)。

我想知道你是否接触过这种类型的设计问题以及你的解决方案是什么。

到目前为止的一些建议......

  • 'Ghosting'用户帐户 - 而不是实际删除它们,将它们保留在只读非功能状态
  • 在会话中静态复制用户名称等内容

3 个答案:

答案 0 :(得分:1)

如果您担心违反与用户关联的表中的外键约束,请向用户添加字段/列以表示用户是否处于活动状态;然后清除该标志而不是删除用户。然后,您可以针对要限制为“活动”用户的任何UI过滤该标记。

如果考虑空间,请按上述方式维护用户记录,但在一段时间后将会话和/或任何其他“旧”数据移动到另一个“存档”数据库。当然,对第二个数据库的连接或其他调用会更慢......但是用户的UI可以通过诸如“读取较旧的对话”之类的东西来提示它们。以同样的方式,例如,Facebook提示您“阅读较旧的故事”,如果有必要,帮助台操作员可以通过“请保持 - 我现在正在检索这些记录”来调整呼叫者。

答案 1 :(得分:0)

我认为在您的特定情况下最好的做法是对数据进行“软删除”,这意味着只需在布尔字段中将帐户标记为已删除,而不是将其从数据库中删除。

答案 2 :(得分:0)

归档数据是归档中的常见做法 不是保留所有旧数据的所有表和关系,而是通常更容易将其作为存档数据库中的静态条目。它还允许更改应用程序,而无需过多关注转换历史数据。