Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-表

【Access文章】表之间如何建立关系

时 间:2014-01-12 08:16:05
作 者:缪炜   ID:24010  城市:江阴
摘 要:这一篇文章我们来讲一下表关系是如何建立的
正 文:

 

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

 要创建一对多或一对一关系,请按照下列步骤操作: 1.关闭已打开的所有表。无法创建或修改打开的表之间的关系。

2.Access 2003 中,按照下列步骤操作:a.在“工具”菜单上,单击“关系”。

Access 2007 中(2010与之类似,这里我就不提了),单击“数据库工具”选项卡上的“显示/隐藏”组中的“关系”。

3.如果尚未在数据库中定义任何关系,则“显示表”对话框自动显示。如果要添加想要相关的表,但“显示表”对话框未显示,请单击“关系”菜单上的“显示表”。

2003操作如下:

2007/2010操作如下:

4.双击想要相关的表的名称,然后关闭“显示表”对话框。要在表与其自身之间创建关系,请将该表添加两次。

5.将想要相关的字段从一个表中拖至另一个表中的相关字段。要拖动多个字段,请按住 Ctrl 并单击每个字段,然后拖动它们。

 大多数情况下,您将主键字段(以粗体文本显示)从一个表中拖至另一个表中称为外键的类似字段(通常具有相同名称)。

6.“编辑关系”对话框将出现。确保显示在两列中的字段名称是正确的。必要时可以更改它们。

 如果需要,可以设置关系选项。如果需要有关“编辑关系”对话框中的某个特定项的信息,请单击问号按钮,然后单击该项。这些选项将在本文的后面部分详细介绍。

7.单击“创建”创建关系。(在2003里是确定)

8.对想要相关的每一对表重复步骤 5 到步骤 8

2003操作界面如下:


2007/2010操作界面:

 

 

 关闭“编辑关系”对话框时,Microsoft Access 将询问您是否要保存布局。不管是否保存布局,您创建的关系都会保存在数据库中。

注意:可以在查询以及表中创建关系。然而,引用完整性对查询不是强制执行的。

如何定义多对多关系

 要创建多对多关系,请按照下列步骤操作: 1.创建两个将具有多对多关系的表。

2.创建称为联接表的第三个表,然后向联接表中添加与其他两个表中的每个表内的主键字段具有相同定义的新字段。在联接表内,主键字段作为外键。与其他任何表一样,您可以向联接表中添加其他字段。

3.在联接表中,设置主键以包括其他两个表中的主键字段。例如,在联接表“书籍作者”中,主键将由“订单 ID”和“产品 ID”字段组成。

注意:要创建一个主键,请按照下列步骤操作: a.在“设计”视图中打开一个表。

b.选择要定义为主键的一个或多个字段。要选择一个字段,请单击所需字段的行选择器。

 要选择多个字段,请按住 Ctrl 键,然后单击每个字段的行选择器。

c. Access 2003 中,单击工具栏上的“主键”。

Access 2007 中,单击“设计”选项卡上“工具”组中的“主键”。

注意:如果希望多字段主键中字段的顺序与表中这些字段的顺序不同,请单击工具栏上的“索引”以显示“索引”对话框,然后对名为 PrimaryKey 的索引的字段名称重新排序。

2003操作界面

2007/2010操作界面:

4.在两个主表中的每一个主表与联接表之间定义一个一对多关系。

引用完整性

 引用完整性是一套规则,Microsoft Access 使用它确保相关表中的记录之间的关系有效,并保证您不会无意间删除或更改相关的数据。当符合下列所有条件时,您可以设置引用完整性: •主表中的匹配字段是主键或者具有唯一索引。

•相关字段具有相同数据类型。但有两种例外情况。自动编号字段可以和 FieldSize 属性设置为长整型的数字字段相关,并且 FieldSize 属性设置为 Replication ID 的自动编号字段可以和 FieldSize 属性设置为 Replication 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 操作右侧的所有记录被添加到查询结果中,即使左侧表中联接字段内没有匹配值也会如此。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助