当前位置: 首页 > 面试题库 >

软删除最佳做法(PHP / MySQL)

陈哲
2023-03-14
问题内容

问题

在处理产品和订单的Web应用程序中,我想维护前雇员(用户)与其处理的订单之间的信息和关系。我想维护过时产品与包括这些产品的订单之间的信息和关系。

但是我希望员工能够整理管理界面,例如删除前员工,过时的产品,过时的产品组等。

我正在考虑实施软删除。那么,通常如何做到这一点?

我的即时想法

我的第一个想法是flag_softdeleted在应该可以软删除的每个对象表中粘贴“ TINYINT NOT NULL DEFAULT
0”列。或者使用时间戳代替?

然后,在每个相关的GUI中提供一个“显示已删除”或“取消删除”按钮。单击此按钮,您将在结果中包括软删除的记录。每个删除的记录都有一个“还原”按钮。这有意义吗?

你的想法?

另外,我希望与相关资源建立任何链接。


问题答案:

这就是我的方法。我有一个is_deleted默认为0 的字段WHERE is_deleted = 0。然后查询仅检查。

我尽量避免任何硬删除。有时它们是必需的,但是我将其设为仅管理员使用的功能。这样我们就可以硬删除,但用户不能…

编辑: 实际上,您可以使用它在您的应用程序中具有多个“软删除”“层”。所以每个可能是一个代码

  • 0 ->未删除
  • 1 ->软删除,在管理用户的已删除项目列表中显示
  • 2 ->软删除,除管理员用户外不显示任何其他用户
  • 3 ->仅显示给开发人员。

如果其他两个级别过长,仍然可以使经理和管理员清理已删除列表。而且由于前端代码只检查is_deleted = 0,因此对前端是透明的…



 类似资料:
  • 问题内容: 我一直在学习PHP的语法并进行实践。我来自.NET背景,因此对于页眉和页脚,母版页始终使我很轻松。 到目前为止,我有一个mainHeader.php和mainFooter.php,其中包含我的头菜单和我的页脚html。我创建了一个mainBody.php,在顶部放了 对于页脚,我把 这样做非常好,让我微笑,因为我的页面都很好地融合在一起。mainHeader有我的,而mainFoote

  • 问题内容: 我们正在使我们的网站国际化,允许多种语言。 我研究了php的“ gettext”,但是,如果我理解正确的话,我会发现一个很大的缺陷: 如果我的网页上有“ Hello World”作为静态文本。我可以将字符串作为,使用工具生成po / mo文件。然后,我将文件交给翻译人员进行处理。 几天后,我们想将英文文本更改为“ Hello Small World”吗?是否更改gettext中的值?我

  • 问题内容: 在我一直在构建的应用程序中,我们相当依赖于SharedPreferences,这使我思考了访问SharedPreferences时的最佳实践。例如,许多人说通过此调用可以访问它: 但是,这似乎很危险。如果您有依赖于SharedPreferences的大型应用程序,则可能会有密钥重复,尤其是在使用某些也依赖SharedPreferences的第三方库的情况下。在我看来,更好的使用方法是:

  • 问题内容: 当前,正在讨论具有单个sql连接体系结构的优缺点。 为了详细说明我们正在讨论的是,在应用程序创建时打开一个sql连接,在应用程序关闭或错误关闭该sql连接时。根本不创建另一个连接,而只使用那个与数据库进行通信。 我们想知道社区的想法。 问题答案: 一旦您在不确定的时间内不再需要连接,请立即将其关闭。这样,连接将返回到连接池(如果启用了连接池),并且可以被其他人(重新使用)。 (连接是昂

  • 问题内容: 我整理了一个非常类似于flickr照片流功能的脚本。两个缩略图彼此相邻,当您单击下一个或上一个链接时,下一个(或上一个)两个图像就会滑入其中。 当前,页面加载时将加载两个图像。第一次使用nxt / prv时,随后的两个图像或前两个图像通过ajax加载,第一个图像的ID在url中传递,而两个新图像的HTML通过ajax返回并显示。 足够简单,但是我不得不考虑在连接速度慢或服务器负载重的情

  • 问题内容: 从PHP文件中删除注释的最佳方法是什么? 我想做一些与strip-whitespace()类似的事情-但它也不应该删除换行符。 例如: 我要这个: 成为: (尽管如果在删除注释的地方仍然留有空行,那是不可能的)。 由于可能需要保留嵌入式html,因此这可能是不可能的-那是什么导致了google上出现的问题。 问题答案: 我会使用tokenizer。这是我的解决方案。它应该在PHP 4和