假设我有一个表users
,其中包含PK id_user
。
我还在表格users
和表格employer
之间建立了识别关系。我可以在表id_user
中使用PK employer
作为外键,也可以在此表中使用PK(具有唯一约束)?
在这种情况下,雇主只有一名工人,而一名工人只有雇主。
答案 0 :(得分:2)
简短回答:是的。当外键也是子表的主键时,它会强制它成为一对一的。
更长的答案:根据我的经验,我每次制作的每1对1后来都会扩展为1对多或多对多,因为用户的要求可以更好地理解。示例:您最终需要有雇主的历史记录,因此突然间您会有多对多的人员和有效日期的雇主。
在发生这种情况之后,我做了一点,深入研究为什么1对1似乎有意义,并且总是发现它没有。为了避免一对一的表格,我为自己制定了一个经验法则,因为它们通常表明对要求的理解不完整。
答案 1 :(得分:0)
主键是特殊的唯一键。在这种情况下,我不会将雇员表中的工人联系起来,因为通常雇主有一个以上的工人。如果你完全确定它是一对一的关系,我不明白为什么你使用2个表而不是一个表。意思是,将雇主字段添加到工作表。真正的一对一关系是例如电话号码或电子邮件地址,通常它们与所有者一起存储,而不是存储在单独的表中。