抱歉如果我的问题看起来太明显但我仍然找不到数据库模型关系之间的逻辑。
ONE TO ONE:
如果我有一个只有一个地址的客户,我必须将外键放在哪里?
我首先想到把它放在顾客的桌子上是个好主意;一列,外键引用地址的id。
因为如果我需要创建一个客户,首先我需要创建一个地址。
但我在互联网上找到了一些例子 ,他们将外键放在地址'表中,指的是客户的ID
ONE TO MANY:
如果客户可以有多个地址,那么同样的问题也适用,在哪个表中,我应该把我的外键放在哪里?
答案 0 :(得分:1)
外键出现在"很多"侧。
例如,如果sales_order
与最多一个customer
相关联,而customer
可以为零,则一个或多个sales_order
然后我们将customer_id
放在sales_order
表中,作为对id
表中(唯一)customer
列的引用。
这意味着我们首先需要向customer
添加一行,然后才能为sales_order
添加customer
。 (外键约束将阻止我们在sales_order
中添加一行,该行的customer_id
列中的值不存在于id
的{{1}}列中。
-
对于一对一关系的特殊情况,我们可以以与一对多相同的方式实现,在外键列上具有额外的UNIQUE约束。它实际上归结为决定关系的哪个方向是强制性的,哪个是可选的。基本上,我们会在哪一个表中添加一行?我们稍后添加行的表将具有引用我们之前添加行的表的外键约束...