主键和外键都在同一个表中

时间:2014-12-30 18:45:46

标签: mysql sql database-design foreign-keys primary-key

我是否应该在同一个表中都有主键和外键?

例如:一对一

我有用户表地址表

每个用户都有一个地址。

我是否只应在地址表中添加指向用户表中主键的外键?

或者我应该在地址表中创建主键吗?

更新

每个用户都有一个地址。因此,并非所有用户都有地址。如果用户决定输入他/她的地址。然后地址将在地址表

中结束

3 个答案:

答案 0 :(得分:1)

正如我在评论中所说的那样,第一个问题是,如果它们真的是1对1,你根本需要一个地址表?

除此之外,我会改变这种关系。你声明:

Each User has one address.

如果这是对模型的准确描述,则User表应引用地址表,而不是相反。地址可以拥有多个用户。因此,用户表将具有指向地址表的外键列。

关于其他评论和答案,我同意几乎每个表都有一个主键是一个很好的做法。当然有例外,但这是一个很好的经验法则。

答案 1 :(得分:0)

我建议你在每个表中使用主键。它可能发生,而不是2个用户住在同一栋房子里。为了安全......

答案 2 :(得分:0)

所有表都应该有一个主键。外键指向另一个表中的主键以建立关系。