每个表都应该有一个主键吗?

zac*_*987 6 sql database

我读到某个地方说每个表应该有一个主键来实现1NF.

我有一个tbl_friendship表.

表格中有两个字段:所有者和朋友.

所有者和朋友的字段是tbl_user中自动增量id字段的外键.

这个tbl_friendship应该有一个主键吗?我应该在tbl_friendship中创建一个自动增量id字段并将其作为主键吗?

Mic*_*art 6

主键可以应用于多个列!在您的示例中,主键应位于两列上,例如(Owner,Friend).特别是当Owner和Friend是用户表的外键而不是实际名称时(个人而言,我的标识列使用"Id"命名约定,因此我会拥有(OwnerId,FriendId)

我个人认为每张桌子都应该有一个主键,但你会发现其他人不同意.

这是我写的关于普通形式主题的文章. http://michaeljswart.com/2011/01/ridiculously-unnormalized-database-schemas-part-zero/