gpt4 book ai didi

mysql - 在数据库中的一对一或一对多关系中,哪个表必须具有外键?

转载 作者:行者123 更新时间:2023-11-29 10:26:35 25 4
gpt4 key购买 nike

抱歉,如果我的问题看起来太明显,但我仍然找不到数据库模型关系之间的逻辑。

一对一:

如果我的客户只有一个地址,我必须将外键放在哪里?

我一开始觉得把它放在顾客的 table 上是个好主意;一列带有引用地址 ID 的外键。

因为如果我需要创建客户,首先我需要创建一个地址。

custfk

但是我在互联网上找到了一些例子,他们在地址表中放置一个外键,引用客户的 ID

addressfk

一对多:

如果客户可以有多个地址,同样的问题也适用,我应该将外键放在哪个表中?

最佳答案

外键位于“多”侧。

例如,如果 sales_order最多与一个 customer 关联,以及 customer可以有零个、一个或多个 sales_order

然后我们输入customer_idsales_order表,作为对(唯一)id的引用customer 中的专栏表。

这意味着我们首先需要向 customer 添加一行在我们可以添加 sales_order 之前为此customer 。 (外键约束将阻止我们在 sales_order 中添加一行,该行的 customer_id 列中的值不存在于 idcustomer 列中。

--

对于一对一关系的特殊情况,我们可以采用与一对多关系相同的方式来实现,并在外键列上附加一个 UNIQUE 约束。这实际上取决于决定关系的哪个方向是强制性的,哪个是可选的。基本上,我们首先要向哪个表添加一行?我们稍后添加行的表将具有引用我们之前添加行的表的外键约束...

关于mysql - 在数据库中的一对一或一对多关系中,哪个表必须具有外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48177175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com