我有两个表,一个是职工表,一个是部门表。
职工表有职工号和部门号两个属性
部门有部门号和经理号两个属性。
显然,经理号应该以职工表的职工号为外键参考,而职工表的部门号应该以部门表的部门号为外键参考。
这么一来就会出现两个表互相为外键参考的矛盾,应该如何解决呢?
女神的闺蜜爱上我2017-06-08 11:05:31
id | 角色名 |
---|---|
1 | 经理 |
2 | 女秘书 |
3 | 搬砖狗 |
id | 角色 | 部门 | 姓名 |
---|---|---|---|
1 | 1 | 1 | 经理 |
2 | 2 | 1 | 小蜜 |
3 | 3 | 1 | 屌丝 |
id | 部门名 |
---|---|
1 | 产业部 |
2 | 事业部 |
3 | 研发部 |
迷茫2017-06-08 11:05:31
“互为外键参考”为什么是矛盾?
如果想新增部门,这个部门经理也是新人,可以先用一个旧职工“充当”经理,待添加成功后再修改掉。比如新增财务部和经理张三:
insert into 部门表 select id=财务部, manager=老王
insert into 职工表 select id=张三, department=财务部
update 部门表 set manager=张三 where id=财务部
随之而来的问题是,当两个表都为空时怎么添加?这时可以先添加一行数据后再补充外键约束。