欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

满足了第三范式后,小弟我遇到了很大麻烦

更新时间: 2014-01-05 02:55:09 责任编辑: Author_N1

 

满足了第三范式后,我遇到了很大麻烦~
3NF要求一个数据库表中不包含已在其它表中已包含的非主关键字信息

比如说 我做了一个工作流引擎,它支撑的业务数据里面有用户A做过的一个审批单据,里面的名字是A的真实姓名,比如:王总。
TABLE FLOW_BUSNESS
  USER_NAME 'A'
  TEXT '同意'
  .
  .
  .
正常情况 当查询这个业务单据时,可以根据FLOW_BUSNESS中的USER_NAME 'A' 去用户表里找到 'A'对应的姓名是王总。

但是假如有一天这个用户删除了,那时候业务单据不就查不到“王总”了么?因为只记录了是USER_NAME 'A'做的审批,而此时'A'和'王总'已经无从对照了!

可能是我对这个问题理解有误,但我确实遇到这个问题!请教各位一般系统中是如何解决这个问题的。

总结就是:

一个系统中如果某个用户离职了,被删除之后他曾经在这个系统中做过的业务都会受到影响。前提是需求中有“删人员注销帐户后,系统要保存这个人曾经做过的工作业务数据”。



--参考方法--
对于正在使用的用户不允许删除,或者是在用户管理加状态,加删除标记,只做逻辑删除不做物理删除
--参考方法--
删除时并不能够真正删除,只是标记一下
管理软件中这种问题很常见,某个人离职了,并不表示这个人做的事情都不存在了
只是可用状态为“可用”,或在职状态为“离职”
--参考方法--
现在的系统,一般都不删除,只是标记一下就可以了

还有,虽然第三泛式是最好的,但有时候可以适当地降低泛式,增加一点冗余,但处理起来就方便的多了,也可以避免你这样的问题,一删除了就没法跑下去了。不过这个是要考虑平衡后来取的。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:55:09
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/16187/
本文WWW.DOC100.NET DOC100.NET版权所有。