欢迎光临

木子屋

标题: 数据到底删还是不删

作者: dnawo

日期: 2011-04-11 08:25 PM

分类: Web编程

内容: 前记
因为生活（钱）所迫，转行（做苹果配件相关做电子产品）已经快半年了，转行后，收入确实高了不少，生活也确实滋润了许多，不过我常常还念自己的程序员生涯，怀念当初对技术如饥似渴的狂热追求的日子，让人觉得无比充实；怀念当初只为解决一个功能、一个算法、一个bug甚至是帮别人解决一个问题而通宵达旦废寝忘食，让人觉得热血沸腾，也正是因为这个怀念，所以我一直保持潜伏于博客园，一直保持学习，忙里偷闲偶尔还会写几个小桌面工具，为手中IPhone写个应用程序，偶尔也参与和现在还在搞开发的朋友讨论一些技术问题。
正文
前几天一个朋友问我数据库的数据用delete误删了能恢复吗？因为他们公司维护一个运行已久的项目，在测试时将delete的where的参数写错了，使所以删除了一些重要的数据。因为备份文件过旧，日志文件破坏了，所以最终还是没有成功恢复。（顺便在此寻找能解决此问题的高手）
由此我不禁想问过期的数据为什么要删除呢？
假如要删除离职员工信息，那是不是说该员工曾经在公司的所以贡献和成绩都要一起抹掉呢？
再如公司要删除某种停产产品，那是不是说所有包含了该产品的订单都要一并删除呢？再级联下去，这些订单对应的所有客户是不是也该删除？这么一步步删下去，那公司的损失不言而喻。
员工不是被删除的，是被“解雇”的。
产品不是被删除的，是被“停产”的。
订单不是被删除的，是被“取消”的。
职位不是被删除的，是被“填补”的。
在上面这些例子中，我们的着眼点应该放在用户希望完成的任务上，而非发生在某个实体身上的技术动作。几乎在所有的情况下，需要考虑的实体总不止一个。
为了代替IsDeleted标志，我们可以用一个代表相关数据状态的字段：有效、停用、取消、弃置等等。用户可以借助这样一个状态字段回顾过去的数据，作为决策的依据。
删除数据除了破坏数据一致性，还有其它负面的后果。我们把所有数据都留在数据库里：“能不删除。就不删除。”。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.988 ms

返回

标题: 数据到底删还是不删

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.988 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 1.035 ms

返回