gpt4 book ai didi

mysql - 在 RDBMS 中标记已删除条目的更好方法

转载 作者:行者123 更新时间:2023-11-30 00:40:18 24 4
gpt4 key购买 nike

即使用户从前端删除了某些实体,我也必须在 RDBMS 中保留实体的记录。假设我有一个用户表,其中每个用户都有一个唯一的电子邮件。现在假设名为 name1 的用户有一封电子邮件 email1。现在,该用户记录已从前端删除,并且有人尝试使用 name2 和电子邮件 email1 创建用户。这将违反 email 列上的唯一约束,但我仍然必须将该记录保留在该表中,因此我的表中有一个名为 status 的列,其默认值为1。现在我对电子邮件和状态有一个独特的约束。每当有人删除用户时,我都会将状态增加 1。但是,如果电子邮件 email1 的用户记录被删除两次,就会出现问题。在这种情况下,我将拥有 2 条状态为 2 的用户记录。所以这个方法失败了。另一种方法是将已删除的记录移动到没有任何排序约束的不同表中。但是使用这种方法,我需要为每个表提供一个额外的表,我需要跟踪已删除的条目。所以我觉得这很愚蠢。还有其他方法可以解决这个问题吗?

最佳答案

我建议使用时间戳列而不是数字来存储删除状态,因为时间信息通常也是必要的。它被称为时间模型,通常它使用两个时间戳来定义有效性间隔 http://en.wikipedia.org/wiki/Temporal_database anchor 模型通过特殊概念扩展了该模型: anchor 、层、结、属性http://en.wikipedia.org/wiki/Anchor_Modeling实际上,所有时态模型在常规 RDBMS 实现中都存在许多问题,这个问题在 SQL 2012 中得到解决,但同时并未广泛实现,并且 RDBMS 供应商提供了非常不同的解决方案,即更改数据捕获或闪回。

关于mysql - 在 RDBMS 中标记已删除条目的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21825832/

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