sql删除相关记录?

时间:2011-11-19 17:05:17

标签: sql recovery

删除记录的最佳做法是什么? 哪个选项最正确?

例如

有以下情况:

  

---- ----用户

     

int usr_id

     

varchar name

     

varchar surname

     

bool deleted_yn

     
     

---受试者 -

     

int subject_id

     

varchar title

     

bool deleted_yn

     
     

--- --- subject_to_user

     

int subject_to_user_id

     

int usr_id

     

int subject_id

     

bool deleted_yn

     

如果我想删除用户或主题,我是否需要删除关系 - subject_to_user?

为什么我要问,因为在工作中有时用户会删除一些信息,然后我们必须恢复这些数据。 目前我们删除了相关数据,但恢复非常困难;

所以我问的是删除的最佳做法是什么? 哪个选项最正确?

我认为删除相关数据是正确的,但这取决于具体情况。

删除那里我的意思是标记deleted_yn true / false

3 个答案:

答案 0 :(得分:3)

最佳做法是不删除任何内容。只需将项目标记为已删除

添加列'IsDeleted',在大多数查询中添加'WHERE IsDeleted = False'

答案 1 :(得分:0)

subject_to_user中的相关数据是如何相关的?使用ID。

如果您从用户和主题中删除但不是subject_to_user,那么是什么告诉您不会创建一个ID已在subject_to_user中的新用户?

想法是删除所有相关数据。如果需要恢复,则可以始终使用另一组名为deleted_user,deleted_subject和deleted_subject_to_user的表。当您从主表中删除时,请转到之前的那些。

答案 2 :(得分:0)

Udi Dahan(我无耻地受到影响的人)写了一篇关于这个主题的优秀博客文章。你可以阅读它here,但摘要是反映现实生活中发生的事情。

例如在现实世界中,订单被“取消”,“退回”但从未真正删除 - 上下文非常重要。