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

rbpvctlc  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(463)

抱歉,如果我的问题看起来太明显,但我仍然找不到数据库模型之间的关系的逻辑。
一对一:
如果我的客户只有一个地址,我必须把外键放在哪里?
我首先认为把它放在顾客桌上是个好主意;一列,外键表示地址的id。
因为如果我需要创建一个客户,首先我需要创建一个地址。

但我在互联网上发现了一些例子,他们在地址表中放了一个外键,指的是客户的id

一对多:
同样的问题也适用于一个客户可以有多个地址的情况,我应该把外键放在哪个表中?

d5vmydt9

d5vmydt91#

外键位于“多”侧。
例如,如果 sales_order 最多与一个 customer ,和 customer 可以有零个、一个或多个 sales_order 然后我们把 customer_idsales_order 表,作为引用(唯一) id 中的列 customer table。
这意味着我们首先需要在 customer 在我们可以添加 sales_order 为了这个 customer . (外键约束将阻止我们在中添加行 sales_order 有价值的 customer_id 中不存在的列 idcustomer .

对于一对一关系的特殊情况,我们可以采用与一对多相同的方式来实现,在外键列上增加一个惟一的约束。归根结底,它决定了关系的哪个方向是强制性的,哪个方向是可选的。基本上,我们先在哪个表中添加一行?我们稍后添加行的表将具有外键约束,该约束引用我们先前添加行的表。。。

相关问题