Foxtable(狐表)用户栏目专家坐堂 → [讨论]论伪删除的实现意义


  共有15231人关注过本帖树形打印复制链接

主题:[讨论]论伪删除的实现意义

帅哥哟,离线,有人找我吗?
qtcks
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
[讨论]论伪删除的实现意义  发帖心情 Post By:2010/7/30 19:51:00 [显示全部帖子]

伪删除的实现意义
EPPLE_HAX2

关于伪删除的一些看法

做程序的时候,大家主要的动作是增删改,在这其中再加上处理逻辑关系.于是很多时候我们会遇到这样的问题.

比如,我们需要删除一行数据的时候,但这行数据有很多子项,有些人是在数据库中不建立表的主外键关系,有些人是先删除所有子项,再删除我们所想删除的数据.

对于第一种,不建立表主外键关系的处理方法,是最不好的一种处理方法,因为以后,你的所有子项会在子表中累积很多,并且表的数据结构体现的也不完整.

而对于第二种,的确节省了很多空间,但遇到有些问题的时候,比如有很多订单,都购买的是同一种商品,而商品的信息又是通过外键链接ID查看的.这个时候,如果伤处了商品的信息,那么,其对应的所有订单的信息也同样被删除一空,这样肯定是不可取的.

那么下面我们来说说第三种方法,伪删除.

其实伪删除的原理非常简单,就是我们在数据库中,对于所有的表,都有这样一列,比如  列名:YN,数据类型:bit,默认值:True
这一列的作用就是表明此行数据是否在数据库中存在,所有存在的数据,YN列的值都为True,如果你要删除某一行的话,你将此行的YN列改为Falsh则标明为已经删除,但是这样还是会产生很多的不必要的信息存放在数据库中,所以,我们需要对数据库提供一个批量清理YN列为Falsh的数据,并整理其中的逻辑结构的方法,然后定期的,或者指定的时间调用它.

伪删除的好处有以下几点

1,可以在数据库中建立完整的数据结构

2,不用再用户执行具体操作的时候,为整理完善数据结构花费大量的时间和性能.

3,数据删除后还能在一定范围内,起到它应该承担的任务.比如连接查看一些基本信息的时候,不会导致删除后的数据不完整.

4,可以修复错误的操作.

我发现很多人都没有使用伪删除,我已经用了很久了,在这里简单的给大家分享一下

转载

 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/7/30 22:14:00 [显示全部帖子]

有利毕有弊,要看客户对这方面的需求如何。

如果碰到极度不信任的人,需要记录删除记录一定时间。防止恶意删除等要求。

我想,伪删除应该能解决吧。


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/7/31 13:59:00 [显示全部帖子]

在现在的系统里,要删除一条数据,只需要Tables("表名").Current.Delete

然而伪删除的代码几何呢?

作为一个二次开发平台,foxtable,在数据处理方面已经很优秀了。

但,作为一个使用者,二次开发者来讲,是远远不够的。

讨论伪删除的目的在于,该功能,大多数用户是否需要,需要又如何实现。

毕竟一个发展阶段的二次开发平台,不应该为不受欢迎的功能做出妥协。


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/7/31 15:33:00 [显示全部帖子]

不单单只是删除、与加载的问题,还有更深层的问题,唯一约束。又该如何。

我目前考虑的是采用日期字段来作为删除字段。

空内容为正常,删除、停用时获取前日期时间,防止重复。使唯一约束能正常

 


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/7/31 15:39:00 [显示全部帖子]

碰到一个案例,外贸零售领域的。

由于商品更新换代较快,内部采取同一店内码,每一批次的主条码不同。

列表如下

条码        店内码          品名                       售价            停用  

31...        23              B2-3托盘                7.00            是

98...        23              BDK-34托盘            7.10            否

68...        23              KHG-cd9托盘           6.80           否

 系统约束,条码唯一、店内码使用唯一

 

系统需要保留以上3条记录,在商品内部流通环节,输入店内码 23,自动调用     B2-3托盘  商品,

 


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/7/31 16:33:00 [显示全部帖子]

谢谢lxl的帮助。

在实际操作这个方案的时候还是需要考虑很多东西的。

比如说,需要停用商品信息,需要冻结一段时间,防止出现不同的商品,由于工作失误造成融合。

现在是越来越喜欢foxtable了。想的也很多,碰壁的次数也越来越多。呵呵。

前两天看到这样一篇文章,

说,一个程序员为客户开发了一套系统,数据采用直接删除的方式,正常使用8年都没出问题。(是否真的无问题)

     程序员没有了后续收入。一棒子买卖。

 

这样的情况发生后,他就改变策略,改为伪删除,多为客户想点,定期为客户清理数据。

     持续服务,自然有持续的报酬。

 

这里面有几个问题,1、无伪删除;借用苹果鲍威尔的话说,客户是无需求的,我们引领客户需求。

                          2、有伪删除;我们多为客户考虑点,以防万一。否是必要,是否需要。

 

我的工作经历是:数据即生命,重视每一条数据的完整。

04年的时候,有个朋友,开店的。出差2月回来,员工将管家婆的数据部分丢失,最终导致整个经营失败。我深以为戒。

 


 回到顶部
帅哥哟,离线,有人找我吗?
qtcks
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:3926 威望:0 精华:6 注册:2009/3/29 13:25:00
  发帖心情 Post By:2010/8/1 8:19:00 [显示全部帖子]

以下是引用狐狸爸爸在2010-7-31 21:52:00的发言:

世界上没有一个用户,会让你以定期清理垃圾数据作为后续盈利的手段,定期清除垃圾本来就应该是程序的基本功能。

你不可能卖个垃圾桶给用户,却不提供倒空垃圾桶的方法。

提出这种盈利思路的“专家”,脑子可能有问题。

 

图片点击可在新窗口打开查看

 

[此贴子已经被作者于2010-7-31 21:52:45编辑过]

这倒是。看来伪删除本身是没错的,但使用的策略方式需要完善。期待系统帮助下次能更新,


 回到顶部