【发布时间】:2014-02-17 09:58:38
【问题描述】:
即使用户从前端删除了某些实体,我也必须在我的 RDBMS 中保留实体的记录。假设我有一个用户表,其中每个用户都有一个唯一的电子邮件。现在说名称为name1 的用户有一封电子邮件email1。现在该用户记录已从前端删除,有人尝试使用name2 和电子邮件email1 创建用户。这将违反email 列的唯一约束,但我仍然必须将该记录保留在该表中,因此我的表中有一个名为status 的列,其默认值为1。现在我对email 和status 有一个独特的约束。每当有人删除用户时,我都会将状态增加 1。但是,如果使用电子邮件 email1 的用户记录被删除两次,则会出现问题。在这种情况下,我将有 2 个状态为 2 的用户记录。
所以这个方法失败了。另一种方法是将删除的记录移动到没有任何类型约束的不同表中。但是使用这种方法,我需要为每个需要跟踪已删除条目的表创建一个额外的表。所以我觉得这很愚蠢。有没有其他办法解决这个问题?
【问题讨论】:
-
在您的应用程序中访问电子邮件时检查状态是否=>1,然后认为它已删除
-
@xrcwrn 是的,我可以这样做,但为此我必须阅读。我想在不进行读取的情况下仅使用唯一约束来做到这一点。
标签: mysql postgresql database-design