
3.2.3 索引和主键
1.索引
索引的实质是按照某种规则确定出的数据表的一种逻辑排序。建立索引的目的是加快查询数据的速度。
Access 2010允许用户给予单个字段或者多个字段创建记录的索引,一般可以将经常用于搜索或排序的单个字段设置为单字段索引;如果要同时搜索或排序两个或者两个以上的字段,可以创建多字段索引,多字段索引能够区分与第一个字段值相同的记录。
通常情况下,数据表中的记录是按照输入数据的顺序自动排列的。当用户需要对数据表中的信息进行快速检索、查询时,可以对数据表中的记录重新调整顺序。
索引不改变数据表中记录的排列顺序,而是按照排序关键字的顺序提取记录指针,生成索引文件。使用索引还是建立表之间关联关系的前提。
数据表中索引的建立是在表的设计视图中进行的。一般来说,创建索引的方法比较简单,但是针对数据表,要创建多少索引,每个索引的索引字段是什么等这些问题应该经过很好的设计。索引虽然可以提高数据库的检索速度,实际上过多的索引反而会降低数据检索的速度。在Access 2010中,除了OLE对象型、备注型、超链接和逻辑型字段不能建立索引外,其他类型的字段都可以建立索引。
在Access 2010数据表中,最多可以创建32个索引。索引在保存表时创建。在更改或添加记录时,索引可以自动更新。任何时候都可以在表设计视图中添加或者删除索引。索引是同一个数据库内各数据表间建立关联关系的必要前提。
索引按照功能可分为以下几种类型:
(1)唯一索引。索引字段的值不能重复。若给该字段输入了重复的数据,系统就会提示操作错误。若某个字段的值有重复,则不能创建唯一索引。一个表可以创建多个唯一索引。
(2)主索引。同一个表可以创建多个唯一索引,其中一个可设置为主索引,主索引字段称为主键。一个数据表只能创建一个主索引。
(3)普通索引。索引字段的值可以重复。一个表可以创建多个普通索引。
2.创建字段索引
1)通过字段属性创建索引
具体操作步骤如下:
(1)打开“学籍管理”数据库,从导航窗格打开“班级”表。
(2)单击“视图”按钮打开表的设计视图,或者单击“视图”下拉按钮,在弹出的菜单中选择“设计视图”命令,打开表的设计视图,选择“班级名称”字段,在字段属性栏设置“索引”项为“有(无重复)”,如图3.20所示。
2)通过“索引设计器”创建索引
具体操作步骤如下:
(1)打开“班级”表设计视图。
(2)单击“表格工具/设计”选项卡“显示/隐藏”组中的“索引”按钮,打开索引设计器,如图3.21所示。
(3)在“索引名称”中输入“班级名称”,在“字段名称”中选择“bjmc”,在“排序次序”中选择“升序”,在“索引属性”栏的“唯一索引”中选择“是”,如图3.22所示。

图3.20 索引设置

图3.21 索引设计器

图3.22 索引设置
(4)关闭“索引”对话框,在设计视图字段属性栏的“索引”项中显示“有(无重复)”。
3.主键
主键又称主关键字、主码,是表中的一个或多个字段。它的值可以唯一地标识表中的某一条记录。在两个数据表的关系中,主键用来在一个表中引用来自于另一个表中的特定记录。主键是一种唯一关键字,是数据表定义的一部分,并且它可以唯一确定表中的数据,或者可以唯一确定一个实体。一个表不能有多个主键,并且主键的数据记录不能包含空值。
在Access 2010中,建议每个数据表设计一个主键,设置主键的同时也创建了索引,建立主键是建立一种特殊的索引。一个数据表只能有一个主键,若数据表设置了主键,则表的记录存取依赖于主键。这样在执行查询时可以加快查询速度。
1)单字段主键
单字段主键是一个字段的值可以确定表中的唯一记录。创建单字段主键的有以下两种方法。
(1)打开表设计视图,选中要创建主键的字段,单击“表格工具/设计”选项卡“工具”组中的“主键”按钮。
(2)右击要创建主键的字段,在弹出的快捷菜单中选择“主键”命令。
2)多字段主键
在不能保证任何单字段都包含唯一值时,可以将两个或者更多的字段组合指定为主键。多字段主键是多个字段组合的值以确定表中的唯一记录。设置多字段主键的方法是按住【Ctrl】键,分别单击各个字段的字段选择器,在选定了多个字段后,单击“表格工具/设计”选项卡“工具”组中的“主键”按钮。
3)自动编号型主键
一个数据表最多只能设计一个自动编号型字段,如果有此字段的话,可以设置为主键。一般情况下,在保存新建的数据表时,如果还没有设置主键,Access 2010将询问是否要创建一个自动编号型主键,通常会选择“否”。
下面以“教师”表为例,对“教师姓名”和“性别”字段一起建立多字段主键。具体操作步骤如下:
(1)打开“教师”表设计视图。
(2)按住【Ctrl】键,分别单击选择“xm”字段和“xb”字段,在选定了这两个字段后,单击“表格工具/设计”选项卡“工具”组中的“主键”按钮,这样就为数据表定义了拥有两个字段的主键,如图3.23所示。
打开索引设计器,结果如图3.24所示。可以看出多字段主键也可以通过索引设计器建立,在索引名称PrimaryKey下关联两个字段xm和xb,第二个字段xb左边没有索引名称;同时“主索引”设置为“是”即可建立多字段主键。

图3.23 定义主键

图3.24 索引设计器