创建、编辑或删除关系

注意:  我们希望能够尽快以你的语言为你提供最新的帮助内容。 本页面是自动翻译的,可能包含语法错误或不准确之处。我们的目的是使此内容能对你有所帮助。可以在本页面底部告诉我们此信息是否对你有帮助吗? 请在此处查看本文的 英文版本 以便参考。

数据库中的每个主题创建表格后,您必须提供Office Access 2007在需要时将该信息重新组合在一起的方法。通过相关,表中放置公共字段和定义表之间的表关系执行此操作。然后,您可以创建查询、 窗体和报表显示来自多个表的信息。

本文提供了分步说明了如何创建、 编辑和删除表关系。您将了解如何实施参照完整性,以防止创建孤立记录,如何设置联接类型来确定从关系的每一侧的记录包括在查询结果,以及如何设置级联选项以使参照保持同步。

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

本文内容

创建表关系

通过使用关系文档选项卡创建表关系

通过使用字段列表窗格中创建表关系

编辑表关系

实施参照完整性

删除表关系

创建表关系

在关系窗口中,或通过从字段列表窗格拖动到数据表的字段,您可以创建表关系。当您创建表之间的关系时,常见字段都不需要具有相同的名称,虽然通常是他们执行这种情况。相反,公共字段必须具有相同的数据类型。如果主键字段是自动编号字段,但是外, 键字段也可以是数字字段如果字段的两个字段属性相同。例如,您可以自动编号字段和数字字段如果匹配字段的两个字段属性是长整型。数字字段两个公共字段时,他们必须具有相同的字段大小属性设置。

返回页首

通过使用关系文档选项卡创建表关系

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

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

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

    Access 功能区图像

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

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

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

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

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

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

    “编辑关系”对话框

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

    若要强制实施参照完整性此关系,请选择实施参照完整性复选框。有关参照完整性的详细信息,请参阅实施参照完整性部分

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

  8. 单击“创建”。

    Access 绘制两个表之间的关系线。如果选中实施参照完整性复选框,则该线显示得较粗每一端。此外,再次仅当选中实施参照完整性复选框,数字1显示较粗部分上一侧的关系线,以及无限大符号 () 显示较粗部分上另一侧的行,如下图所示。

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

注意: 

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

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

返回页首

通过使用“字段列表”窗格添加字段来创建表关系

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

在“数据表”视图中打开表

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

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

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

打开“字段列表”窗格

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

    Access 功能区图像

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

    “字段列表”窗格

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

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

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

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

    Access 功能区图像

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

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

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

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

    将启动“查阅向导”

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

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

当您从"其他"(无关联) 表中拖动字段并完成查阅向导时,字段列表中的表和字段拖至其中的表之间自动创建新的一对多关系。默认情况下,这种关系,Access,创建不强制参照完整性。若要强制实施参照完整性,您必须编辑关系。请参阅编辑表关系的详细信息部分。

返回页首

编辑表关系

您可以通过在关系文档选项卡中选择,然后对其进行编辑更改表关系。

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

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

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

    - 或 -

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

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

打开“编辑关系”对话框

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

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

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

    显示关系的文档选项卡。

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

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

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

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

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

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

  6. 双击该关系线。

    - 或 -

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

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

    “编辑关系”对话框

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

    编辑关系对话框中,可更改表关系。具体而言,您可以更改的表或查询在任意一侧的关系或在任意一侧的字段。您可以设置联接类型,或实施参照完整性,并选择级联选项。有关联接类型以及如何将其设置的详细信息,请参阅设置联接类型部分。有关如何实施参照完整性,并选择级联选项的详细信息,请参阅实施参照完整性一节。

设置联接类型

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

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

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

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

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

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

设置联接类型

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

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

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

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

选择

关系联接

左的表

右表

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

内部联接

匹配行

匹配行

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

左外部联接

所有行

匹配行

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

右外部联接

匹配行

所有行

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

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

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

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

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

    Access 功能区图像

    显示关系的文档选项卡。

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

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

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

    将显示所有具有关系的表,同时显示关系线。请注意,隐藏的表 (选中隐藏复选框表的属性对话框中的表) 和它们之间的关系将不会显示在导航选项对话框中选择显示隐藏的对象,除非。

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

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

  6. 双击该关系线。

    - 或 -

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

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

  7. 单击联接类型

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

    “联接属性”对话框

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

返回页首

实施引用完整性

参照完整性的目的是防止出现孤立记录并保持同步,以便您没有任何引用不再存在其他记录的记录的引用。通过启用它的表关系中实施参照完整性。实施后,Access 会拒绝违反参照完整性的表关系的任何操作。这意味着 Access 将拒绝更改的引用,并删除引用的目标删除目标这两个更新。若要访问传播参照更新和删除,以便所有相关的行都也会相应更改,请参阅设置级联选项部分。

打开或关闭参照完整性

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

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

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

    Access 功能区图像

    显示关系的文档选项卡。

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

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

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

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

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

  6. 双击该关系线。

    - 或 -

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

    显示编辑关系对话框。

  7. 选中实施参照完整性

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

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

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

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

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

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

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

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

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

设置级联选项

您可能会遇到这样的情况,即需要更改关系一侧的值。在这种情况下,您需要 Access 在一次操作中自动更新所有受影响的行。这样,便可进行完整更新,以便数据库不会出现不一致的状态(即更新某些行,不更新其他行)。Access 通过支持“级联更新相关字段”选项避免了这一问题。如果您实施了参照完整性并选择“级联更新相关字段”选项,在您更新主键时,Access 将自动更新参照主键的所有字段。

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

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

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

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

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

    Access 功能区图像

    显示关系的文档选项卡。

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

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

    将显示所有具有关系的表,同时显示关系线。请注意,隐藏的表 (选中隐藏复选框表的属性对话框中的表) 和它们之间的关系将不会显示在导航选项对话框中选择显示隐藏的对象,除非。

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

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

  6. 双击该关系线。

    - 或 -

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

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

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

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

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

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

返回页首

删除表关系

若要删除表关系,必须删除关系文档选项卡中的关系线光标,以使其指向关系线,,然后单击线条。选中此选项后,该关系线显示得较粗。选中关系线时,按 DELETE。如果已启用,请注意时删除关系,则您还删除该关系,支持参照完整性。因此,Access 将不再自动禁止创建孤立记录关系的"多"端上。

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

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

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

    Access 功能区图像

    显示关系的文档选项卡。

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

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

    将显示所有具有关系的表,同时显示关系线。请注意,隐藏的表 (选中隐藏复选框表的属性对话框中的表) 和它们之间的关系将不会显示在导航选项对话框中选择显示隐藏的对象,除非。

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

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

  6. 按 Delete 键。

    -或者-

    右键单击,然后单击删除

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

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

返回页首

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

此信息是否有帮助?

谢谢您的反馈!

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

×