带有临时数据的MySQL表 - 包含主键?

时间:2013-07-01 09:05:21

标签: mysql

我正在组建一个新数据库,我有一些包含临时数据的表。

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

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

AUTO_INCREMENT = 1;

我真的没有看到这个主键的任何用途......我永远不会引用它,它会变得更大。

这样的表是否有主键?

1 个答案:

答案 0 :(得分:0)

  

简答:是的。

     

答案很长:

     

你需要你的桌子可以加入某些东西如果你想要你的桌子   要集群,你需要某种主键。如果你的表   设计不需要主键,重新考虑您的设计:大多数   可能,你错过了一些东西。为何保留相同的记录?在   MySQL,InnoDB存储引擎总是会创建一个PRIMARY KEY   没有明确指定它,因此你不需要额外的列   有权访问。

     

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

     

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

     

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

     

由于任何PRIMARY KEY都涉及创建一个UNIQUE索引,你应该这样做   声明它并获得逻辑一致性和性能。

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

有些人仍然喜欢你的意见。看看here

我个人认为你应该有主键,识别或排成一行。逻辑可以是您的程序逻辑。可以是自动增量或复合或任何可能的。