数据库设计之物理删除与逻辑删除
物理删除存在的问题:
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.数据表冗余删除的记录,导致查询缓慢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2018-04-23 echarts中国地图