繁体   English   中英

数据库中的一对一关系

[英]one-to-one relationship in database

假设我有一个表users ,带有PK id_user

我还在表users和表employer之间建立了识别关系。 我可以在表employer使用PK id_user作为外键,也可以在此表中使用PK(具有唯一约束)?

在这种情况下,雇主只有一个工人,一个工人只有一个雇主。

简短回答:是的。 当外键也是子表的主键时,它会将其强制为一对一。

更长的答案:根据我的经验,我每次制作的每1对1都会被扩展为1对多或多对多,因为用户的要求可以更好地理解。 示例:您最终需要有雇主的历史记录,因此突然间您会有多对多的人员和有效日期的雇主。

在发生这种情况之后,我做了一点,深入研究为什么1对1似乎有意义,并且总是发现它没有。 为了避免一对一的表格,我为自己制定了一个经验法则,因为它们通常表明对要求的理解不完整。

主键是特殊的唯一键。 在这种情况下,我不会将雇员表中的工人联系起来,因为通常雇主有一个以上的工人。 如果你完全确定它是一对一的关系,我不明白为什么你使用2个表而不是一个表。 意思是,将雇主字段添加到工作表。 真正的一对一关系是例如电话号码或电子邮件地址,并且通常它们与所有者一起存储,而不是存储在单独的表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM