gpt4 book ai didi

数据库 - 软删除或分离的日志表

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:37 25 4
gpt4 key购买 nike

我正在构建一个具有以下端点的 REST API:

GET /api/v1/categories - Get all categories
DELETE /api/v1/categories/$id - Delete a specific category

当客户端请求所有类别时,服务器必须返回带有 HTTP header Last-Modified 的所有类别。

一旦一个类别被删除,并且客户端请求所有类别的 HTTP header If-Modified-Since 早于删除时间,服务器将返回所有类别,没有被删除的类别,但是HTTP header 显示最后修改时间,即使这个时间是删除时间。

我正在考虑两种实现方法:

  1. 添加一个带有标志的列,指示它是否被删除(软删除);
  2. 创建一个表来记录表的修改。

在第一种方法中,我将在类别表中添加一列,用于指示记录是否已被删除。这样,通过该列和存储最后修改时间戳的列,我可以检查在给定时间戳之后是否发生了任何修改。

在第二种方法中,我将添加一个表来记录任何表中的最后修改。该表的每一行都是系统的任何其他表中发生的最后一次修改。这样,当一个类别被删除时,日志表中包含类别表信息的记录被更新,表明最后一个操作是删除操作的时间戳。这样,当我必须检查特定时间戳后类别表中是否发生任何更改时,我首先检查日志表并决定是否查询类别表。

虽然我以类别为例,但我的 API 的其他资源也会出现此问题,解决方案应以相同的方式用于它们。

你们如何看待所提出的解决此问题的方法?

最佳答案

第一种方法有几个不便之处

  • 您将存储永远不会再次访问的数据最近发生修改
  • 如果你有一些限制(例如。唯一)在你的表上,你将无法创建新记录与“软”删除的相撞

在更一般的情况下,“软”删除很少是一个好主意,通常可以使用 bounded context 来解决。来自领域驱动设计的方法

关于数据库 - 软删除或分离的日志表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com