抱歉,如果我的问题看起来太明显,但我仍然找不到数据库模型之间的关系的逻辑。
一对一:
如果我的客户只有一个地址,我必须把外键放在哪里?
我首先认为把它放在顾客桌上是个好主意;一列,外键表示地址的id。
因为如果我需要创建一个客户,首先我需要创建一个地址。
但我在互联网上发现了一些例子,他们在地址表中放了一个外键,指的是客户的id
一对多:
同样的问题也适用于一个客户可以有多个地址的情况,我应该把外键放在哪个表中?
抱歉,如果我的问题看起来太明显,但我仍然找不到数据库模型之间的关系的逻辑。
一对一:
如果我的客户只有一个地址,我必须把外键放在哪里?
我首先认为把它放在顾客桌上是个好主意;一列,外键表示地址的id。
因为如果我需要创建一个客户,首先我需要创建一个地址。
但我在互联网上发现了一些例子,他们在地址表中放了一个外键,指的是客户的id
一对多:
同样的问题也适用于一个客户可以有多个地址的情况,我应该把外键放在哪个表中?
1条答案
按热度按时间d5vmydt91#
外键位于“多”侧。
例如,如果
sales_order
最多与一个customer
,和customer
可以有零个、一个或多个sales_order
然后我们把customer_id
在sales_order
表,作为引用(唯一)id
中的列customer
table。这意味着我们首先需要在
customer
在我们可以添加sales_order
为了这个customer
. (外键约束将阻止我们在中添加行sales_order
有价值的customer_id
中不存在的列id
列customer
.对于一对一关系的特殊情况,我们可以采用与一对多相同的方式来实现,在外键列上增加一个惟一的约束。归根结底,它决定了关系的哪个方向是强制性的,哪个方向是可选的。基本上,我们先在哪个表中添加一行?我们稍后添加行的表将具有外键约束,该约束引用我们先前添加行的表。。。