数据库设计之物理删除与逻辑删除

物理删除存在的问题:

1.历史数据关联不到删除的记录了。

假如A关联了B,如果物理删除了表记录B,那么A关联B的就会查询不到B的信息了。

比如之前查询A详情能查询到关联的B的数据,有一天B删除了,A再次查询详情查询不到关联的B的数据了。

2.级联删除存在问题。

假如需要级联删除,那么删除B就需要先关联A的所有记录,这样是不可行的。

比如删除商品,就需要删除所有关联此商品的订单。

======

思考及总结:

1.要么像hibernate那样,作为外键且被关联的有记录的,校验不让删除B。(感觉业务要判断好多表,也不知道哪个表关联了B。)(回到商品与订单的级联删除问题,这种方式不可取,我要删除某个商品,难不成必须得删除所有关联此商品的订单?)
2.要么B物理删除再加一个历史表。(几乎每个表都会多出一个历史记录表)
3.要么逻辑删除。(增加一个delete_flag标识)

======

 逻辑删除存在的问题:

1.唯一索引。

 2.数据表冗余删除的记录,导致查询缓慢。

posted @   super超人  阅读(265)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2018-04-23 echarts中国地图
点击右上角即可分享
微信分享提示