前记
因为生活(钱)所迫,转行(做苹果配件相关做电子产品)已经快半年了,转行后,收入确实高了不少,生活也确实滋润了许多,不过我常常还念自己的程序员生涯,怀念当初对技术如饥似渴的狂热追求的日子,让人觉得无比充实;怀念当初只为解决一个功能、一个算法、一个bug甚至是帮别人解决一个问题而通宵达旦废寝忘食,让人觉得热血沸腾,也正是因为这个怀念,所以我一直保持潜伏于博客园,一直保持学习,忙里偷闲偶尔还会写几个小桌面工具,为手中IPhone写个应用程序,偶尔也参与和现在还在搞开发的朋友讨论一些技术问题。
正文
前几天一个朋友问我数据库的数据用delete误删了能恢复吗?因为他们公司维护一个运行已久的项目,在测试时将delete的where的参数写错了,使所以删除了一些重要的数据。因为备份文件过旧,日志文件破坏了,所以最终还是没有成功恢复。(顺便在此寻找能解决此问题的高手)
由此我不禁想问过期的数据为什么要删除呢?
假如要删除离职员工信息,那是不是说该员工曾经在公司的所以贡献和成绩都要一起抹掉呢?
再如公司要删除某种停产产品,那是不是说所有包含了该产品的订单都要一并删除呢?再级联下去,这些订单对应的所有客户是不是也该删除?这么一步步删下去,那公司的损失不言而喻。
员工不是被删除的,是被“解雇”的。
产品不是被删除的,是被“停产”的。
订单不是被删除的,是被“取消”的。
职位不是被删除的,是被“填补”的。
在上面这些例子中,我们的着眼点应该放在用户希望完成的任务上,而非发生在某个实体身上的技术动作。几乎在所有的情况下,需要考虑的实体总不止一个。
为了代替IsDeleted标志,我们可以用一个代表相关数据状态的字段:有效、停用、取消、弃置等等。用户可以借助这样一个状态字段回顾过去的数据,作为决策的依据。
删除数据除了破坏数据一致性,还有其它负面的后果。我们把所有数据都留在数据库里:“能不删除。就不删除。”。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验