创建、编辑或删除关系

在数据库中为每个主题创建表后,必须为 Office Access 2007 提供在需要时将这些信息重新组合到一起的方法。 具体方法是在相关的表中放置公共字段,并在表之间定义表关系。 然后,可以创建查询、窗体和报表,以同时显示几个表中的信息。

本文提供了用于创建、编辑和删除表关系的分步过程。 您将了解如何实施参照完整性以禁止创建孤立记录,如何设置联接类型以确定查询结果中包括关系每侧的哪些记录,以及如何设置级联选项以保持参照同步。

有关表关系的详细信息,请参阅表关系指南一文

本文内容

创建表关系

使用“关系”文档选项卡创建表关系

使用“字段列表”窗格创建表关系

编辑表关系

实施参照完整性

删除表关系

创建表关系

可以在“关系”窗口中创建表关系,也可以通过从“字段列表”窗格向数据表拖动字段来创建表关系。 在表之间创建关系时,不要求公共字段具有相同的名称,但实际情况往往是这样。不过,公共字段必须具有相同的数据类型。 但是,如果主键字段为“自动编号”字段,并且主键字段与外键字段的 FieldSize 属性相同,则外键字段也可以为数字字段。 例如,如果自动编号字段与数字字段的 FieldSize 属性都是“长整型”,则可以将这两个字段相匹配。 即使两个公共字段都是数字字段,它们也必须具有相同的 FieldSize 属性设置。

返回页首

使用“关系”文档选项卡创建表关系

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。

    Access 功能区图像

  4. 如果您尚未定义过任何关系,则会自动显示“显示表”对话框。 如果未出现该对话框,请在“设计”选项卡上的“关系”组中单击“显示表”。

    功能区“设计”选项卡“关系”组

    显示表”对话框会显示数据库中的所有表和查询。 要只查看表,请单击“”。 若要只查看查询,请单击“查询”。 若要同时查看表和查询,请单击“两者”。

  5. 选择一个或多个表或查询,然后单击“添加”。 将表和查询添加到“关系”文档选项卡之后,请单击“关闭”。

  6. 将字段(通常为主键)从一个表拖至另一个表中的公共字段(外键)。 要拖动多个字段,请按 Ctrl 键,单击每个字段,然后拖动这些字段。

    将显示“编辑关系”对话框。

    “编辑关系”对话框

  7. 验证显示的字段名称是否是关系的公共字段。 如果字段名称不正确,请单击该字段名称并从列表中选择合适的字段。

    要对此关系实施参照完整性,请选中“实施参照完整性”复选框。 有关参照完整性的详细信息,请参阅实施参照完整性一节

    此外,还请参阅表关系指南一文。

  8. 单击“创建”。

    Access 会在两个表之间绘制一条关系线。 如果已选中“实施参照完整性”复选框,则该线在每端都显示为较粗。 此外,仅当再次选中“实施参照完整性”复选框后,数字“1”才会出现在关系线一侧较粗的部分之上,无限大符号 () 将出现在该线另一侧较粗的部分之上,如下图所示。

将字段从一个表拖至其他表的匹配字段

注释: 

  • 创建一对一关系    两个公共字段(通常为主键字段和外键字段)都必须具有唯一索引。 这意味着应将这些字段的“已索引”属性设置为“是(不允许重复)”。 如果两个字段都具有唯一索引,Access 将创建一对一关系。

  • 创建一对多关系    在关系一侧的字段(通常为主键)必须具有唯一索引。 这意味着应将此字段的“已索引”属性设置为“是(不允许重复)”。 多侧上的字段应具有唯一索引。 它可以有索引,但必须允许重复。 这意味着应将此字段的“已索引”属性设置为“”或“是(不允许重复)”。 当一个字段具有唯一索引,其他字段不具有唯一索引时,Access 将创建一对多关系。

返回页首

使用“字段列表”窗格创建表关系

在 Office Access 2007 中,可以向数据表视图中打开的现有表添加字段,方法是将该字段从“字段列表”窗格拖动到该表中。 “字段列表”窗格显示相关表中可用的字段以及数据库的其他表中可用的字段。 从其他(无关联)的表中拖动一个字段并完成“查阅向导”时,会在“字段列表”窗格中的表和您将该字段拖至其中的表之间自动创建新的一对多关系。 默认情况下,由 Access 创建的这种关系不实施参照完整性。 要实施参照完整性,必须对该关系进行编辑。 有关详细信息,请参阅编辑表关系部分。

在数据表视图中打开表

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在导航窗格中,右键单击要向其添加字段并创建关系的表,然后单击快捷菜单上的“数据表视图”。

