1

在帮助台应用程序中,我们存储用户对话、用户帐户和链接到这些帐户的各种联系信息。

由于典型帮助台的性质,即使删除了用户帐户,我们仍然需要保留用户姓名的核心个人资料数据(否则,对话历史记录将变得无用)。

我想知道您是否已经处理过此类设计问题以及您的解决方案是什么。

到目前为止的几个建议...

  • “重影”用户帐户 - 不是物理删除它们,而是将它们保持在只读非功能状态
  • 在对话中静态复制用户名等内容
4

3 回答 3

1

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

如果需要考虑空间,请按上述方式维护用户记录,但在一段时间后将对话和/或任何其他“旧”数据移至另一个“存档”数据库。当然,对第二个数据库的加入或额外调用会更慢......但用户的 UI 可以提示他们“阅读较旧的对话?”之类的内容。以同样的方式,例如,Facebook 会提示您“阅读较早的故事”,并且服务台操作员可以在必要时向呼叫者临时安排“请稍等 - 我现在正在检索这些记录”。

于 2014-01-30T22:34:21.057 回答
0

非规范化数据是归档中的常见做法。
与保留所有旧数据的所有表和关系相比,通常更容易将它们全部作为存档数据库中的静态条目。它还允许对应用程序进行更改,而无需过多关心转换历史数据。

于 2014-01-30T22:39:06.467 回答
0

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

于 2014-01-30T22:32:53.940 回答