首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中一对一与一对多关系的区别

数据库中一对一与一对多关系的区别
EN

Stack Overflow用户
提问于 2011-01-21 03:59:18
回答 8查看 63.1K关注 0票数 19

这可能是一个基本的(愚蠢的)问题,但是当数据库中存在一对一关系时,另一个表有一个外键ID(在本例中)。在一对多关系中,表包含许多外键。

但是数据库不知道这是一对一还是一对多关系,对吗?我在ER-Diagram中建立的关系只是为了在制作实际的表时指出它应该是外键的位置?

我并没有完全掌握关系的概念,尽管我已经阅读了很多关于这方面的教程。

提前谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-01-21 04:05:10

在某种意义上,我们讨论的所有关系对于数据库来说都是未知的,它们是我们为了更好地理解如何设计表而发明的结构。

就一对一和一对多之间的表结构而言,最大的区别在于,在一对一中,可以(但不是必须)具有双向关系,这意味着表A可以在表B中具有外键,而表B可以在表A中具有相关记录的外键。这对于一对多关系是不可能的。

一对一关系将一个表中的一条记录与另一个表中的一条记录相关联。一对多关系将一个表中的一条记录与另一个表中的多条记录相关联。

票数 25
EN

Stack Overflow用户

发布于 2011-01-21 04:04:34

我很难理解真正的问题是什么。

您的分析在很大程度上是正确的,因为如果您有2个表,而table2对表1有一个外键,那么它可以是一对一或多对一。

您的句子“并且在一对多关系中,表包含许多外键。”

“多”端的表仍然包含一个作为外键的列,只是多个行可以有相同的外键值(许多行指向一个父级)。

还要注意的是,您可以将外键放在父表上,放到子表中,而不是相反。通过这种方式,如果您想这样做,您可以防止一对多。还请注意,通过这种方式,多个父级可以共享一个子级,这可能是也可能不是您想要的。

票数 6
EN

Stack Overflow用户

发布于 2011-01-21 04:05:18

要启用一对一关系,您需要向外键添加唯一约束。每个表不可能有两个外键,因为不可能创建记录。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4751923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档