打开“字段列表”窗格

  • 在“数据表”选项卡上的“字段和列”组中,单击“添加现有字段”。

    Access 功能区图像

    随即会显示“字段列表”窗格。

    “字段列表”窗格

字段列表”窗格显示数据库中的所有其他表,它们分成几类。 在数据表视图中处理表时,Access 在“字段列表”窗格中显示以下两个类别中任一类别的字段: “相关表中的可用字段”和“其他表中的可用字段”。 第一个类别列出了与当前正在处理的表有关系的所有表。 第二个类别列出了与您的表没有关系的所有表。

在“字段列表”窗格中,单击表名称旁边的加号 (+) 时,您会看到该表中所有可用字段的列表。 要向您的表中添加字段,请将所需字段从“字段列表”窗格拖动到“数据表”视图中的表中。

添加字段并从“字段列表”窗格中创建关系

  1. 在“数据表”选项卡上的“字段和列”组中,单击“添加现有字段”。

    Access 功能区图像

    随即会显示“字段列表”窗格。

  2. 在“其他表中的可用字段”下,单击表名称旁边的加号 (+),以显示该表中的字段列表。

  3. 将所需字段从“字段列表”窗格拖动到数据表视图中打开的表中。

  4. 当插入行出现时,将该字段放到适当位置。

    将启动“查阅向导”。

  5. 按照说明完成“查阅向导”。

    该字段显示在数据表视图中的表中。

从其他(无关联)的表中拖动一个字段并完成“查阅向导”时,会在“字段列表”窗格中的表和您将该字段拖至其中的表之间自动创建新的一对多关系。 默认情况下,由 Access 创建的这种关系不实施参照完整性。 要实施参照完整性,必须对该关系进行编辑。 有关详细信息,请参阅编辑表关系部分。

返回页首

编辑表关系

更改表关系的方法是在“关系”文档选项卡中选择表关系,然后对其进行编辑。

  1. 小心放置光标,以使其指向关系线,然后单击该线以将其选中。

    选中关系线时,它会显示得较粗。

  2. 选中关系线后,双击该线。

    - 或 -

    在“设计”选项卡上的“工具”组中,单击“编辑关系”。

将显示“编辑关系”对话框。

打开“编辑关系”对话框

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。

    此时将显示“关系”文档选项卡。

    如果您尚未定义任何关系,这是您第一次打开“关系”文档选项卡,则会出现“显示表”对话框。 如果出现该对话框,请单击“关闭”。

  4. 在“设计”选项卡上的“关系”组中,单击“所有关系”。

    功能区“设计”选项卡“关系”组

    将显示具有关系的所有表,同时显示关系线。 请注意,除非在“导航选项”对话框中选中“显示隐藏对象”,否则不会显示隐藏的表(在表的“属性”对话框中选中“隐藏”复选框的表)及其关系。

    有关“显示隐藏对象”选项的详细信息,请参阅导航窗格指南一文。

  5. 单击要更改的关系的关系线。 选中关系线时,它会显示得较粗。

  6. 双击该关系线。

    - 或 -

    在“设计”选项卡上的“工具”组中,单击“编辑关系”。

    将显示“编辑关系”对话框。

    “编辑关系”对话框

  7. 进行更改,然后单击“确定”。

    通过“编辑关系”对话框可以更改表关系。 特别需要指出的是,您可以更改关系任意一侧的表或查询,或任意一侧的字段。 还可以设置联接类型,或实施参照完整性,以及选择级联选项。 有关联接类型以及如何设置联接类型的详细信息,请参阅设置联接类型部分。 有关如何实施参照完整性以及选择级联选项的详细信息,请参阅实施参照完整性部分。

设置联接类型

定义表关系时,有关关系的事实可以为查询设计提供信息。 例如,如果在两个表之间定义关系,然后创建一个使用这两个表的查询,Access 将根据在关系中指定的字段来自动选择默认匹配字段。 可在查询中覆盖这些初始默认值,但该关系提供的值经过验证通常是正确的。 在除了最简单的数据库之外的所有数据库中,由于匹配和从多个表中汇聚数据是经常要执行的操作,因此通过创建关系来设置默认值可以节省时间,并且非常有用。

多表查询通过匹配公共字段中的值来组合多个表中的信息。 执行匹配和组合的操作称为联接。 例如,假设您要显示客户订单。 可以创建一个查询,以使“客户”表和“订单”表通过“客户 ID”字段联接起来。 查询结果中只包含找到对应匹配的行的客户信息和订单信息。

可为每个关系指定的一个值是联接类型。 联接类型通知 Access 要在查询结果中包括哪些记录。 例如,再次考虑这样一个查询,它将“客户”表和“订单”表通过代表“客户 ID”的公共字段联接起来。 使用默认联接类型(称为内部联接)时,查询只返回公共字段(也称为联接字段)相等的“客户”行和“订单”行。

