1

我正在整理一个新数据库,并且有一些包含临时数据的表。

例如:用户请求更改密码 - 存储令牌,然后删除。

目前我在这些表上有一个主键,它会从 1 向上自动递增。

AUTO_INCREMENT = 1;

我真的看不出这个主键有什么用......我永远不会引用它,它只会变得更大。

像这样的表是否应该有主键?

4

1 回答 1

0

简短的回答:是的。

长答案:

你需要你的表可以加入某些东西如果你想让你的表被聚集,你需要某种主键。如果您的表设计不需要主键,请重新考虑您的设计:很可能,您遗漏了一些东西。为什么要保留相同的记录?在 MySQL 中,如果您没有明确指定,InnoDB 存储引擎总是会创建一个 PRIMARY KEY,从而产生一个您无权访问的额外列。

请注意,PRIMARY KEY 可以是复合的。

如果您有一个多对多链接表,则在链接中涉及的所有字段上创建 PRIMARY KEY。因此,您可以确保没有两条或更多条记录描述一个链接。

除了逻辑一致性问题之外,大多数 RDBMS 引擎将受益于将这些字段包含在 UNIQUE 索引中。

而且由于任何 PRIMARY KEY 都涉及创建 UNIQUE 索引,因此您应该声明它并获得逻辑一致性和性能。

是一个SO线程已经有相同的讨论。

有些人仍然喜欢听从你的意见。看看这里

我个人的意见是你应该有主键,以识别或使一行唯一。逻辑可以是您的程序逻辑。可以是自动增量或复合或任何它可以是。

于 2013-07-23T05:28:46.020 回答