这可能是一个非常简单的问题,我需要澄清。
如果我有2个表,请说“用户和活动”。用户与活动之间存在一对多关系(用户可以进行多项活动)。
哪个表应该有外键?
答案 0 :(得分:1)
这样想:
所以,假设" 1"用户和"很多"是Activity,Activity应该包含FK。
答案 1 :(得分:0)
外键确保每行在引用的表中都有对应的值。因此,要确定是否需要外键以及在哪里,请问自己以下问题:
是否有没有活动的用户?
如果答案为否,则必须在用户表引用活动表中创建FK。
没有用户可以进行活动吗?
如果答案是肯定的,请不要创建FK约束。
如果答案为否,则您可能具有m:n关系(除非活动只能有一个用户),因为多个用户可以拥有相同的活动,并且每个活动可以拥有多个用户。然后你需要一个表来解决这个m:n之间的关系。
user_table user_activity_table activity_table
id | more_columns user_id | activity_id activity_id | more_columns
然后user_table
引用user_activity_table
和activity_table
引用也只是user_activity_table
。 user_activity_table
只有这两列。