| 当前位置:洪恩在线
-> 继续教育 ->
计算机考级 -> 二级FOXBASE+语言 |
|
||||||||||||||||||||||||||||||
|
数据库之间的关联是在几个数据库的记录之间设立某种逻辑对应的关系,移动记录指针时,被关联的数据库的记录指针跟随移动。数据库的关联也称为逻辑联接。它实际上并没有进行联接操作,但是从逻辑上能够得到等值联接的效果。
一、用关键字表达式设立关联 用命令可以在两个打开的数据库文件之间建立指针联动关系。关联数据库的记录指针移动时,被关联的数据库指针按照设立关联时所确定的相关方式移动。 命令格式: SET RELATION TO[<关键字表达式>INTO<别名>][ADDITIVE] 命令注释: (1)使用此命令之前,必须先打开有关数据库。在当前工作区打开的数据库称为关联数据库,也称为父数据库。用别名指定的其他工作区上的数据库称为被关联数据库,也称为子数据库。 (2)关键字表达式通常包括两个库文件的公共字段,被关联的数据库必须按照关键字表达式索引。此时,当关联数据库的指针重新定位时,被关联的数据库的指针按索引文件中与关键字表达式相匹配的第一个记录定位。 (3)建立起关联之后,关联数据库的记录指针带动被关联的数据库指针移动,反方向则不然。 (4)若选用ADDITIVE,则在保留原来建立的关联基础上,增加新的关联。以此实现一个数据库与多个数据库之间的关联。 (5)不能建立数据库指针的环状关联。 二、非同名字段的关联 关联命令SET RELATION TO[<关键字表达式>INTO<别名>][ADDITIVE]中的<关键字表达式>通常使用同名字段表示关联条件。实际上,只要字段的语义相同,它们之间存在确定的逻辑关系都可以组成合法的表达式,设立合理的关联条件。 设有两个数据库文件:学生库(XS.DBF)、班级库(BJ.DBF)。每个学生学号的前四位是学生所在的班级号。数据库结构如下: 1)XS.DBF 结构:
2)BJ.DBF 结构:
如果在1区打开班级数据库BJ.DBF,在2区打开学生数据库XS.DBF,对班级数据库按“班级号”索引,通过学号与班级号设立关联,表达式写成:LEFT(学号,4)或者SUBSTR(学号,1,4)。两个数据库记录之间关联逻辑为: A->班级号=B->LEFT(学号,4) 这里使用的两个函数功能如下: 1.SUBSTR(<字串表达式>,<数值表达式1>[,<数值表达式2>]) 功能:返回字串表达式的子串,子串在字串中的起始位置由数值表达式1决定,长度由数值表达式2决定,若数值表达式2缺省,则一直取到最后一个字符。 2.LEFT(<字串表达式>,<数值表达式1>) 功能:从字串表达式最左边开始截取给定个数的字符。字符个数由数值表达式确定。 三、按记录号设立关联 命令格式: SET RELATION TO[RECNO()|<数值表达式>][INTO<别名>][ADDITIVE] 命令注释: (1) 按记录号关联不要求索引。关联表达式使用记录号函数RECNO(),表示关联数据库与被关联数据库的记录号保持相等。 (2) 若选用数值表达式,两个数据库的记录号之间保持表达式所定义的联系。如,RECNO()5表示被关联的子数据库记录号保持比父数据库多5,当父数据库记录号为1时,子数据库记录指针指向6。 (3)其他选项意义同前。 四、取消关联 取消数据库间的关联分为三种情况: 1.用新关联替代旧关联 在关联命令中如果不选用ADDITIVE选项,则在建立新的关联的同时,取消了当前数据库原来建立的关联,如果选用ADDITIVE,则在保留原来建立关联的基础上,增加新的关联。以此实现一个数据库与多个数据库之间的关联。 2.取消数据库间的关联,保持数据库打开状态 缺省所有选项,直接用SET RELATION TO 表示取消当前数据库的关联。但当前数据库仍处于打开状态。 SET RELATION TO不设立新的关联,则取消当前的关联。这种命令格式与USE相似,不打开新的数据库,则关闭当前数据库。 3.关闭数据库 数据库被关闭之后,自然取消了它所设立的任何关联。数据库之间的关联和索引的使用等部属于使用数据库时的环境状态。关闭数据库之后就自然撤消了所有与之相关的环境设置。下次再打开时,必须重新设立。 如果把FoxBASE的环境信息,包括数据库的关联和索引等状态保存到环境文件.VUE中存储起来,以后再使用时可以恢复当前状态。
课堂提问: |
|
|
||||||||||||||||||||||||||||