0 0

为每个表增加一个标记删除的字段好么10

最近在做一个项目,表关系比较复杂,而且以后可能会有很大扩展。我想为每一个表建立一个表征是否可用的字段,“1”为可用,“0”为禁用,默认为“1”,用户在前台所做的“删除”仅能改变此字段的值,真正的删除只能通过后台实现,请问这样做的优缺点是什么?
2008年11月23日 20:11

14个答案 按时间排序 按投票排序

0 0

采纳的答案

因为你上面说到了你们做的东西的表结构比较复杂,那么这点就很明确了。做逻辑删除(设标记)比物理删除要好的多,因为你在多表进行操作的时候一定是有关联的,如果你物理删除了这个字段,在你下次再跑程序的时候,你关联的方法会因为找不到你的这条记录而报错误,这样你的维护起来就很不好维护了。
但是逻辑删除和物理删除也要分情况,如果是末级的记录,经常更新的,为了维护起来方便可以设置成物理删除的,如果是标题类的,或者是菜单中的比较重要的关联表中的记录,那么最好就打上标记,以防以后操作中因没有了关联记录而报错误。
我不知道这些能否帮助你解决问题,但是应该会有一些帮助吧,呵呵!

2008年11月25日 12:27
0 0

还是根据具体的业务需要来确认吧!

2008年11月30日 09:57
0 0

业务问题
如果真需要这么做需要考虑转档

2008年11月26日 10:31
0 0

比方说A表中存在有BID。
你显示A表的时候需要把B表的信息显示出来。
如果你删了你的B表记录,那么你的程序要么是报错,要么是显示为空。这样子的情况做为一些数据记录的表来讲是很好的一件事情。
所以就会有active这种字段的产生。
一般用于数据档案表。

2008年11月26日 10:08
0 0

我项目里面有的业务就是这样做的.用户上传或者发表的内容.一般不会直接删除.就用一个列来做标识.
数据量不大.所以暂没考虑性能问题

2008年11月25日 16:41
0 0

和具体的业务有关吧
我们现在做的系统业务需求就是数据不删除,添加标记位,定期清理

2008年11月24日 09:39
0 0

定期挪到archive里

2008年11月23日 20:11
0 0

这个方法非常好,我发现有不少系统都是这样做的。
LZ的业务逻辑很复杂的话,删除一条记录可能会牵连到很多其他表的修改,这时如果实时操作的话很可能导致数据库并发度下降。 标记删除后可以在晚上运行一个回收数据的任务,这样可以比较好的解决残余数据的问题。

2008年11月23日 20:11
0 0

这个要看业务的,业务是否需要逻辑删除,做某种特殊效果考虑这种方式。
不然你很容易让整个系统都是过期的数据,没有一个表是可以删除数据的。
增大的麻烦性你都可以感到恐怖。
历史数据可以考虑移动到别的表。
在一个万一怕用户删除失误需要恢复,不是还有数据库恢复功能的嘛,不用
自己吭哧吭哧吧

2008年11月23日 20:11
0 0

如果是商业应用的话这种方式是正确的
因为有些数据可能删除后造成不可恢复的后果
所以可以标记一下“删除”,定期(如半年)做archive

2008年11月23日 20:11
0 0

优点:对于数据的恢复性和安全性更好,缺点是数据库里面的冗余会增多吧!

2008年11月23日 20:11
0 0

具体看用户,如果用户很容易出错,那么加个标记是不错的.如果用户一般不会出错,或者明确要删除的,那么就直接删除好了

2008年11月23日 20:11
0 0

补充优点:
数据没有被真正删除 不需要修改索引。 从某种程度上提高效率。

缺点当然是数据增多 需要定期清理。

2008年11月23日 20:11
0 0

优点是数据可以留档,但是缺点是维护性不高,程序变得更加复杂,数据量增大,查询效率降低。

2008年11月23日 20:11

相关推荐

Global site tag (gtag.js) - Google Analytics