【问题标题】:How to handle user assets after deletion删除后如何处理用户资产
【发布时间】:2013-08-18 08:17:33
【问题描述】:

与往常一样,如果这个问题已经在某处讨论过,我深表歉意。

我很想知道在删除用户时每个人如何处理相关的表和资产。我目前从事的项目主要是一个项目管理/问题跟踪系统。

当用户被删除时,他们的问题、项目、文件等应该如何处理? 我想到的几个场景是:

  • 删除他们的所有问题、文件、项目等...
  • 将所有内容重新分配给唯一(或众多)管理员用户
  • 锁定用户帐户但保留其所有资产(但如果服务器存储成为问题,我可能需要在某个时候真正删除它们)
  • 将不存在的 user_id (0) 分配给相关表(这似乎在尝试 JOIN 表时会出现问题

我还缺少任何其他可能的考虑因素吗?第三种解决方案现在对我来说是最好的。那些做过大型项目的人,你是如何处理删除用户的?顺便说一句,我正在用 php (yii) 和 mysql 开发项目。

【问题讨论】:

  • 我要么删除(如果存储存在问题),要么保留帐户并在存储不存在问题时锁定它(将其状态设置为已删除添加删除日期,以便您真正需要时清理您清除超过 x 天/月且已删除状态集的帐户)。

标签: php mysql database-design project-management user-management


【解决方案1】:

您应该删除所有其他用户未使用的数据。

由于其他用户受到影响的情况(例如问题或任务),您应该停用用户配置文件。最好的方法是在数据库中添加一个“活动”列,如果用户被删除,则将其设置为 0。在您的系统中,您可以解析此列并显示“已删除用户”之类的内容。

如果没有其他人被分配到任务,最好让他们取消分配,并创建一个类似于池的东西,其他用户可以在其中选择任务或被分配到任务。

与我对项目等其他数据的处理方式相同。

关于文件,如果不再需要它们,删除它们是有意义的。

永远记住,在服务器上拥有更多数据总比丢失重要信息要好!

【讨论】:

    【解决方案2】:

    实际上删除用户和相关对象应该是您做的最后一件事。即使是被删除的用户也是历史和有用的数据。如果它确实变得繁重,您可以随时将其存档。

    按照 Lukas 的建议,改为停用用户。然后,所有请求用户相关对象的查询都应检查“活动”标志以包含/排除用户。当您使用复杂的连接查询来检索数据时,使用该标志可以节省大量工作和处理。

    当涉及到“实际”资产(例如文件)时,它们可能会占用大量空间,但如果它们与非活动用户相关,您也不应该删除它们。如有必要,再次存档。它可能需要在指向该资产的条目中添加一个“存档”标志,这样您就不会在文件不存在时尝试打开它。

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 2019-11-14
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2017-08-07
      • 2020-08-30
      相关资源
      最近更新 更多