ACC2000: 定义 Microsoft Access 数据库中的表之间的关系

文章翻译 文章翻译
文章编号: 304467 - 查看本文应用于的产品
初级用户: 要求用户界面的单用户计算机上的知识。

本文只适用于 Microsoft Access 数据库 (.mdb)。

展开全部 | 关闭全部

本文内容

概要

本文介绍如何在 Microsoft Access 数据库中定义的关系。它包括以下主题:
  • 什么是表关系
  • 表关系的类型
    • 一到多关系
    • 多至多关系
    • 一对一关系

  • 如何定义表之间的关系
    • 如何定义一到多或一对一的关系
    • 如何定义一个多至多关系

  • 参照完整性
  • 级联更新和删除
  • 联接类型

更多信息

什么是表关系

在一个关系数据库关系使您能够防止冗余数据。例如对于如果设计的一个跟踪书籍信息的数据库可能有一个表名为标题来存储有关每本书,例如简介册的信息吗? s 标题、 出版物,和出版商的日期。此外,还有可能要存储有关出版商出版商的电话号码、 地址,和邮政编码等的信息。如果您要存储此信息的所有标题中的表,发布者吗? 对于每个书名的出版商打印都会有重复 s 电话号码。

更好的解决方案是一次只能将出版商信息存储在一个单独的表发布服务器。您然后在引用出版商表中的一个条目的书籍表中放置一个指针。

若要确保您的数据不同步,可以实施在标题和发行商表之间的参照完整性。引用完整性关系有助于确保一个表中的信息在另一个的信息相匹配。例如对于书籍表中的每个标题必须与出版商表中的特定出版商相关联。标题不能为数据库中不存在的发布者添加到数据库。

表关系的类型

关系的确立需要通过匹配键的列通常是具有两个表中具有相同名称的列中的数据。在大多数的情况中关系从它为另一个表中该外键中的项的每一行提供唯一标识符的一个表的主键相匹配。例如对于销售可以与创建销售表 (外键) 中的 title_id 列在书籍表 (主键) 和 title_id 列之间的关系由销售的特定书籍相关联。

有三种类型的表之间的关系。创建关系的类型取决于相关的列的定义方式。

一到多关系

-一对多关系是最常见的一种关系。在这种关系类型中的行表可以有许多匹配行,在表 B,但表 B 中的一行可以只有一个匹配的行在表 a。例如对于发布服务器和标题表具有一对多的关系: 每家出版社都出版许多的书,但来自仅一个出版商出版的每个标题。

如果仅有一个相关列是主键或具有唯一约束创建一个一对多的关系。

在 Access 中,-一对多关系的主键方由钥匙符号表示。关系的外键侧由无穷大符号表示。

多至多关系

一个多对多关系中表 A 中的一行在表 B,可以有许多匹配行,反之亦然。通过定义一个名为它的主键包含的来自表 A 和表 B.外键的联接表的第三个表创建这样的关系例如对于作者表和书籍表具有多对多关系通过从这些表中的每个表到 TitleAuthors 表-一对多关系中定义的。TitleAuthors 表的主键是 au_id 列的组合 (在 authors 表吗? s 主键) 和 title_id 列 (书籍表? s 为主键)。

一对一关系

在一对一的关系表 A 中的一行在表 B,可以有最多只能有一个匹配行,反之亦然。如果这两个相关列都是主键或具有唯一约束,则创建一对一关系。

这种类型的关系不常见,因为大多数以此方式相关的信息都是都在一个表。您可以使用一对一关系:
  • 分割具有多个列的表。
  • 隔离出于安全考虑表的一部分。
  • 存储短期和能轻松地删除通过只删除表的数据。
  • 存储仅应用于主表的子集的信息。
在 Access 中,一对一关系的主键方由钥匙符号表示。外键侧也由键符号表示。

如何定义表之间的关系

您在创建表之间的关系时相关的字段不必有相同的名称。但是,相关的字段必须具有相同数据类型,除非主键字段为自动编号字段。只有当两个匹配字段的 字段大小 属性时相同,您可以匹配具有一个数字字段的自动编号字段。例如对于您可以将自动编号字段与数字字段如果匹配这两个字段的 字段大小 属性是长整型。两个匹配字段是数字字段的情况下,即使它们必须具有相同的 字段大小 属性设置。

如何定义一到多或一对一的关系

若要创建一个一多或请按照下列步骤的一对一关系:
  1. 关闭所有已打开的表。您不能创建或修改打开的表之间的关系。
  2. 按 F11 切换到数据库窗口。
  3. 工具 菜单上单击 关系
  4. 如果不具有在数据库中尚未定义任何关系,会自动显示 显示表 对话框。如果您要添加要关联,但不显示 显示表 对话框中的表,请单击 关系 菜单上的 显示表
  5. 双击要关联,在表的名称,然后关闭 显示表 对话框。若要进行一个表与其自身之间的关系将该表添加两次。
  6. 拖动要从一个表与另一个表中相关的字段的字段。若要拖动多个字段,请按下 ctrl 键、 单击每个字段然后将它们拖。

    在大多数的情况中您可以拖动主键字段 (这以粗体文本显示) 从一个表到一个类似字段 (经常具有相同的名称) 在另一个表中称为外键。
  7. 显示 编辑关系 对话框。确保两个列中显示的字段名称是正确的。如有必要,您可以更改它们。

    如有必要,请设置关系选项。如果您需要在 编辑关系 对话框中的特定项的信息,单击问号按钮,然后单击所需的项目。将在本文的后面部分详细介绍这些选项。
  8. 单击 创建 以创建关系。
  9. 重复步骤 5 到 8 的每对想要相关的表。

    当您关闭 编辑关系 对话框中时, Microsoft Access 会询问您是否要保存布局。是否保存布局或不,您创建的关系在数据库中进行保存。

    注: 您可以为表或查询中创建关系。但是,使用查询不实施参照完整性。

