Mysql 我的桌子没有';我不需要主键,我应该用主键吗?
我有一个表来检查在某个项目上是否有特定ip地址的用户: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列。一般来说,设计是为了未来,也是为了今天。您有一个非常自然的
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,则使用自动增量
不能有两个主键,但一个主键可以有两列