【问题标题】:Soft Delete VS Hard Delete软删除 VS 硬删除
【发布时间】:2011-12-26 06:51:06
【问题描述】:

我正在构建一个系统,该系统将使用基于评论的票务系统。我想就将用户标记为已删除或完全删除记录的想法获得一些意见。

理想情况下,我希望系统没有旧帐户,但同时通过删除用户,票务系统中的评论可能没有意义。

有没有人想出解决此类问题的方法。到目前为止我的想法:

  1. 删除用户帐户、cmets 和所有其他相关数据。
  2. 将用户标记为已删除并在他们再次订阅时创建一个全新的帐户。
  3. 将用户标记为已删除,但如果用户要尝试再次订阅,请更新并取消标记为已删除,而不是添加新用户。
  4. 仅删除用户帐户。然后在获取 cmets 等时检查关联的 id,如果未找到结果,则显示带有消息“用户帐户已被删除”的评论。

你怎么看?

【问题讨论】:

  • 此处允许投放广告吗?我觉得不合适。
  • -1 : 其他软件请不要插件
  • 感谢 cmets,我想我会选择选项 3。

标签: php mysql database-design user-experience


【解决方案1】:

我会说第三个选项是最好的选择

我的理由是存储在数据库中的任何票证都应在数据库的生命周期内保留,如果您尝试从数据库中删除用户,您将删除该用户对数据库中任何票证的引用。

(如果数据库允许您删除它,因为用户的 id 将链接到他/她可能创建的任何票证)

当该用户在票务系统中创建新帐户时,他可能在几个月前创建的票证已经消失,现在可能已由 null 创建。

【讨论】:

  • 被删除的用户应该只能登录(再次激活他的帐户)。如果您允许一个人注册为已删除的用户,您可能会遇到身份被盗的问题。但是,如果您允许已删除的用户重新登录,那么允许用户删除他们的帐户是没有用的...
  • 是的,但您没有删除他们的帐户...为什么要强迫他们重新注册...允许他们使用现有的登录详细信息
  • 没错!那么,已删除/停用的用户和活跃用户之间有什么区别?他们都可以登录!这就是我的意思。
  • 如果我除了在数据库中设置一个标志之外什么都不做,那么停用的意义何在?
  • 这个系统略有不同。用户不能自己注册或删除自己。相反,系统有管理员可以邀请用户参与项目等。
【解决方案2】:

我总是使用最后一种解决方案:仅删除用户帐户,如果发布者的帐户不再存在,则显示“帐户已删除”消息。如果您不允许用户更改他们的用户名,您还可以保存发布者的用户名(除了他的 ID)并在用户删除他/她的帐户时将其显示为纯文本,如果用户仍处于活动状态,则显示为链接。

【讨论】:

  • IMO,您的 always 选项是 4 个中最差的
  • 数据库的全部意义在于存储资料。如果您有一个用户向您的数据库发送垃圾邮件并且您不断删除用户帐户,那么您将很难追踪到谁让您感到悲伤。
  • 那么,您会建议软删除帐户吗?
  • 是的,因为这样可以保留审计跟踪,这有时可能是一种宝贵的资产,如果您担心性能,您可以随时将用户帐户数据移动到并行表中,它不会减慢您的查询速度。
【解决方案3】:

如果您使用FOREIGN KEY 代表用户 评论关系,则您无法在不删除评论或将评论的关联用户更新为NULL 或更新为指向一些“已删除用户”的虚假用户帐户(在任何一种情况下,都会丢失有关发布评论的用户的信息)。

【讨论】:

  • 你可以,只需添加一个on delete set null 或类似的子句。
  • 确实如此,但我的意思是你会失去与用户的关系。如果您希望在用户帐户重新出现时记住这种关系,那么它就不会发生。
【解决方案4】:

我编写的票务系统基本上是第 3 点。其他任何事情都会破坏您需要保留的任何审计跟踪。

如果您需要清除旧的东西,一种方法是设置清除旧票。然后,当一个帐户的所有相关工单都消失时,您可以删除该帐户。

【讨论】:

    【解决方案5】:

    这真的取决于你的用例。
    就个人而言,我永远不会从数据库中完全删除用户帐户之类的东西。

    所以选项 1 已失效。 (但那只是我)
    选项 2 的问题是,您将有很多悬空的用户帐户。
    选项 3 看起来是最佳选项 -cough- 审计跟踪 -cough-

    选项 4 自找麻烦,您有一个指向另一个表的链接,但该数据已被删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 2018-03-30
      • 2017-03-24
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多