我正在创建一个数据库表,但没有为其分配逻辑主键。每个表都应该有主键吗?
简短回答:yes.
长答案:
- 你需要你的桌子可以加入一些东西
- 如果您希望表聚集,则需要某种主键。
- 如果您的表设计不需要主键,请重新考虑您的设计:很可能您遗漏了某些内容。为什么要保留相同的记录?
在 MySQL 中,如果您没有明确指定主键,InnoDB 存储引擎总是会创建一个主键,从而创建一个您无权访问的额外列。
请注意,主键可以是复合的。
如果您有一个多对多链接表,则可以在链接中涉及的所有字段上创建主键。因此,您可以确保没有两条或更多记录描述一个链接。
除了逻辑一致性问题之外,大多数 RDBMS 引擎还将受益于将这些字段包含在唯一索引中。
由于任何主键都涉及创建唯一索引,因此您应该声明它并获得逻辑一致性和性能。
请参阅我博客中的这篇文章,了解为什么应始终对唯一数据创建唯一索引:
- 使索引唯一 http://explainextended.com/2009/04/23/making-an-index-unique/
P.S.有一些非常非常不需要主键的特殊情况。
大多数情况下,它们包括日志表,但没有any出于性能原因的索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)