删除记录的最佳做法是什么? 哪个选项最正确?
例如
有以下情况:
表
---- ----用户
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
答案 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,但摘要是反映现实生活中发生的事情。
例如在现实世界中,订单被“取消”,“退回”但从未真正删除 - 上下文非常重要。