猿问

每个表都应该有主键吗?

每个表都应该有主键吗?

我正在创建一个数据库表,并且没有分配给它的逻辑主键。所以,我想把它放在没有主键的地方,但我觉得有点愧疚。我应该吗?

每个表都应该有主键吗?


慕标5832272
浏览 1182回答 3
3回答

天涯尽头无女友

简短答覆:是.详细答覆:你需要把你的桌子粘在什么东西上如果希望对表进行群集,则需要某种主键。如果您的表设计不需要主键,请重新考虑您的设计:很可能,您遗漏了一些东西。为什么要保留相同的记录?在MySQL中,InnoDB存储引擎总是在没有显式指定的情况下创建主键,从而生成一个额外的列,您无法访问它。注意,主键可以是复合的。如果您有一个多到多的链接表,则在链接所涉及的所有字段上创建主键。因此,您确保没有描述一个链接的两个或多个记录。除了逻辑一致性问题之外,大多数RDBMS引擎还将受益于将这些字段包含在唯一的索引中。而且,由于任何主键都涉及创建唯一索引,所以您应该声明它并获得逻辑一致性和性能。请参阅我的博客中的这篇文章,了解为什么您应该总是为唯一的数据创建一个唯一的索引:使索引唯一P.S.有一些非常非常特殊情况下你不需要主键。大多数情况下,它们包括日志表,这些日志表没有任何基于性能原因的索引。

繁星点点滴滴

总是最好有一个主键。这样它就会相遇第一范式并允许您继续沿着数据库规范化路径。正如其他人所指出的,没有主键是有原因的,但是如果有主键,大多数都不会受到伤害。

Qyouu

除了少数几种非常罕见的情况(可能是多到多的关系表,或者临时用于海量数据的表),我还是同意这样的说法:如果它没有主键,它就不是一个表!
随时随地看视频慕课网APP
我要回答