3.4 设置主键

主键用于唯一标识某个记录或者实体

主键是表中的一个或者多个字段,它用于唯一标识某个记录或者实体。一张表中只能够有一个主键,这个主键的值不能够为空,也不能够出现重复。

3.4.1 主键的作用

主键在数据库中具有十分重要的意义,其具体有以下几方面的作用。

♦ 主键始终是索引。

♦ 保证实体的完整性。

♦ 使数据库的操作速度更快。

♦ 在添加新记录时,自动检测记录的主键值,不允许出现重复的主键值。

♦ 默认情况下,数据记录显示的顺序与主键的顺序是相同的,即记录的录入顺序。

3.4.2 选择主键的原则

表中不会出现重复的任意字段都可以作为表的主键,几个字段组合在一起不会出现重复时,也可以使用这几个字段共同作为主键。那么,建立主键应该遵循一些什么样的原则呢?一般来说,比较好的主键应该遵循以下的一些原则。

♦ 主键必须唯一地标识一个记录。

♦ 主键不能够为空值。

♦ 创建记录时,主键必须存在。

♦ 主键的定义必须稳定,一旦创建好主键,就不应该更改主键的值。

♦ 主键应该尽量简洁,包含尽可能少的属性,如果可能,可以使用无意义的字段作为主键,如记录的自动编号。

3.4.3 创建主键

在Access 2013中,有关主键的操作一般在表的设计视图中完成。在设计视图中的主键字段前面,有一个钥匙形状的标记,如图3-14所示。

图3-14 在设计视图中查看主键

常规的创建主键的方法有以下3种。

♦ 创建新表的时候,如果没有创建主键就保存表,则系统就会自行创建一个字段名为ID的自动编号数据类型的主键。

♦ 在设计视图模式下,选择需要创建为主键的字段,单击“表格工具设计”选项卡中的“主键”按钮,可以将该字段设置为主键,如图3-15所示。

图3-15 通过选项卡工具设置主键

♦ 在设计视图模式下,在需要设置为主键的字段上单击鼠标右键,选择“主键”命令即可将该字段设置为主键,如图3-16所示。

图3-16 通过快捷键设置主键

3.4.4 复合主键

在表中,也可以使用多个字段共同构成表的主键,这类主键称为复合主键。创建复合主键的方法与创建一般主键的方法相同,只需要同时选择多个字段再进行创建主键的操作即可,如图3-17所示。

图3-17 创建复合主键

复合主键在目前的数据库设计中,已经很少使用了,这是由多方面的原因造成的:

♦ 当数据足够大的时候,很难保证复合主键不出现重复,从而使得“复合主键”不再能够作为主键。

♦ 使用复合主键,会使得表之间的关系变得更为复杂,表之间的关系维护会变得比较困难。

♦ 使用复合主键,并不能够提高表的功能或特性,如稳定性、完整性等,反而会增加表的复杂性。

“每一个表都应该有一个天生的主键”,这是早期的数据库开发人员信奉的一句话。但是,随着数据库中数据集的日益庞大,使用“天生的主键”(数据库原有的字段)作为主键就可能出现问题——作为表的主键的字段很可能出现重复值。

目前最为常用的做法,就是使用替代的主键将表的设计与表的数据分开,从而避免使用“天生的主键”作为主键可能出现的问题。

使用替代主键的好处十分明显,替代主键应该具有下面的一些特点。

♦ 除了唯一标识记录或者实体外,没有其他任何的实际意义为好。

♦ 不需要进行任何更新,因为主键不包含任何现实意义,所以对其进行更新也没有任何的意义。

♦ 不会发生变化,不包含任何可以发生变化的数据,如时间戳等。

♦ 最好由计算机自动生成,任何人为设置的主键都可能在主观上包含一些现实意义。