我正在组建一个新数据库,我有一些包含临时数据的表。
例如:用户更改密码的请求 - 存储一个令牌,然后将其删除。目前我在这些表上有一个主键,它将从1开始自动递增。
AUTO_INCREMENT = 1;
我真的没有看到这个主键的任何用途......我永远不会引用它,它会变得更大。
这样的表是否有主键?
答案 0 :(得分:0)
简答:是的。
答案很长:
你需要你的桌子可以加入某些东西如果你想要你的桌子 要集群,你需要某种主键。如果你的表 设计不需要主键,重新考虑您的设计:大多数 可能,你错过了一些东西。为何保留相同的记录?在 MySQL,InnoDB存储引擎总是会创建一个PRIMARY KEY 没有明确指定它,因此你不需要额外的列 有权访问。
请注意,PRIMARY KEY可以是复合的。
如果您有多对多链接表,则在其上创建PRIMARY KEY 链接中涉及的所有字段。因此,您确保没有 描述一个链接的两个或多个记录。
除了逻辑一致性问题,大多数RDBMS引擎都会 将这些字段包含在UNIQUE索引中会受益。
由于任何PRIMARY KEY都涉及创建一个UNIQUE索引,你应该这样做 声明它并获得逻辑一致性和性能。
Here是一个SO线程已经有相同的讨论。
有些人仍然喜欢你的意见。看看here
我个人认为你应该有主键,识别或排成一行。逻辑可以是您的程序逻辑。可以是自动增量或复合或任何可能的。