标识
在一个关系数据库中,我们从来不记录那些我们不能够标识的内容有关的信息。为了区分
表中的每一行,我们定义了一个关键字( primary key,P K)。将这个关键字作为该行的名字。当
我们需要查阅任何指定的行的时候,可以借助于它的关键字来实现这项任务。由于数据库系统
花费的大部分时间都是用来搜索数据,那么关键字用来惟一地标识了每一行,这样搜索数据就
更加有效率。
关键字可以从表中的一列或者多列中进行选择,或者我们可以创建一个新的列来实现该目
标。如果表中已经有好几列的值证实是惟一的,那么就应该首先使用这些列作为关键字,而不
是占用额外的空间来新创建一列。
如果你可以在几个列中进行选择,以便确定主关键字,一般来说最好选择最简洁的一列
(或多列)—意思就是选择那些具有最小的、可以使用的数据类型的列。由于绝大多数数据库
系统处理数据比起处理字符串来说,更加有效,所以可以考虑在该主关键字列中使用数字,最
好使用一个整数数值。在绝大多数关系型数据库管理系统中整数数值能够非常有效地进行存储。
同时,用作为主关键字的某一列(或者多列)应该保持不变,或者变化次数很少。用于主关键
字的最佳类型是包含从来不变的整数值的一个单独的列。
应该说明的是,因为主关键字的目的是用来惟一地标识某个表中的每一行,所以在包含主
关键字的那些列中的任意一列不允许缺少数值(称做为n u l l空值)。如果某一列中存在n u l l值,关
系型数据库管理系统就不允许你将一个“可空的列”作为主关键字的一部分。这种“不能为空” 
的规则仅仅适用于主关键字。包含了空值因而不能作为主关键字组成部分的那些列,如果将它
们包含到某一个索引( i n d e x)的一部分中,还是可以用来帮助进行搜索的。同时还应该说明的
是,借助两个不同的列(或者列的集合)也可以惟一地标识表中的每一行。尽管任何一列都可
以作为一个候选关键字( candidate key),但是只有一列可以选做为主关键字。