《Access 数据库中的关系》由会员分享,可在线阅读,更多相关《Access 数据库中的关系(4页珍藏版)》请在金锄头文库上搜索。
1、收藏到手机 转发 评论ccess 数据库中的关系2009-01-02 17:15Access 数据库中的关系 (MDB) 在 Microsoft Access 数据库 (Microsoft Access 数据库:数据和对象(如表、查询或窗体)组成的集合,与特定的主题或用途有关。Microsoft Jet 数据库引擎用于管理数据。)中为每个主题都设置了不同的表后,必须告诉 Microsoft Access 如何再将这些信息组合到一起。该过程的第一步是定义表间的关系 (关系:在两个表的公共字段(列)之间所建立的联系。关系可以为一对一、一对多、多对多。),然后可以创建查询、窗体及报表,以同时显示来自
2、多个表中的信息。例如,下面的窗体包含了来自四个表的信息:“客户”表“订单”表“产品”表“订单明细”表“收单者”框中的客户名称是从“客户”表中检索到的,“订单 ID”和“订购日期”是从“订单”表中检索到的,“单价”和“数量”是从“订单明细”表中检索到的。这些表以多种方式互相链接在一起,以便将各自的信息呈现到窗体中。下面几部分详细解释了现有的关系类型、他们在窗体中协同工作的方式以及应了解的有关使用关系的知识,以便使表能够完全按您所需提供数据库信息。关系的工作方式在前一个示例中,四个表中的字段必须是互相协调的,这样它们才能显示有关相同定单的信息。这种协调是通过表之间的关系来实现的。关系通过匹配键字段
3、中的数据来建立,键字段通常是两个表中使用相同名称的字段。在大多数情况下,两个匹配的字段中一个是所在表的主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。),对每一记录提供唯一的标识符,而另一个是所在表的外键 (外键:引用其他表中的主键字段(一个或多个)的一个或多个表字段(列)。外键用于表明表之间的关系。)。例如,通过创建“雇员ID”字段之间的关系,以使雇员和他们负责的订单之间发生相应的关系。雇员ID 出现在两个表中,一个是主键.一个是外键。一对多关系一对多关系是关系中最常用的类型。在一对多关系中
4、,A 表中的一个记录能与 B 表中的许多记录匹配,但是在 B 表中的一个记录仅能与 A 表中的一个记录匹配。一个供应商.可以提供多种产品.但每种产品只由一个供应商提供。多对多关系在多对多关系中,A 表中的记录能与 B 表中的许多记录匹配,并且在 B 表中的记录也能与 A 表中的许多记录匹配。此类型的关系仅能通过定义第三个表(称作联结表)来达成,它的主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。)包含二个字段,即来源于 A 和 B 两个表的外键 (外键:引用其他表中的主键字段(一个或多个)的一
5、个或多个表字段(列)。外键用于表明表之间的关系。)。多对多关系实际上是和第三个表的两个一对多关系。例如,“订单”表和“产品”表有一个多对多的关系,它是通过建立与“订单明细”表中两个一对多关系来创建的。一份订单可以有多种产品,每种产品可以出现在多份订单中。“订单”表中的主键“产品”表中的主键一份订单可以有多种产品.每种产品可以出现在多份订单中。一对一关系在一对一关系中,A 表中的每一记录仅能在 B 表中有一个匹配的记录,并且 B 表中的每一记录仅能在 A 表中有一个匹配记录。此类型的关系并不常用,因为大多数以此方式相关的信息都在一个表中。可以使用一对一关系将一个表分成许多字段,或因安全原因隔离表
6、中部分数据,或存储仅应用于主表的子集的信息。例如,可以创建一个表来追踪参加募捐足球赛的雇员。“足球队员”表中的每个足球队员在“雇员”表中都有一个相匹配的记录。每个足球队员在“雇员”表中都有一个相匹配的记录。该值集是“雇员ID”字段和“雇员”表的子集。关于定义关系Microsoft Access 中创建关系的种类取决于相关字段是如何定义的:如果仅有一个相关字段是主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。)或具有唯一索引 (唯一索引:通过将字段的索引属性设为有(无重复)而定义的索引。唯一索引
7、不允许字段中有重复的项。将字段设为主键会自动将字段定义成唯一的。),则创建一对多关系。如果两个相关字段都是主键或唯一索引,则创建一对一关系。多对多关系实际上是某两个表与第三个表的两个一对多关系,第三个表的主键包含两个字段,分别是前两个表的外键 (外键:引用其他表中的主键字段(一个或多个)的一个或多个表字段(列)。外键用于表明表之间的关系。)。另外,还可以创建某个表与其自身之间的关系。这对于在同一个表内执行查阅查询是很有用的。例如在“雇员”表中,可以定义“雇员ID”字段和“上级”字段之间的关系,因此,“上级”字段可以显示相匹配的“雇员ID”字段的雇员数据。注释 将某个字段拖动到另一个字段,且这两
8、个字段都既不是主键也没有唯一索引时,将创建一种未定的关系。在包含具有未定关系的表的查询中,Microsoft Access 将在两个表之间显示一条默认的连接 (联接:表格或查询中的字段与另一表格或查询中具有同一数据类型的字段之间的关联。联接向程序说明了数据之间的关联方式。根据联接的类型,不匹配的记录可能被包括在内,也可能被排除在外。)线,但是不强制实现参照完整性 (参照完整性:输入或删除记录时,为维持表之间已定义的关系而必须遵循的规则。),并且也不保证任何一个表中的记录是唯一的。参照完整性参照完整性是一个规则系统,Microsoft Access 使用这个系统用来确保相关表中记录之间关系的有效
9、性,并且不会意外地删除或更改相关数据。在符合下列所有条件时,可以设置参照完整性:来自于主表 (主表:一对多关系中两个相关表的“一”端。主表应有主键,而且每条记录都应是唯一的。)的匹配字段是主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。)或具有唯一索引 (唯一索引:通过将字段的索引属性设为有(无重复)而定义的索引。唯一索引不允许字段中有重复的项。将字段设为主键会自动将字段定义成唯一的。)。相关的字段都有相同的数据类型 (数据类型:决定字段可拥有的数据类型的字段特征。数据类型包括 Boolean
10、、Integer、Long、Currency、Single、Double、Date、String 和 Variant(默认)。)。但是有两种例外情况:“自动编号” (“自动编号”数据类型:Microsoft Access 数据库中的一种字段数据类型,当向表中添加一条新记录时,这种数据类型会自动为每条记录存储一个唯一的编号。可以产生三种编号:顺序号、随机号和同步复制 ID。)字段可以与“字段大小”属性设置为“长整型”的“数字”字段相关;“字段大小”属性设置为“同步复制 ID”的“自动编号”字段可以与一个“字段大小”属性设置为“同步复制 ID”的“数字”字段相关。两个表都属于同一个 Microso
11、ft Access 数据库。如果表是链接的表 (链接表:存储在已打开数据库之外的文件中的表,Access 可以访问它的记录。可以对链接表中的记录进行添加、删除和编辑等操作,但不能更改其结构。),它们必须是 Microsoft Access 格式的表,并且必须打开存储此表的数据库以设置参照完整性。不能对数据库中的其他格式的链接表实施参照完整性。使用参照完整性时要遵循下列规则:不能在相关表的外键 (外键:引用其他表中的主键字段(一个或多个)的一个或多个表字段(列)。外键用于表明表之间的关系。)字段中输入不存在于主表的主键中的值。但是,可以在外键中输入一个 Null (Null:可以在字段中输入或用
12、于表达式和查询,以标明丢失或未知的数据。在 Visual Basic 中,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null值。) 值来指定这些记录之间并没有关系。例如,不能为不存在的客户指定订单,但通过在“客户ID”字段中输入一个 Null 值,则可以有一个不指派给任何客户的订单。如果在相关表中存在匹配的记录,则不能从主表中删除这个记录。例如,如果在“订单”表中有订单分配给某一雇员,就不能在“雇员”表中删除此雇员的记录。如果某个记录有相关的记录,则不能在主表中更改主键值。例如,如果在“订单”表中有订单分配给某个雇员时,不能在“雇员”表中更改这位雇员的雇员ID。级联
13、更新和级联删除对实行参照完整性 (参照完整性:输入或删除记录时,为维持表之间已定义的关系而必须遵循的规则。)的关系,可以指定是否允许 Microsoft Access 自动对相关记录进行级联更新 (级联更新:对于在表之间实施参照完整性的关系,当更改主表中的记录时,相关表(一个或多个)中的所有相关记录也随之更新。)和级联删除 (级联删除:对于在表之间实施参照完整性的关系,当删除主表中的记录时,相关表(一个或多个)中的所有相关记录也随之删除。)。如果设置了这些选项,通常为参照完整性所禁止的删除及更新操作就会获准进行。在删除记录或更改主表 (主表:一对多关系中两个相关表的“一”端。主表应有主键,而且
14、每条记录都应是唯一的。)中的主键 (主键:具有唯一标识表中每条记录的值的一个或多个域(列)。主键不允许为 Null,并且必须始终具有唯一索引。主键用来将表与其他表中的外键相关联。)的值时,Microsoft Access 将对相关表做必要的更改以保留参照完整性。当定义一个关系时,如果选择了“级联更新相关字段”复选框,则不管何时更改主表中记录的主键,Microsoft Access 都会自动在所有相关的记录中将主键更新为新值。例如,如果在“客户”表中更改某个客户ID,则在“订单”表中每个有该客户订单的记录中,“客户ID”字段都会自动更新,这样它们之间的关系将不会破坏。Microsoft Acce
15、ss 的级联更新将不显示任何消息。注释 如果主表中的主键是“自动编号” (“自动编号”数据类型:Microsoft Access 数据库中的一种字段数据类型,当向表中添加一条新记录时,这种数据类型会自动为每条记录存储一个唯一的编号。可以产生三种编号:顺序号、随机号和同步复制 ID。)字段,设置“级联更新相关字段”复选框将没有任何效果,因为“自动编号”字段中的值是不能更改的。当定义一个关系时,如果选中了“级联更新相关字段”复选框,则不管何时删除主表中的记录,Microsoft Access 都会自动删除相关表中的相关记录。例如,如果在“客户”表中删除某个客户记录,在“订单”表中此客户的所有订单都会自动删除(包括和“订单”记录相关的“订单明细”表中的记录)。当使选中“级联删除相关记录”复选框来删除窗体或数据表中的记录时,Microsoft Access 将发出相关记录也将删除的警告消息。但是,当使用删除查询 (删除查询:一种查询(SQL 语句),它从一个或多个表中删除那些符合指定条件的行。)来删除记录时,Microsoft Access 将自动删除相关表中的记录,而不显示任何警告消息。