包含临时数据的MySQL表-是否包含主键?

包含临时数据的MySQL表-是否包含主键?,mysql,Mysql,我正在建立一个新的数据库,我有几个包含临时数据的表 e、 g:用户请求更改密码-存储令牌,然后删除 目前我在这些表上有一个主键,它将从1向上自动递增 AUTO_INCREMENT = 1; 我真的看不出这个主键有什么用。。。我永远不会引用它,它只会变得更大 这样的表是否应该有主键 简短回答:是的 长答覆: 如果你想要你的桌子,你需要你的桌子可以在某些东西上接合 要进行集群,您需要某种主键。如果你的桌子 设计不需要主键,重新思考您的设计:大多数 也许你错过了什么。为什么要保留相同的记录?在里面

我正在建立一个新的数据库,我有几个包含临时数据的表

e、 g:用户请求更改密码-存储令牌,然后删除

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

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

这样的表是否应该有主键

简短回答:是的

长答覆:

如果你想要你的桌子,你需要你的桌子可以在某些东西上接合 要进行集群,您需要某种主键。如果你的桌子 设计不需要主键,重新思考您的设计:大多数 也许你错过了什么。为什么要保留相同的记录?在里面 InnoDB存储引擎总是创建一个主键,如果 没有明确指定它,因此生成了一个额外的列 有权访问

请注意,主键可以是复合键

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

除了逻辑一致性问题外,大多数RDBMS引擎将 将这些字段包含在唯一索引中的好处

由于任何主键都涉及到创建唯一索引,因此您应该 声明它并获得逻辑一致性和性能

是这样一个帖子已经有了同样的讨论

有些人仍然喜欢接受你的意见。看一看


我个人的意见是,你应该有主键,以确定或使一行独特。逻辑可以是您的程序逻辑。可以是自动增量或复合或其他任何形式。

哪一种是您的引擎?