Mysql 我的桌子没有';我不需要主键,我应该用主键吗?

Mysql 我的桌子没有';我不需要主键,我应该用主键吗?,mysql,database,database-design,Mysql,Database,Database Design,我有一个表来检查在某个项目上是否有特定ip地址的用户:rates(ip,item\u id,created\u at)我可以为这个表定义两个主键 1-主(ip,项目id) 2-主(id) 但是我真的不需要它们,因为这个表需要无连接和无更新,我应该定义主键吗? 我可以只为项目id和ip编制性能索引,但没有主键。一般来说,为未来和今天设计。您有一个非常自然的复合主键,除非您能够或曾经能够对一个项目进行多次评分,在这种情况下,您应该引入id列。一般来说,设计是为了未来,也是为了今天。您有一个非常自然的

我有一个表来检查在某个项目上是否有特定ip地址的用户:
rates(ip,item\u id,created\u at)
我可以为这个表定义两个主键

1-主(ip,项目id)

2-主(id)

但是我真的不需要它们,因为这个表需要无连接无更新,我应该定义主键吗?
我可以只为项目id和ip编制性能索引,但没有主键。

一般来说,为未来和今天设计。您有一个非常自然的复合主键,除非您能够或曾经能够对一个项目进行多次评分,在这种情况下,您应该引入id列。

一般来说,设计是为了未来,也是为了今天。您有一个非常自然的复合主键,除非您能够或将能够对项目进行多次评级,在这种情况下,您应该引入id列。

您应该使用主键。正如ctrahey所说,如果组合是唯一的,则使用选项#1,如果不使用#2(带附加列)

您应该使用主键。正如ctrahey所说,如果组合是唯一的,则使用选项#1,如果不使用#2(带附加列)

查看您的
选项中的
WHERE
子句。这是一种快速且(非常)肮脏的方式来查看需要索引的内容

您应该有
主键
。它必须是独一无二的。它可以是一个“自然”键——如果您不想要任何重复的
ip
值,这是一个很好的候选。如果您没有“自然”PK,则使用
自动增量

不能有两个
主键,但一个主键可以有两列


.

查看您的
选择中的
WHERE
子句。这是一种快速且(非常)肮脏的方式来查看需要索引的内容

您应该有
主键
。它必须是独一无二的。它可以是一个“自然”键——如果您不想要任何重复的
ip
值,这是一个很好的候选。如果您没有“自然”PK,则使用
自动增量

不能有两个
主键,但一个主键可以有两列