MariaDB必知必会
上QQ阅读APP看书,第一时间看更新

1.1.6 主键

表中的每一行都应该由某列(或列的集合)来唯一标识该行。一个包含客户信息的表可能会使用客户编号来实现这个目标,而包含订单的表可能会使用订单ID。一个员工清单的表可能会使用员工ID或者雇员社会保险号来标识各行。

新术语

主键(Primary Key) 其值唯一标识表中各行的列(或多列的集合)。

唯一标识表中每一行的列(或者多列的集合)叫做主键。主键用来关联特定的行。如果没有主键,在表中更新或删除特定的行会很麻烦,因为无法确保只有这些行受到影响了。

提示

务必定义主键 尽管主键并不是必需的,但是多数数据库设计者确保每一个表都有一个主键,以便将来的数据操作是可行和便于管理的。实际上,如果你忽略主键,有些数据库引擎会自动替你创建一下,这种做法通常让人感到困惑,并且不是你所期望的行为。既然这样,就牢记总是定义主键吧。

一个表的任何列都可以作为主键,只要它遵循下面两个条件:

·任意两行不具有同样的主键值。

·每一行必须有一个主键值(即主键列不能包含NULL值)。

提示

主键规则 这里列出的规则由MariaDB自身保证实施。

主键通常由一个表中单一的列定义。然而这不是必须的,多列结合在一起也可以定义一个主键。当使用多列时,前面列出的规则必须应用到所有组成主键的列中,并且列组合的值必须是唯一的(多列中个别的列不需要有唯一的值)。

提示

定义主键是最佳实践 除了MariaDB保证实施的规则外,也应该坚持使用一些普遍接受的最佳实践:

·不要更新作为主键的列值。

·不要重复主键的列值。

·不要使用可能改变的主键列值。(例如,当你使用一个名字作为主键来标识供应商时,如果供应商合并并且改变名字时,你必须修改主键。)

键的另一个重要的概念是“外键”,我们将在第15章讨论。