创建或修改表的主键
数据库中的每个表都应该有一个字段或字段集,用来唯一标识该表中存储的每条记录。这个字段或字段集称为主键。本文将讨论主键的作用并介绍添加、设置、更改或删除主键的方法。
本文内容
主键是表中的一个字段或字段集,为每条记录提供一个唯一的标识符。在数据库中,请将信息划分到基于主题的不同表中。然后,使用表关系和主键以指示 Access 如何将信息再次组合起来。Access 使用主键字段将多个表中的数据迅速关联起来,并以一种有意义的方式将这些数据组合在一起。
可以包含其他表中的主键字段以向回引用主键源的表。在这些其他表中,字段称为外键。例如,“客户”表中的“客户 ID”字段也可能会显示在“订单”表中。在“客户”表中,它是主键, 而在“订单”表中,它被称作外键。简而言之,外键就是另一个表的主键。
主键
外键
如果将现有数据移到数据库中,您可能已经拥有了可用作主键的字段。通常,唯一的标识号(如 ID 号、序列号或代码)充当表中的主键。例如,您可能有一个“客户”表,其中每个客户都有一个唯一的客户 ID 号。客户 ID 字段是主键。
一个好的候选主键具有以下几个特征:
✍ | 唯一标识每一行 |
✍ | 从不为空或为 Null,即它始终包含一个值 |
✍ | 所包含的值几乎不(理想情况下永不)改变 |
缺少一个或多个好的候选主键特征的任何字段对于主键都是糟糕的选择。下面是几个示例以及成为糟糕选择的原因。
✍ | 个人姓名 成为糟糕选择的原因是,可能不确实唯一,还可能改变。 |
✍ | 电话号码 成为糟糕选择的原因是,它可能会改变。 |
✍ | 电子邮件地址 成为糟糕选择的原因是,它可能会改变。 |
✍ | 事实和数字的组合 如果事实部分可能会更改则成为糟糕选择。这种组合还难以保留,如果事实部分作为单独的字段进行重复,则可能导致混乱。例如,包含城市和增量号码(如 NEWYORK0579)的帐户 ID,如果城市也存储为字段,则是糟糕的选择。 |
应该始终为表指定一个主键。Access 会自动为主键创建索引,这有助于加快查询和其他操作的速度。Access 还确保每条记录的主键字段中都有一个值,并且该值始终是唯一的。
在数据表视图中创建新表时,Access 自动为您创建主键,并且为它指定字段名“ID”和“自动编号”数据类型。默认情况下,该字段在“数据表视图”中为隐藏状态,但切换到“设计视图”后就可以看到该字段。
提示 如果一个表没有好的候选键,请考虑添加一个具有“自动编号”数据类型的字段,并将该字段用作主键。
数据类型为“自动编号”的列通常是一个不错的主键,因为它确保值是唯一的。
在某些情况下,您可能想使用两个或多个字段一起作为表的主键。例如,存储订单行项目的“订单细节”表将在其主键中使用两个列:“订单 ID”和“产品 ID”。当一个主键使用多个列时,它又被称为复合键。
注释 在数据表视图中创建新表时,Access 自动为您创建主键,并且为它指定“自动编号”数据类型。
1. | 打开要修改的数据库。 |
2. | 在导航窗格中,右键单击要向其添加主键的表,然后在快捷菜单上,单击“设计视图”。 |
提示 如果未显示导航窗格,请按 F11 显示导航窗格。
3. | 在表设计网格中找到第一个可用的空行。 |
4. | 在“字段名称”列中键入名称,如 CustomerID。 |
5. | 在“数据类型”列中,单击下拉箭头并单击“自动编号”。 |
6. | 在“常规”中的“新值”中,单击“递增”对主键使用递增数值,或者单击“随机”使用随机数。 |
如果您有一个表,其中每条记录都有一个唯一的标识号(如 ID 号、序列号或编码),则该字段可以作为一个不错的主键。要使主键正常工作,该字段必须唯一标识每一行,决不包含空值或 Null 值,并且很少(理想情况下永不)改变。
1. | 打开要修改的数据库。 |
2. | 在导航窗格中,右键单击要设置主键的表,然后在快捷菜单上,单击“设计视图”。 |
提示 如果未显示导航窗格,请按 F11 显示导航窗格。
3. | 选择要用作主键的一个或多个字段。 |
若要选择一个字段,请单击所需字段的行选择器。
要选择多个字段,请按住 Ctrl,然后单击每个字段的行选择器。
4. | 在“设计”选项卡上的“工具”组中,单击“主键”。 |
键指示器添加到您指定为主键的一个或多个字段的左侧。
删除主键时,以前作为主键的一个或多个字段将不再作为标识记录的主要方式。然而,删除主键不会删除表中的一个或多个字段。相反,删除的是这些字段中的主键指定。
删除主键还会删除为该主键创建的索引。
1. | 打开要修改的数据库。 |
2. | 在删除主键之前,必须确保它没有参与任何表关系。如果您尝试删除的主键是一个或多个关系的一部分,Access 会警告您必须先删除这些关系。 |
1. | 如果参与表关系的表处于打开状态,则请关闭它们。不能删除打开的表之间的表关系。 |
2. | 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。 |
3. | 如果参与表关系中的表不可见,则在“设计”选项卡上的“关系”组中,单击“显示表”。然后,在“显示表”对话框中选择要添加的表,单击“添加”,然后单击“关闭”。 |
4. | 单击要删除的表关系的表关系行(当选中该行时,该行变粗),然后按 Delete 键。 |
5. | 在“设计”选项卡上的“关系”组中,单击“关闭”。 |
3. | 在导航窗格中,右键单击要删除的主键所在的表,然后在快捷菜单上,单击“设计视图”。 |
提示 如果未显示导航窗格,请按 F11 显示导航窗格。
4. | 单击当前主键的行选择器。 |
如果该主键只包含一个字段,则单击该字段的行选择器。
如果该主键包含多个字段,则单击该主键中任何字段的行选择器。
5. | 在“设计”选项卡上的“工具”组中,单击“主键”。 |
以前指定为主键的一个或多个字段中的键指示器被删除。
注释 保存一个新表而不设置主键时,Access 会提示您创建一个主键。如果选择“是”,Access 会创建一个使用“自动编号”数据类型的 ID 字段,为每条记录提供一个唯一值。如果您的表中已有一个“自动编号”字段,Access 会将该字段用作主键。
如果决定更改表的主键,则可以通过执行下列步骤来完成:
1. | 使用删除主键部分中的说明删除现有的主键。 |
2. | 使用设置主键部分中的说明设置主键。 |