这可能是一个基本的(愚蠢的)问题,但是当数据库中存在一对一关系时,另一个表有一个外键ID(在本例中)。在一对多关系中,表包含许多外键。
但是数据库不知道这是一对一还是一对多关系,对吗?我在ER-Diagram中建立的关系只是为了在制作实际的表时指出它应该是外键的位置?
我并没有完全掌握关系的概念,尽管我已经阅读了很多关于这方面的教程。
提前谢谢。
发布于 2011-01-21 04:05:10
在某种意义上,我们讨论的所有关系对于数据库来说都是未知的,它们是我们为了更好地理解如何设计表而发明的结构。
就一对一和一对多之间的表结构而言,最大的区别在于,在一对一中,可以(但不是必须)具有双向关系,这意味着表A可以在表B中具有外键,而表B可以在表A中具有相关记录的外键。这对于一对多关系是不可能的。
一对一关系将一个表中的一条记录与另一个表中的一条记录相关联。一对多关系将一个表中的一条记录与另一个表中的多条记录相关联。
发布于 2011-01-21 04:04:34
我很难理解真正的问题是什么。
您的分析在很大程度上是正确的,因为如果您有2个表,而table2对表1有一个外键,那么它可以是一对一或多对一。
您的句子“并且在一对多关系中,表包含许多外键。”
“多”端的表仍然包含一个作为外键的列,只是多个行可以有相同的外键值(许多行指向一个父级)。
还要注意的是,您可以将外键放在父表上,放到子表中,而不是相反。通过这种方式,如果您想这样做,您可以防止一对多。还请注意,通过这种方式,多个父级可以共享一个子级,这可能是也可能不是您想要的。
发布于 2011-01-21 04:05:18
要启用一对一关系,您需要向外键添加唯一约束。每个表不可能有两个外键,因为不可能创建记录。
https://stackoverflow.com/questions/4751923
复制相似问题