我的桌子不需要主键,我应该使用主键吗?

时间:2016-03-14 21:08:03

标签: mysql database database-design

我有一个表来检查具有特定IP地址的用户是否对这些列具有评级:rates(ip,item_id,created_at)我可以为此表定义两个主键

1- primary(ip,item_id)

2-主要(id)

但是我真的不需要它们,因为这个表需要没有加入没有更新,我应该定义主键吗? 我可以只为index_id和ip索引性能,但没有主键。

3 个答案:

答案 0 :(得分:1)

一般来说,设计面向未来以及今天。你有一个非常自然的复合主键,除非你能够或者曾经能够多次评价一个项目,在这种情况下你应该引入id列。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

查看WHERE中的SELECTs条款。这是一种快速且(非常)肮脏的方式来查看需要编入索引的内容。

你应该有PRIMARY KEY。它必须是独一无二的。它既可以是自然的,也可以是自然的。密钥 - 如果您不想要任何重复的ip值,那么这是一个很好的候选者。如果你没有自然的' PK,然后有一个AUTO_INCREMENT

你不能有两个PRIMARY KEYs,但是一个PK可以有两列。

Cookbook on building indexes