在数据库中的一对一或一对多关系中,table 必须具有外键?
In a one to one or one to many relationship in a database, which table must have the foreign key?
抱歉,如果我的问题看起来太明显了,但我仍然找不到数据库模型关系之间的逻辑。
一对一:
如果我的客户只有一个地址,我必须将外键放在哪里?
我首先想到把它放在客户的 table 上是个好主意;一列带有引用地址 ID 的外键。
因为如果我需要创建一个客户,首先我需要创建一个地址。
但是我在网上找到了一些例子
,他们在地址中放置了一个外键 table,指的是客户的 ID
一对多:
如果客户 可以有多个地址,同样的问题也适用,我应该在其中 table 放置我的外键吗?
外键在 "many" 一侧。
例如,如果 sales_order
最多与一个 customer
关联,并且 customer
可以有零个、一个或多个 sales_order
然后我们将customer_id
放在sales_order
table中,作为对customer
[=38=中(唯一)id
列的引用].
这意味着我们首先需要向 customer
添加一行,然后才能为 customer
添加 sales_order
。 (外键约束将阻止我们在 sales_order
中添加一行,该行在 customer_id
列中的值不存在于 customer
的 id
列中。
--
对于一对一关系的特殊情况,我们可以用与一对多相同的方式来实现,在外键列上附加一个 UNIQUE 约束。这实际上归结为决定关系的哪个方向是强制性的,哪个是可选的。基本上,我们首先向哪个 table 添加一行?我们稍后添加行的 table 将具有引用我们先前添加行的 table 的外键约束...
抱歉,如果我的问题看起来太明显了,但我仍然找不到数据库模型关系之间的逻辑。
一对一:
如果我的客户只有一个地址,我必须将外键放在哪里?
我首先想到把它放在客户的 table 上是个好主意;一列带有引用地址 ID 的外键。
因为如果我需要创建一个客户,首先我需要创建一个地址。
但是我在网上找到了一些例子 ,他们在地址中放置了一个外键 table,指的是客户的 ID
一对多:
如果客户 可以有多个地址,同样的问题也适用,我应该在其中 table 放置我的外键吗?
外键在 "many" 一侧。
例如,如果 sales_order
最多与一个 customer
关联,并且 customer
可以有零个、一个或多个 sales_order
然后我们将customer_id
放在sales_order
table中,作为对customer
[=38=中(唯一)id
列的引用].
这意味着我们首先需要向 customer
添加一行,然后才能为 customer
添加 sales_order
。 (外键约束将阻止我们在 sales_order
中添加一行,该行在 customer_id
列中的值不存在于 customer
的 id
列中。
--
对于一对一关系的特殊情况,我们可以用与一对多相同的方式来实现,在外键列上附加一个 UNIQUE 约束。这实际上归结为决定关系的哪个方向是强制性的,哪个是可选的。基本上,我们首先向哪个 table 添加一行?我们稍后添加行的 table 将具有引用我们先前添加行的 table 的外键约束...