关于伪删除的一些看法
做程序的时候,大家主要的动作是增删改,在这其中再加上处理逻辑关系.于是很多时候我们会遇到这样的问题.
比如,我们需要删除一行数据的时候,但这行数据有很多子项,有些人是在数据库中不建立表的主外键关系,有些人是先删除所有子项,再删除我们所想删除的数据.
对于第一种,不建立表主外键关系的处理方法,是最不好的一种处理方法,因为以后,你的所有子项会在子表中累积很多,并且表的数据结构体现的也不完整.
而对于第二种,的确节省了很多空间,但遇到有些问题的时候,比如有很多订单,都购买的是同一种商品,而商品的信息又是通过外键链接ID查看的.这个时候,如果伤处了商品的信息,那么,其对应的所有订单的信息也同样被删除一空,这样肯定是不可取的.
那么下面我们来说说第三种方法,伪删除.
其实伪删除的原理非常简单,就是我们在数据库中,对于所有的表,都有这样一列,比如 列名:YN,数据类型:bit,默认值:True
这一列的作用就是表明此行数据是否在数据库中存在,所有存在的数据,YN列的值都为True,如果你要删除某一行的话,你将此行的YN列改为Falsh则标明为已经删除,但是这样还是会产生很多的不必要的信息存放在数据库中,所以,我们需要对数据库提供一个批量清理YN列为Falsh的数据,并整理其中的逻辑结构的方法,然后定期的,或者指定的时间调用它.
伪删除的好处有以下几点
1,可以在数据库中建立完整的数据结构
2,不用再用户执行具体操作的时候,为整理完善数据结构花费大量的时间和性能.
3,数据删除后还能在一定范围内,起到它应该承担的任务.比如连接查看一些基本信息的时候,不会导致删除后的数据不完整.
4,可以修复错误的操作.
我发现很多人都没有使用伪删除,我已经用了很久了,在这里简单的给大家分享一下