关于数据逻辑删除方式的讨论

紫如风 2017-11-01 10:08:29
对于数据删除一般来说有很多采用数据库表增加一个delflag 来表是否删除,然而这样操作无疑会有弊端,那就是每次查找的话都得在条件中使用delfllag ,这样使得开发起来要兼顾这一方面,而且数据量大的话无疑会降低数据查询的效率,
还有一种设计模式就是 另外新建一个表 用来存储被删除的信息,比如我们可以建立一个触发器 或者是写一个存储过程,但是这样,这个还可以设计成一个审计日志的表结构,这样的话可对系统操作记录可以查出日志,有人误删数据可以责任到人,但是听说这样也有弊端,如果删除数据会有大量的数据库碎片 ,不知是否还有其他的弊端呢?

不知有哪位大神介绍下载什么情况下使用哪种设计模式或者是有更好的设计方案?
...全文
966 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rotel-刘志东 2017-11-07
  • 打赏
  • 举报
回复
大表还是建议分区表或历史表处理
卖水果的net 2017-11-06
  • 打赏
  • 举报
回复
如果是数据字典的数据,建议留着,并且使用delflag 标记删除。 对历史数据查询是有用的。 如果要删的数据本身就是一张大表,建议移动到历史表,或做表分区。
minsic78 2017-11-01
  • 打赏
  • 举报
回复
既然删除了,还留着干嘛?既然还要查,那么修改标志位可以的啊,觉得怕数据量大了影响查询,你换一张表存这些数据不仅也有这个问题,还有更多问题:因为即使与原表放一起,也还可以分区的,而要是放到另外一张表,无论是程序来完成还是触发器来完成,都是额外的开销。
碧水幽幽泉 2017-11-01
  • 打赏
  • 举报
回复
删除方式是根据需求和应用而定的。 应用和需求不同,删除的方式也不同。 常见的删除策略有: 1.分区删除 2.insert历史表,truncate原表 3.作某种特殊操作时,触发删除 4.其他删除方式 ........等等!

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