如何定义一个多至多关系

若要进行多对多关系,请按照下列步骤操作:
  1. 创建两个将具有多对多关系的表。
  2. 创建一个名为一个连接表的第三个表,然后将每个其他两个表中添加到联接表的新字段具有相同主关键字字段的定义。在连接表中主键字段作为外键。就像可以向任何其他表格一样,您可以添加其他字段来联接表。
  3. 在连接表设置主键以包括其他两个表中的主键字段。例如对于一个的 TitleAuthors 结合表中主键将由构成的订单 id 和产品 id 字段。

    注意: 要创建的主键,请按照下列步骤:
    1. 在设计视图中打开表。
    2. 选择一个或多个您要定义为主键的字段。若要选择一个字段单击行选择器所需字段。

      若要选择多个字段按住 CTRL 键,然后单击行选择器为每个字段。
    3. 单击工具栏上的 主键

      注:您是否在多字段主键中字段的顺序不同于这些字段在表中的顺序单击显示 索引 对话框,然后重新排列字段名称在 针对 名为 primarykey 的索引工具栏上的 索引
  4. 定义两个主表中的每个联接表之间的一对多关系。

参照完整性

参照完整性是一个系统的规则 Microsoft Access 将使用以确保相关表中的记录之间的关系是有效的并确保不会意外删除或更改相关的数据。满足所有以下条件时,您可以设置参照完整性:
  • 从主表的匹配字段是主键或具有唯一索引。
  • 相关的字段具有相同数据类型。有两种例外情况。自动编号字段可以与一个 字段大小 属性设置的长的整型的数字字段和 字段大小 属性设置为同步复制 ID 自动编号字段与数字字段 FieldSize 属性设置为同步复制 id。
  • 这两个表属于同一个 Microsoft Access 数据库。如果表是链接的表,它们必须是在 Microsoft Access 格式中的表,您必须打开要设置参照完整性的存储的数据库。无法为其他格式的数据库中的链接表实施参照完整性。
当您使用参照完整性时,将适用以下规则:

  • 您不能在主表的主键中不存在的相关表的外键字段中输入一个值。但是,可以在该外键中输入一个 Null 值,指定这些记录之间不相关。例如对于您不能有分配给不存在的客户的订单,但您可以通过在客户 id 字段中输入一个 Null 值指派给任何一个订单。
  • 如果在相关表中存在匹配的记录,您不能从主表中删除一条记录。例如对于您不能删除雇员记录在雇员表中是否有订单分配给该员工在订单表中。
  • 如果该记录具有相关记录,您不能更改,主表中的主键值。例如对于您不能更改雇员表中的雇员的 ID,如果有订单分配给该员工在订单表中。

级联更新和删除

实施了参照完整性的关系,您可以指定是否希望 Microsoft Access 将自动级联更新或级联删除相关的记录。如果设置了这些选项删除及更新参照完整性规则允许将通常禁止的操作。当您删除记录或更改主表中的主键值时,Microsoft Access 以保留参照完整性的相关表使必要的更改。

如果您单击以选中 级联更新相关字段 复选框,当您定义一个关系时,每当您更改在主表中的一条记录的主键 Microsoft Access 自动在主键值更新为新值在所有相关的记录。例如对于如果更改了客户表中的客户 ID 订单表中的客户 id 字段是自动更新客户的订单的每一个,这样就不会破坏关系。不显示任何消息的情况下,Microsoft Access 层叠更新。

注:如果主表中的主键是自动编号字段,选中 级联更新相关字段 复选框将没有任何的效果因为您不能更改自动编号字段中的值。

定义一个关系时选择 级联删除相关记录 复选框如果您删除与主表中的记录任何时间 Microsoft Access 都会自动删除相关表中的相关的记录。例如对于如果从客户表中删除某个客户记录客户的所有订单会自动删除 (这将包括与订单记录相关的订单明细表中的记录) 的订单表中。当您选中 级联删除相关记录 复选框与窗体或数据表中删除记录时 Microsoft Access 将警告您可能还删除相关的记录。但是,您在删除使用删除查询的记录时 Microsoft Access 都会自动删除相关表中的记录而不会显示一条警告。

联接类型

有三种连接类型,如下所示:

选项 1 定义一个内部联接。内部联接是一种联接,只有当联接字段中的值符合指定的条件,两个表中的记录在查询的结果中的合并位置。在一个查询默认联接是内部联接的联接字段中的值匹配的情况下,才选择记录。

选项 2 定义一个左的外部联接。 左的外部联接是一种联接的所有中的查询的 SQL 语句中 LEFT JOIN 操作左侧的记录被添加到查询的结果即使右侧表中联接字段中有不匹配的值。

选项 3 定义一个右外部联接。右外部联接是一种联接的所有查询的 SQL 语句中 RIGHT JOIN 操作右侧中的记录被添加到查询的结果即使在左边表中联接字段中没有匹配值。

参考

有关 Microsoft Access 中的关系的其他信息,单击"创建和设计表"主题 Microsoft Access 2000 帮助页在下面的 Microsoft 网站:
Microsoft Access 2000 Help
有关 Microsoft Access 中的关系的详细信息,单击 帮助 菜单上的 Microsoft Access 帮助、 在 Office 助手或应答向导中,键入 创建或修改关系,然后单击 搜索 以查看返回的主题。

属性

文章编号: 304467 - 最后修改: 2004年6月29日 - 修订: 2.1
这篇文章中的信息适用于:
  • Microsoft Access 2000 标准版
关键字:?
kbmt kbhowto KB304467 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 304467
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com