首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业应用 >

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

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

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

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

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

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

总结就是:

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



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

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

热点排行