但是,假设您要包括所有客户 - 即使是尚未下任何订单的客户。 要实现此功能,必须将联接类型由内部联接更改为左外部联接。 左外部联接将返回关系左侧表中的所有行,以及关系右侧表中的匹配行。 右外部联接则返回右侧的所有行,以及左侧的匹配行。

注意: 在此情况下,“左”和“右”指的是表在“编辑关系”对话框中而不是在“关系”文档选项卡中的位置。

应该先考虑最希望通过在此关系中联接表的查询获取的结果,然后再相应设置联接类型。

设置联接类型

  1. 在“编辑关系”对话框中,单击“联接类型”。

    将显示“联接属性”对话框。

  2. 单击您的选项,然后单击“确定”。

下表(使用“客户”和“订单”表)显示了“联接属性”对话框中显示的三种选择、它们使用的联接类型以及为每个表返回所有行还是匹配行。

选项

关系联接

左表

右表

1. 只包括两个表中的联接字段相同的行。

内部联接

匹配行

匹配行

2. 包括“客户”表中的所有记录以及“订单”表中联接字段相同的记录。

左外部联接

所有行

匹配行

3. 包括“订单”表中的所有记录以及“客户”表中联接字段相同的记录。

右外部联接

匹配行

所有行

当您选择选项 2 或选项 3 时,会在关系线上显示一个箭头。 此箭头指向只显示匹配行的关系一侧。

在“联接属性”对话框中进行更改

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。

    Access 功能区图像

    此时将显示“关系”文档选项卡。

    如果您尚未定义任何关系,这是您第一次打开“关系”文档选项卡,则会出现“显示表”对话框。 如果出现该对话框,请单击“关闭”。

  4. 在“设计”选项卡上的“关系”组中,单击“所有关系”。

    功能区“设计”选项卡“关系”组

    将显示具有关系的所有表,同时显示关系线。 请注意,除非在“导航选项”对话框中选中“显示隐藏对象”,否则不会显示隐藏的表(在表的“属性”对话框中选中“隐藏”复选框的表)及其关系。

    有关“显示隐藏对象”选项的详细信息,请参阅导航窗格指南一文。

  5. 单击要更改的关系的关系线。 选中关系线时,它会显示得较粗。

  6. 双击该关系线。

    - 或 -

    在“设计”选项卡上的“工具”组中,单击“编辑关系”。

    将显示“编辑关系”对话框。

  7. 单击“联接类型”

  8. 在“联接属性”对话框中,单击一个选项,然后单击“确定”。

    “联接属性”对话框

  9. 对关系进行任何其他更改,然后单击“确定”。

返回页首

实施参照完整性

参考完整性的用途是禁止孤立记录并保持参照同步,这样不会有任何记录会参照不再存在的其他记录。 实施参照完整性的方法是为表关系启用参照完整性。 实施后,Access 将拒绝违反表关系参照完整性的任何操作。 这意味着 Access 既拒绝更改参照目标的更新,也拒绝删除参照目标的删除。 要让 Access 传播参照更新和删除,以便所有相关行都进行相应更改,请参阅设置级联选项部分。

打开或关闭参照完整性

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。

    Access 功能区图像

    此时将显示“关系”文档选项卡。

    如果您尚未定义任何关系,这是您第一次打开“关系”文档选项卡,则会出现“显示表”对话框。 如果出现该对话框,请单击“关闭”。

  4. 在“设计”选项卡上的“关系”组中,单击“所有关系”。

    将显示具有关系的所有表,同时显示关系线。 请注意,除非在“导航选项”对话框中选中“显示隐藏对象”,否则不会显示隐藏的表(在表的“属性”对话框中选中“隐藏”复选框的表)及其关系。

    有关“显示隐藏对象”选项的详细信息,请参阅导航窗格指南一文。

  5. 单击要更改的关系的关系线。 选中关系线时,它会显示得较粗。

  6. 双击该关系线。

    - 或 -

    在“设计”选项卡上的“工具”组中,单击“编辑关系”。

    将显示“编辑关系”对话框。

  7. 选中“实施参照完整性”。

  8. 对关系进行任何其他更改,然后单击“确定”。

