跪求问:SQL一个表的外键关联两个表的主键怎么做?
比如我有一个在职员工表,有一项是主键Employee_ID(比如:1,2,3);还有一个退休员工表,也有一项是主键也叫Employee_ID(比如4,5,6);另外我有一...
比如我有一个在职员工表,有一项是主键Employee_ID(比如:1,2,3);还有一个退休员工表,也有一项是主键也叫Employee_ID(比如4,5,6);另外我有一个企业员工留言表,有一项是还叫作Employee_ID
如何把在职员工表和退休员工表的俩Employee_ID,关联到企业员工留言表? 展开
如何把在职员工表和退休员工表的俩Employee_ID,关联到企业员工留言表? 展开
1个回答
展开全部
数据建模时就有点问题,应该是在职员工和退休员工在一个总员工表‘employee’里,然后有一列‘在职’来区分员工是否在职。
当然分两个表也许是考虑到在职员工和退休员工的列属性不同,那么可以先按照上面说的建一个总表employee,主键还是Employee_ID,但是包括所有员工。然后企业员工留言表里的Emplyee_ID是一个外键(关联到员工总表employee的主键Employee_ID)。
请采纳,谢谢
当然分两个表也许是考虑到在职员工和退休员工的列属性不同,那么可以先按照上面说的建一个总表employee,主键还是Employee_ID,但是包括所有员工。然后企业员工留言表里的Emplyee_ID是一个外键(关联到员工总表employee的主键Employee_ID)。
请采纳,谢谢
更多追问追答
追问
确实是在职员工和退休员工的属性不一样;若合为一张总表,比如工作楼层,退休员工没有这一项会造成很多空格;比如目前职位,退休员工也是空的等等问题。另外总表里面总会有人断断续续离职,这样看表也不方便,在职人员记录中间穿插着离职人员的问题也会出现。
追答
员工号还是唯一的吧?如果是唯一,那么就新建一个总表employee,但是只要员工号和一个‘在职’列作为标记,这样还是能追溯到具体哪个表的哪条记录。
然后企业员工留言表里的Emplyee_ID是一个外键(关联到员工总表employee的主键Employee_ID)。
其实一般数据库设计是宁可有冗余(当然冗余不能太多)也不要分表的,怕看表不方便的话看表查记录时过滤一下‘在职’与否就可以了(excel里都可以过滤),很方便的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询