gpt4 book ai didi

database-design - 重新使用软删除记录

转载 作者:行者123 更新时间:2023-12-02 09:02:28 27 4
gpt4 key购买 nike

如果我有一个表结构是:

code, description, isdeleted

其中 code 是主键。

用户创建了一条记录,然后又删除了它。因为我正在使用软删除,所以 isdeleted 将设置为 true。然后在我的查询中,我将使用 where 子句进行选择 and not isdeleted

现在,如果用户要创建新记录,他们可能会看到代码“ABC”不存在,因此他们会尝试重新创建它。由于 where 子句,select 语句找不到它。但是会出现主键索引错误。

是否应该允许用户重新使用记录?我认为不会,因为软删除的想法是保留对旧数据查询的记录,以便加入“已删除”记录仍然有效。如果允许用户重新使用代码,那么他们可以更改描述,这可能会改变历史数据的 View 。但是,完全阻止他们使用该代码是否过于严厉?

或者我应该使用完全隐藏的主键,然后可以重新使用“代码”字段吗?

最佳答案

我知道很多人认为数据应该是自然的,但是如果您要支持软删除而不打算总是重复使用出现这种情况时的先前记录。

拥有分离的主键将允许您拥有多个具有相同“代码”值的记录,并且它将允许您“取消删除”(否则,为什么要软删除?)一个值而不用担心覆盖某些东西否则。

就我个人而言,我更喜欢 ID 的数字自动递增样式,但也有很多支持 GUID 的人。

关于database-design - 重新使用软删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70123/

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