实施了参照完整性之后,以下规则将适用:

  • 如果值在主表的主键字段中不存在,则不能在相关表的外键字段中输入该值 - 否则会创建孤立记录。

  • 如果某记录在相关表中有匹配记录,则不能从主表中删除它。 例如,如果在“订单”表中有分配给某雇员的订单,则不能从“雇员”表中删除该雇员的记录。 但通过选中“级联删除相关记录”复选框可以选择在一次操作中删除主记录所有相关记录。

  • 如果更改主表中的主键值会创建孤立记录,则不能执行此操作。 例如,如果在“订单明细”表中为某一订单指定了行项目,则不能更改“订单”表中该订单的编号。 但通过选中“级联更新相关字段”复选框可以选择在一次操作中更新主记录所有相关记录。

    注释: 如果在启用参照完整性时遇到困难,请注意在实施参照完整性时需要满足以下条件:

    • 来自于主表的公共字段必须为主键或具有唯一索引。

    • 公共字段必须具有相同的数据类型。 例外情况是自动编号字段可与“FieldSize”属性设置为“长整型”的数字字段相关。

    • 这两个表都存在于同一个 Access 数据库中。 不能对链接表实施参照完整性。 但是,如果来源表为 Access 格式,则可打开存储这些表的数据库,并在该数据库中启用参照完整性。

设置级联选项

您可能会遇到这样的情况,即需要更改关系一侧的值。 在这种情况下,您需要 Access 在一次操作中自动更新所有受影响的行。 这样便可完成全部更新,因此数据库不会保留为不一致状态 - 更新一些行,而不更新另外一些行。 Access 通过支持“级联更新相关字段”选项避免了这一问题。 如果您实施了参照完整性并选择“级联更新相关字段”选项,在您更新主键时,Access 将自动更新参照主键的所有字段。

您可能还会需要删除一行及所有相关字段,例如,某个运货商记录及其所有相关订单。 因此,Access 支持“级联删除相关记录”选项。 如果您实施参照完整性并选中“级联删除相关记录”复选框,则当您删除包含主键的记录时,Access 将自动删除参照该主键的所有记录。

打开或关闭级联更新和/或级联删除

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。

    Access 功能区图像

    此时将显示“关系”文档选项卡。

    如果您尚未定义任何关系,这是您第一次打开“关系”文档选项卡,则会出现“显示表”对话框。 如果出现该对话框,请单击“关闭”。

  4. 在“设计”选项卡上的“关系”组中,单击“所有关系”。

    将显示具有关系的所有表,同时显示关系线。 请注意,除非在“导航选项”对话框中选中“显示隐藏对象”,否则不会显示隐藏的表(在表的“属性”对话框中选中“隐藏”复选框的表)及其关系。

    有关“显示隐藏对象”选项的详细信息,请参阅导航窗格指南一文。

  5. 单击要更改的关系的关系线。 选中关系线时,它会显示得较粗。

  6. 双击该关系线。

    - 或 -

    在“设计”选项卡上的“工具”组中,单击“编辑关系”。

    将显示“编辑关系”对话框。

  7. 选中“实施参照完整性”复选框。

  8. 选中“级联更新相关字段”或“级联删除相关字段”复选框,或同时选中这两者。

  9. 对关系进行任何其他更改,然后单击“确定”。

注意: 如果主键是“自动编号”数据类型字段,则选中“级联更新相关字段”复选框将不起作用,因为您无法更改“自动编号”字段中的值。

返回页首

删除表关系

要删除表关系,必须在“关系”文档选项卡中删除关系线。 小心放置光标,以使其指向关系线,然后单击该线。 选中关系线时,它会显示得较粗。 在选中关系线的情况下,按 Delete。 请注意,删除关系时,如果启用了参照完整性支持,则同时会删除对该关系的参照完整性支持。 因此,Access 将不再自动禁止在关系的“多”侧创建孤立记录。

  1. 单击“Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择并打开数据库。

  3. 在“数据库工具”选项卡上的“显示/隐藏”组中,单击“关系”。

    Access 功能区图像

    此时将显示“关系”文档选项卡。

    如果您尚未定义任何关系,这是您第一次打开“关系”文档选项卡,则会出现“显示表”对话框。 如果出现该对话框,请单击“关闭”。

  4. 在“设计”选项卡上的“关系”组中,单击“所有关系”。

    将显示具有关系的所有表,同时显示关系线。 请注意,除非在“导航选项”对话框中选中“显示隐藏对象”,否则不会显示隐藏的表(在表的“属性”对话框中选中“隐藏”复选框的表)及其关系。

    有关“显示隐藏对象”选项的详细信息,请参阅导航窗格指南一文。

  5. 单击要删除的关系的关系线。 选中关系线时,它会显示得较粗。

  6. 按 Delete 键。

    - 或 -

    单击右键,然后单击“删除”。

  7. Access 可能会显示消息“确实要从数据库中永久删除选中的关系吗?”。 如果出现此确认消息,请单击“是”

注意: 如果表关系中使用的任何一个表正在使用中 - 可能正在被其他人或进程使用,或在打开的数据库对象(例如窗体)中,您将无法删除该关系。 必须将使用这些表的所有已打开对象全部关闭,才能删除该关系。

返回页首

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×