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

Luc*_*uke 15 database database-design

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

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

我并没有完全理解这种关系的想法,尽管我已经阅读了很多有关这方面的教程.

提前致谢.

Zac*_*oom 18

从某种意义上说,我们谈论的所有关系都不为数据库所知,它们是我们为更好地理解如何设计表而发明的结构.

在表结构方面一个-to-one和一个一对多的最大区别是,在一到一个有可能(但不是必要的)有一个双向的关系,这意味着表A可以有一个外键在表B中,表B可以将外键放入表A中的相关记录中.对于一对多关系,这是不可能的.

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


Dan*_*nil 6

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


hvg*_*des 5

我无法理解实际问题是什么。

您的分析在很大程度上是正确的,因为如果您有 2 个表,并且 table2 有一个指向第一个表的外键,则它可以是一对一或多对一。

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

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

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