数据库中的一对一关系

时间:2011-05-09 02:57:26

标签: mysql sql database-design data-modeling

假设我有一个表users,其中包含PK id_user

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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