当我们的桌子不需要主键时?

时间:2011-03-31 06:24:36

标签: mysql sql database primary-key

我们是否会设计一个不需要主键的表?

4 个答案:

答案 0 :(得分:20)

没有

即使你的应用程序从不使用它,主键也可以在幕后完成许多工作。

例如:clustering提高了效率(因为heap tables很乱)。

更不用说,如果任何人必须在你的桌子上做某事需要拉一个特定的行并且你没有主键,那么你就是坏人。

答案 1 :(得分:8)

如果你有一个总是被完全取出的表,并且被零其他表引用,例如某种独立设置或配置表,那么没有必要有一个主键和参数有些人可能会在这种情况下加入PK会欺骗这种表的正常使用。

罕见,可能最常做的事情是错误地,但它们确实存在,并且此类实例可能有效。

答案 2 :(得分:3)

取决于。

什么是主键/唯一键?

  

在关系数据库设计中,唯一键可以唯一地标识表中的每一行,并且与Superkey概念密切相关。唯一键包括单个列或一组列。如果未使用NULL值,则表中的两个不同行可以在这些列中具有相同的值(或值的组合)。根据其设计,表可以具有任意多个唯一键,但最多只有一个主键。

因此,当您不必区分(唯一标识)每一行时,
您不必使用主键

例如,日志的大表,
如果不使用主键,您可以拥有相当小的数据量并且插入速度更快

答案 3 :(得分:1)

主键不是强制性的,但创建没有主键的表不是一个好习惯。 DBMS在PK上创建自动索引,但您可以使列唯一并对其进行索引,例如user_name表中的users列通常是唯一的并且已编入索引,因此您可以选择在此处跳过PK。但它仍然是一个坏主意因为PK可以用作引用完整性的外键。

一般来说,你应该几乎总是在表格中使用PK,除非你有充分的理由证明没有PK。

链接表(多对多关系)可能没有主键。但是,我个人也喜欢在这些表格中使用PK。