Mysql 在数据库中的一对一或一对多关系中,哪个表必须具有外键?
很抱歉,如果我的问题看起来太明显,但我仍然找不到数据库模型的关系之间的逻辑 一对一: 如果我的客户只有一个地址,我必须将外键放在哪里 我首先认为把它放在顾客桌上是个好主意;一列,外键引用地址的id 因为如果我需要创建一个客户,首先我需要创建一个地址 但我在网上找到了一些例子 ,他们将外键放在地址表中,引用客户的id 一对多:Mysql 在数据库中的一对一或一对多关系中,哪个表必须具有外键?,mysql,database,foreign-keys,relational-database,erd,Mysql,Database,Foreign Keys,Relational Database,Erd,很抱歉,如果我的问题看起来太明显,但我仍然找不到数据库模型的关系之间的逻辑 一对一: 如果我的客户只有一个地址,我必须将外键放在哪里 我首先认为把它放在顾客桌上是个好主意;一列,外键引用地址的id 因为如果我需要创建一个客户,首先我需要创建一个地址 但我在网上找到了一些例子 ,他们将外键放在地址表中,引用客户的id 一对多: 如果客户可以有多个地址,那么同样的问题也会出现,在哪个表中,我应该放置外键?外键位于“多”侧 例如,如果一个销售订单最多与一个客户关联,并且一个客户可以没有,则一个或多
如果客户可以有多个地址,那么同样的问题也会出现,在哪个表中,我应该放置外键?外键位于“多”侧 例如,如果一个
销售订单
最多与一个客户
关联,并且一个客户
可以没有,则一个或多个销售订单
然后我们将customer\u id
放在sales\u order
表中,作为对customer
表中(唯一的)id
列的引用
这意味着我们首先需要在客户
中添加一行,然后才能为该客户
添加销售订单
。(外键约束将阻止我们在sales\u order
中添加一行,该行在customer\u id
列中的值在customer
的id
列中不存在
--
对于一对一关系的特殊情况,我们可以采用与一对多相同的方式来实现它,在外键列上增加一个唯一的约束。这实际上可以归结为决定关系的哪个方向是强制的,哪个方向是可选的。基本上,我们将首先向哪个表添加一行?在其中添加行的表d行之后将具有外键约束,该约束引用了我们之前添加的一行的表…第一个[一对一]更像是一种样式(当然取决于需求)第二,你需要知道谁拥有谁你对own的意思是什么?我的意思是客户有一个地址…让我们举一个例子,你有3套房子,房子拥有你或你拥有房子?取决于你的答案,然后父母id代替孩子。嗯,好的,我明白你的想法,谢谢manIt可以补充说,在他的特殊情况下,地址可以随客户一起提供,至少我们没有保留地址的历史记录