怎样删除主键表的记录却不影响外见表相关内容,比如有2个表,分别为“员工表”和“消费明细表”,关联。
员工表:
ID-----员工姓名
1----- test1
2------test2
消费明细表:
单号--------------------项目--------------服务员工
201401011-----------action1---------------1
201401012-----------action2---------------2
因为员工变动够大,每当有员工离职j时就要对“员工表”相关记录进行删除,但如果我在“员工表”中删除一条记录,那么“消费明细表”对应的记录就会级联删除,或外键设为为null,无论怎样“消费明细表”信息都受损。是否有合适的方法去解决这类问题,消费明细表如何永久保存?一些大型系统是如何做的?
8 回答
MMMHUHU
TA贡献1834条经验 获得超8个赞
一般系统的数据都应该不会物理删除的
都只是一个status而已。
比如你把员工表建一个Status字段,0代表在职,1代表离职。
这样子表数据你都不用动的(当然在离职的时候。你也可以把子表的数据设置为无效:也同样加一个status字段)
梦里花落0921
TA贡献1772条经验 获得超6个赞
1.给员工表加个状态字段,标示 在职 还是 离职 不要做delete操作,只做update操作,你要的"删除"其实改一下状态即可。
2.关键数据库表别搞外键什么的了,用代码逻辑来控制
千巷猫影
TA贡献1829条经验 获得超7个赞
从数据完整性上来讲,“员工表”的记录是不能删除了,这会导致“消费明细表”记录的描述不准确。抽象来说,当主表记录被删除后,从表记录的存在将失去意义。
“消费明细表”记录只是员工产生数据的一种方式,在该员工的工作期间,还会有社保信息、公积金信息和所做的项目信息,以及企业内部流程数据等等。一旦员工被真删,以上所有信息将找不到“操作人”。
在任何系统里,“员工表”的记录都不能被真删,拓宽的讲,进入了审核流程的业务数据也是不能真删的(草稿类型的业务数据可以真删)。
- 8 回答
- 0 关注
- 717 浏览
添加回答
举报
0/150
提交
取消