版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机软件及应用第三章数据库表计算机软件及应用第三章-数据库表3.4 索引文件及其应用索引文件及其应用n3.4.1 索引文件及分类索引文件及分类n1. n索引文件:它仅由两个字段组成,一个字段是排序索引文件:它仅由两个字段组成,一个字段是排序的关键字值(也可以是一个表达式),另一个字段是的关键字值(也可以是一个表达式),另一个字段是每个关键字在原始数据表中对应的记录号。例,在数每个关键字在原始数据表中对应的记录号。例,在数据表中,以编号为关键字段并按升序建立的索引文件据表中,以编号为关键字段并按升序建立的索引文件的示意图如下图所示。的示意图如下图所示。n1. 索引文件索引文件n原数据表中的顺序
2、是按输入的顺序存储在表中的,在索引文原数据表中的顺序是按输入的顺序存储在表中的,在索引文件中,记录是按索引关键字值的顺序排列的,当要查找某一件中,记录是按索引关键字值的顺序排列的,当要查找某一编号的记录时,编号的记录时,VFP先在索引文件中查找该编号,找到后先在索引文件中查找该编号,找到后再根据对应的记录号,在数据表中将记录指针快速移动再根据对应的记录号,在数据表中将记录指针快速移动到该记录上。到该记录上。 n一个索引文件中可以只有一个索引,也可以有多个索引。可以一个索引文件中可以只有一个索引,也可以有多个索引。可以包含多个索引的索引文件称该文件为复合索引文件。在复合索包含多个索引的索引文件称
3、该文件为复合索引文件。在复合索引文件中,需要为每个索引指定一个索引标识名,以便于通过引文件中,需要为每个索引指定一个索引标识名,以便于通过索引标识相互区分各个索引。索引标识相互区分各个索引。 3.4.1 索引文件及分类n2. 索引文件的分类索引文件的分类nVFP支持传统的单入口索引文件(扩展名为支持传统的单入口索引文件(扩展名为.IDX)和复合)和复合索引文件(扩展名索引文件(扩展名.CDX),其中),其中.IDX索引文件中只包含索引文件中只包含一个索引,而一个索引,而.CDX索引文件中可以包含有一个或多个索索引文件中可以包含有一个或多个索引,所以称为复合索引文件。引,所以称为复合索引文件。n
4、复合索引文件,又可分为结构化复合索引文件和非结构化复复合索引文件,又可分为结构化复合索引文件和非结构化复合索引文件两种,其区别在于:结构化复合索引的主文件名合索引文件两种,其区别在于:结构化复合索引的主文件名与数据表的主文件名相同,并随着数据表的打开而打开,在与数据表的主文件名相同,并随着数据表的打开而打开,在添加、更改或删除记录时会自动进行维护;而非结构化复合添加、更改或删除记录时会自动进行维护;而非结构化复合索引文件的主文件名与数据表文件不同,必须用命令打开。索引文件的主文件名与数据表文件不同,必须用命令打开。 3.4.1 索引文件及分类n3. 索引的类型索引的类型n(1)主索引主索引n主
5、索引通常是数据表的关键字索引,作为主索引的字段主索引通常是数据表的关键字索引,作为主索引的字段称为主关键字。主索引不能用在自由表中,而只能用在称为主关键字。主索引不能用在自由表中,而只能用在数据库表中,可用于在永久关系中建立参照完整性。创数据库表中,可用于在永久关系中建立参照完整性。创建主索引的字段不允许有重复值,且一个表只能有一个建主索引的字段不允许有重复值,且一个表只能有一个主索引。主索引。n例如,在数据表中,常用学生证号、身份证号、工例如,在数据表中,常用学生证号、身份证号、工作证号等作为主索引,而姓名可能有同名的情况,作证号等作为主索引,而姓名可能有同名的情况,一般不能作为主索引。一般
6、不能作为主索引。 3.4.1 索引文件及分类n3. 索引的类型索引的类型n(2)候选索引候选索引n候选索引类似于主索引,其索引值就不能有重复值。与主候选索引类似于主索引,其索引值就不能有重复值。与主索引不同的是,一个数据表中可以有多个候选索引,而且索引不同的是,一个数据表中可以有多个候选索引,而且侯选索引不能用来在永久关系中建立参照完整性。侯选索引不能用来在永久关系中建立参照完整性。n(3)惟一索引惟一索引n惟一索引表示索引值只能取一个,如果有两个或两惟一索引表示索引值只能取一个,如果有两个或两个以上的索引值,则只能取其中一个,因此,惟一个以上的索引值,则只能取其中一个,因此,惟一索引使用时可
7、能会隐藏一些记录。例如,若有两个索引使用时可能会隐藏一些记录。例如,若有两个同名的人员,将姓名字段作为惟一索引,则只能找同名的人员,将姓名字段作为惟一索引,则只能找到一个记录,另一个记录将不会找到。到一个记录,另一个记录将不会找到。3.4.1 索引文件及分类n3. 索引的类型索引的类型n(4)普通索引普通索引n普通索引没有上面各索引的限制,是普通索引没有上面各索引的限制,是允许重复索引值的索引。作为普通索允许重复索引值的索引。作为普通索引的字段,其字段值可以重复,也可引的字段,其字段值可以重复,也可以作为排序的依据,但因为可能有多以作为排序的依据,但因为可能有多个相同的索引值,因此查询时会找到
8、个相同的索引值,因此查询时会找到多个符合条件的记录。一个数据表中多个符合条件的记录。一个数据表中可以有多个普通索引。可以有多个普通索引。3.4.2 创建索引文件n1. 建立结构化复合索引文件建立结构化复合索引文件n(1) 在表设计器中创建索引文件在表设计器中创建索引文件n(2) 命令方式创建索引n【格式格式】INDEX ON 表达式 TAG 索引标识名 FOR 条件表达式n ASCENDING|DESCENDINGUNIQUE|CANDIDATEADDITIVEn【功能功能】建立结构化复合索引文件。建立结构化复合索引文件。nUSE RSDAn INDEX ON 编号编号 TAG NBH CAN
9、Dn INDEX ON 性别性别+CTOD(出生日期出生日期) TAG XBCSRQ n2. 建立独立复合索引文件建立独立复合索引文件n独立复合索引文件的扩展名也是独立复合索引文件的扩展名也是.CDX,但其主文件名与数据表文件名,但其主文件名与数据表文件名不相同,且使用时还需单独打开。独立复合索引文件主要用来创建那不相同,且使用时还需单独打开。独立复合索引文件主要用来创建那些使用不太频繁的索引。些使用不太频繁的索引。n独立复合索引文件不能在表设计器中创建,命令建立。独立复合索引文件不能在表设计器中创建,命令建立。n【格式格式】INDEX ON 表达式 TAG 索引标识名 OF 独立复合索引文件
10、名n FOR 条件表达式ASCENDING|DESCENDINGn UNIQUE|CANDIDATEADDITIVEnUSE RSDAn INDEX ON 编号编号 TAG bh OF n INDEX ON 姓名姓名+STR(职务补贴职务补贴) TAG xbbt OF n3. 重新建立索引文件重新建立索引文件n在数据表的使用过程中,当增删记录或数据表中被索引文件在数据表的使用过程中,当增删记录或数据表中被索引文件使用的关键字段改动时,结构化复合索引会随着数据表的打使用的关键字段改动时,结构化复合索引会随着数据表的打开自动打开并能及时得到更新,但如果在使用数据表时未打开自动打开并能及时得到更新,
11、但如果在使用数据表时未打开相应的独立复合索引文件或传统的单入口开相应的独立复合索引文件或传统的单入口.IDX索引文件,索引文件,则索引文件会因为无法及时更新而产生错误索引。这时须打开则索引文件会因为无法及时更新而产生错误索引。这时须打开索引文件,并对其重新索引。索引文件,并对其重新索引。n重执行一遍重执行一遍INDEX命令即可重新索引,更简捷的方法是命令即可重新索引,更简捷的方法是在浏览窗口中打开数据表,然后选择菜单在浏览窗口中打开数据表,然后选择菜单“表表”、“重建建立索引重建建立索引”命令,或打开数据表后用命令,或打开数据表后用REINDEX命令重新建立索引。命令重新建立索引。n【格式格式
12、】REINDEX3.4.3 索引文件的使用n1. 指定主控索引指定主控索引n一个数据表可以建立多个索引文件,每个索引文件中一个数据表可以建立多个索引文件,每个索引文件中又可能包含多个索引,而一种索引就是一种排序方式,又可能包含多个索引,而一种索引就是一种排序方式,所以,在使用索引时,必须指明哪一个索引是对数据所以,在使用索引时,必须指明哪一个索引是对数据表记录排序起作用的,即指定主控索引。在没有指定表记录排序起作用的,即指定主控索引。在没有指定哪一个索引为主控索引之前,数据表的访问顺序仍然哪一个索引为主控索引之前,数据表的访问顺序仍然是原来的物理顺序,即按记录号的顺序访问。是原来的物理顺序,即
13、按记录号的顺序访问。n主控索引和主索引是完全不同的概念。主索引是主控索引和主索引是完全不同的概念。主索引是用来控制数据的完整性的,而主控索引是用来指用来控制数据的完整性的,而主控索引是用来指定目前记录排列顺序的。定目前记录排列顺序的。 1. 指定主控索引指定主控索引n(1) 指定结构化复合索引文件中的索引为主控索引指定结构化复合索引文件中的索引为主控索引n在浏览窗口中打开数据表(以表为例),选择菜单在浏览窗口中打开数据表(以表为例),选择菜单“表表”、“属性属性”命令,即弹出命令,即弹出“工作区属性工作区属性”对话框,对话框,单击单击“索引顺序索引顺序”下拉列表,选择一个索引标识名下拉列表,选
14、择一个索引标识名 ,浏览浏览窗口中记录的排列顺序会立即根据选择的主控索引发生窗口中记录的排列顺序会立即根据选择的主控索引发生变化变化 n设定主控索引后,利用设定主控索引后,利用LIST、DISPLAY命令输出的记命令输出的记录顺序也是排序后的顺序。录顺序也是排序后的顺序。n需要特别强调的是,主控索引只是改变了记录的输出顺序,需要特别强调的是,主控索引只是改变了记录的输出顺序,记录在数据库中的顺序并没有发生变化。记录在数据库中的顺序并没有发生变化。 n通过通过VFP的的USE命令和命令和SET ORDER TO命令也可以指定主控索命令也可以指定主控索引。引。n【格式一格式一】USE 数据表名 O
15、RDER TAG n ASCENDING|DESCENDINGn【格式二格式二】SET ORDER TO TAG ASCENDING|DESCENDINGn【功能功能】指定结构化复合索引文件的索引为主控索引。指定结构化复合索引文件的索引为主控索引。n(2) 指定独立复合索引文件中的索引为主控索引指定独立复合索引文件中的索引为主控索引n对于独立的复合索引文件或单入口的索引文件,需要用命令对于独立的复合索引文件或单入口的索引文件,需要用命令将其打开和关闭,只有打开要使用的独立复合索引文件后,将其打开和关闭,只有打开要使用的独立复合索引文件后,才能指定其中的索引为主控索引。才能指定其中的索引为主控索
16、引。n【格式一格式一】USE ORDER TAG n OF ASCENDING|DESCENDINGn【格式二格式二】SET INDEX TO TAG OF n(4) 关闭索引文件关闭索引文件n【格式一格式一】SET INDEX TOn【格式二格式二】CLOSE INDEXn2. 控制重复值控制重复值n人事档案人事档案Rsda表中的编号字段,是用来惟一标识一表中的编号字段,是用来惟一标识一位职工的,所以该字段的值是不允许重复的。利用位职工的,所以该字段的值是不允许重复的。利用主索引可以解决这个问题,只要为编号字段建立索主索引可以解决这个问题,只要为编号字段建立索引,并将索引类型设置为主索引引,
17、并将索引类型设置为主索引 n3. 使用索引快速查找记录使用索引快速查找记录nFIND命令和命令和SEEK命令都可在指定主控索引的情况下命令都可在指定主控索引的情况下进行记录的查找操作。进行记录的查找操作。 n】SEEK 表达式 n USE Rsda ORDER TAG bhn & 打开打开Rsda同时指定同时指定BH为主控索引为主控索引n SEEK 03001n SET ORDER TO rq n & 重新指定重新指定rq为主控索引为主控索引n SEEK CTOD(202X.09.06) n & 日期格式要与设置相同,否则会出错日期格式要与设置相同,否则会出错n DIS
18、PLAY 3.5 数据表的统计计算数据表的统计计算n3.5.1 累加求和及求平均值n对每个记录的横向求和和统计可以用前面介绍的操作或命令对每个记录的横向求和和统计可以用前面介绍的操作或命令方便地给出,如方便地给出,如REPLACE命令。对于每个记录的纵向求和命令。对于每个记录的纵向求和统计可以用累加求和命令实现。统计可以用累加求和命令实现。n【格式格式】SUM|AVERAGE 表达式表范围FOR 条件表达式n WHILE 条件表达式TO 内存变量名表|TO 数组变量名n【例例】求出中计算机系所有职工的月基本工资平均值及全年实发工资求出中计算机系所有职工的月基本工资平均值及全年实发工资之和并显示
19、。之和并显示。n CLEARn SET TALK OFFn USE Rsgzn AVERAGE 基本工资基本工资 TO pj_jbgz FOR SUBSTR(编号编号,1,2)=03n SUM 实发工资实发工资*12 TO qn_sfgz FOR SUBSTR(编号编号,1,2)=03n ?计算机系职工的月平均工资为:计算机系职工的月平均工资为:,pj_jbgzn ?计算机职工的全年实发工资之和为:计算机职工的全年实发工资之和为:,qn_sfgzn USEn SET TALK ONn RETURNn3.5.2 统计记录个数n【格式格式】COUNT 范围FOR 条件表达式n WHILE 条件表达
20、式TO 内存变量名表|TO 数组变量名n3.5.3 分类汇总n分类汇总对已经建立了索引并且指定了主控索引的数据表,可以按关键字进行分类求和n【格式】TOTAL ON 关键字表达式 TO 新表名 FIELDS 字段名表n 范围FOR 条件表达式WHILE 条件表达式2n 当前数据表必须是按关键字表达式索引过,并指定当前数据表必须是按关键字表达式索引过,并指定该索引为主控索引,以保证具有相同关键字值的记录能连该索引为主控索引,以保证具有相同关键字值的记录能连续访问。续访问。n FIELDS短语给出了需分类求和的字段名,这些字段只能短语给出了需分类求和的字段名,这些字段只能是数值型或货币型的,如果缺
21、省,则对当前表中的所有数值是数值型或货币型的,如果缺省,则对当前表中的所有数值型或货币型字段分类求和。不管选不选型或货币型字段分类求和。不管选不选FIELDS短语,新表与短语,新表与当前表的结构是一样的。当前表的结构是一样的。n 对当前数据表中的若干个关键字表达式相同的记录,生成新对当前数据表中的若干个关键字表达式相同的记录,生成新表中的一条记录。这条记录的非数值型或非货币型字段取自关表中的一条记录。这条记录的非数值型或非货币型字段取自关键字相同的一组记录中首记录的相应字段,参加求和的字段值键字相同的一组记录中首记录的相应字段,参加求和的字段值取自求和结果。取自求和结果。3.6 数据交换数据交
22、换n3.6.1 数组与数据表的数据交换n1. 将数据表中的记录数据保存到数组中将数据表中的记录数据保存到数组中n【格式一】SCATTER FIELDS 字段名表MEMO TO 数组名n【格式二】COPY TO ARRAY 数组名FIELDS 字段名表n 范围FOR 逻辑表达式n【功能功能】将当前打开的数据表中的某些记录数据存储在数组中。将当前打开的数据表中的某些记录数据存储在数组中。n2. 将数组中的数据传递到当前数据表中将数组中的数据传递到当前数据表中n【格式一】GATHER FROM 数组名 FIELDS 字段名表MEMOn【格式二】APPEND FROM ARRAY 数组名n FOR 逻
23、辑表达式FIELDS 字段名表n【功能功能】将数组中各元素的数据传递给当前打开的数据表中。将数组中各元素的数据传递给当前打开的数据表中。n注意:请读者将注意:请读者将COPY TO ARRAY与与SCATTER、APPEND FROM ARRAY与与GATHER FROM的差别搞清楚。的差别搞清楚。3.6.2 文件复制n1. 复制部分记录或整个数据表复制部分记录或整个数据表n【格式格式】COPY TO 表文件名 FOR|WHILE n FIELDS n DATABASE NAME n WITH CDX | WITH PRODUCTIONn | SDF | SYLK | WK1 | WKS |
24、WR1 | WRK | XLS | XL5n | DELIMITED WITH | WITH BLANK | n2. 复制数据表的结构复制数据表的结构n【格式格式】COPY STRUCTURE TO 表文件名FIELDS 字段名表 WITH CDX | WITH PRODUCTIONn说明:说明: 若不选可选项,生成的表结构具有若不选可选项,生成的表结构具有与原数据表相同的字段名、类型和宽度。与原数据表相同的字段名、类型和宽度。n若选若选FIELDS子句,生成的表结构只有子句,生成的表结构只有字段名表中的字段,字段名之间用逗号隔字段名表中的字段,字段名之间用逗号隔开。开。n CDX和和PROD
25、UCTION的意义与复制记录的意义与复制记录时的意义一致。时的意义一致。3.7 多数据表操作多数据表操作n在一个数据库中,一般都有着许多个数据表。在一个数据库中,一般都有着许多个数据表。而在对这些表的使用中,也经常是多个表中而在对这些表的使用中,也经常是多个表中的数据同时被用到。的数据同时被用到。VFP提供了强有力的多提供了强有力的多数据表操作能力,引入了工作区和表的别名数据表操作能力,引入了工作区和表的别名这两个概念。用户可以在不同的工作区中同这两个概念。用户可以在不同的工作区中同时打开多个表,也可以在不同的工作区打开时打开多个表,也可以在不同的工作区打开同一个表,通过表的别名,用户可以引用
26、在同一个表,通过表的别名,用户可以引用在不同工作区打开的表中的数据。不同工作区打开的表中的数据。n3.7.1 工作区的基本概念n所谓“打开”数据表,实际上就是VFP在内存中开辟了一个区域(亦称缓冲区)与磁盘上数据表之间建立起一种映射关系,使VFP通过缓冲区使用磁盘上数据表里的数据,这个内存中的缓冲区就称为工作区。 n1. 工作区的性质工作区的性质n(1)在每)在每一个工作区中只能打开一个表一个工作区中只能打开一个表,VFP最最多可以开辟多可以开辟32767个工作区,打开个工作区,打开32767个表。个表。允允许一个表在几个工作区中同时打开许一个表在几个工作区中同时打开。n( 2 )在某一时刻只
27、能选择一个工作区为在某一时刻只能选择一个工作区为“当前工作当前工作区区”,对其中的表进行操作。,对其中的表进行操作。系统初始状态默认系统初始状态默认1号工作区为当前工作区号工作区为当前工作区。n(3)每一工作区打开的数据表都有各自的记录指)每一工作区打开的数据表都有各自的记录指针。针。在一般情况下,对数据表的操作只能移动当前工在一般情况下,对数据表的操作只能移动当前工作区的记录指针。当使得数据表之间建立临时关系以作区的记录指针。当使得数据表之间建立临时关系以后,另一工作区的记录指针才能根据要求伴随当前工后,另一工作区的记录指针才能根据要求伴随当前工作区的记录指针作相应的移动作区的记录指针作相应
28、的移动。n(4)内存变量对各工作区是公用的内存变量对各工作区是公用的,每一工作区的,每一工作区的字段变量对其它各工作区也是公用的。字段变量对其它各工作区也是公用的。在任意工作在任意工作区都可以对其它工作区的当前记录进行读、写操作区都可以对其它工作区的当前记录进行读、写操作。n工作区的编号和别名工作区的编号和别名 为了标识每一个工作区,系统给每一工作区编号,为了标识每一个工作区,系统给每一工作区编号,号码为号码为1、2、32767。同时还为工作区规定了别。同时还为工作区规定了别名,其中名,其中1至至10号工作区别名为号工作区别名为A、B、J;11至至32767号工作区别名为号工作区别名为W11、
29、W12、W32767。 给数据表命名时,不要与工作区的别名冲突,否则容给数据表命名时,不要与工作区的别名冲突,否则容易引起混乱。易引起混乱。n数据表别名数据表别名 在打开数据表的同时,可以为数据表起一个别名,这个别名也作为在打开数据表的同时,可以为数据表起一个别名,这个别名也作为打开该数据表的工作区别名。打开该数据表的工作区别名。n格式格式USE ALIAS|AGAINn说明:说明: 若不指定工作区,则默认为在当前工作区上打开若不指定工作区,则默认为在当前工作区上打开指定的数据表,并同时关闭以前在当前工作区上打开的数据指定的数据表,并同时关闭以前在当前工作区上打开的数据表。表。nALIAS 为
30、可选项,不指定别名时,原数据表为可选项,不指定别名时,原数据表名就是它的别名。例如,当执行了命令名就是它的别名。例如,当执行了命令“USE Rsda ALIAS da”后,表后,表Rsda的别名就是的别名就是da;而执行了命令;而执行了命令“USE Rsda”后,则默认后,则默认Rsda表的别名。表的别名。n若选择了若选择了IN 0短语,表示在当前没有使用的编号短语,表示在当前没有使用的编号最小工作区上打开数据表。最小工作区上打开数据表。n该命令只是在指定的工作区上打开数据表,并不该命令只是在指定的工作区上打开数据表,并不能改变当前工作区。改变当前工作需要单独的命令。能改变当前工作区。改变当前
31、工作需要单独的命令。n一旦一个工作区上打开了一个数据表,数据表就和一旦一个工作区上打开了一个数据表,数据表就和该工作区建立起对应关系,所以打开数据表后可以用该工作区建立起对应关系,所以打开数据表后可以用数据表的别名来代替工作区别名。数据表的别名来代替工作区别名。3.7.2 工作区的选择和使用n1. 选择工作区n(1) 利用利用“数据工作区数据工作区”窗口选择工作区窗口选择工作区n选择窗口菜单中的数据工作期命令,或单击常用工具选择窗口菜单中的数据工作期命令,或单击常用工具栏中的数据工作期窗口按钮,打开数据工作期窗口。栏中的数据工作期窗口按钮,打开数据工作期窗口。n这时默认当前工作区为这时默认当前
32、工作区为1。单击打开按钮选择一个数。单击打开按钮选择一个数据表打开。若再次单击打开按钮,可以依次在其它工作区据表打开。若再次单击打开按钮,可以依次在其它工作区打开其它数据表,并且打开其它数据表,并且可以用显示的别名选择工作区可以用显示的别名选择工作区。n在数据工作期窗口还可以浏览各工作区打开的数据在数据工作期窗口还可以浏览各工作区打开的数据表,还可以关闭他们。表,还可以关闭他们。n (2) 利用利用SELECT命令选择工作区命令选择工作区n格式格式SELECT |n说明:选择当前工作区,选择的工作区中说明:选择当前工作区,选择的工作区中可以是在前面已经打开了数据表,也可以可以是在前面已经打开了
33、数据表,也可以是未曾打开表。是未曾打开表。n例:例:USE Rsda &默认在默认在1号工作区打开号工作区打开n SELECT d &选择选择4号工作区为当前工作区号工作区为当前工作区n USE Rsgl &在当前(在当前(4号)工作区打开号)工作区打开n USE Rsgz ALIAS gz &在当前在当前4号工作区打开号工作区打开Rsgz,同时关闭,同时关闭Rsgln SELECT 1 &选择选择1区为当前工作区区为当前工作区n LIST & 显示当前(显示当前(1号)工作区数据表(号)工作区数据表(Rsda)的记录)的记录n SELECT g
34、z & 或或SELE 4,SELE d ,但不能但不能SELE Rsgzn LIST &显示显示Rsgz的记录的记录n SELE Rsda &是否可以?为什幺?是否可以?为什幺?n LISTn ?SELECT三三 &给出当前工作区号函数,返回当前工作区号给出当前工作区号函数,返回当前工作区号n USE Rsgl IN 10n ?SELECT三三 n USE &关闭当前工作区上的数据表关闭当前工作区上的数据表n USE Rsgl IN 0 n ?SELECT三三 n2在不同工作区打开同一个数据表在不同工作区打开同一个数据表n例例 SELE 1n USE R
35、sdan USE Rsda ALIAS da IN 3 AGAINn SELE 2n USE Rsda AGAINn3. 使用非当前工作区中表的数据使用非当前工作区中表的数据n方法是在非当前工作区的表的字段名前加方法是在非当前工作区的表的字段名前加注工作区别名或表的别名。格式为:注工作区别名或表的别名。格式为:n- 或或 .n注意,这里的符号注意,这里的符号“-”是是“-”和和“”两两个(均为半角)符号复合而成。个(均为半角)符号复合而成。n例例 n SELE 2n USE Rsgl &未指定主索引顺序未指定主索引顺序,指向号记录指向号记录n USE Rsda IN 3n SELE 3
36、n LOCATE FOR 姓名姓名=b-姓名姓名 &指向同个人指向同个人n DISPLY 部门名,姓名,出生日期,部门名,姓名,出生日期,c.工作日期工作日期 n显示结果如下:n 记录号记录号 部门名部门名 姓名姓名 出生日期出生日期 C-工作日期工作日期n 1 机关机关 韩伟东韩伟东 n在在VFP中,表之间关联有临时关系和永久关系两种关联中,表之间关联有临时关系和永久关系两种关联n1. 设置表的临时关系设置表的临时关系n(1) 利用数据工作期窗口建立表的临时关系利用数据工作期窗口建立表的临时关系3.7.3 数据表的关联n(2) 利用命令建立表之间的临时关系利用命令建立表之间的临时关系
37、n【格式格式】SET RELATION TO 关键字表达式|数值表达式1 INTO 工作区别名1|子表别名1 ,关键字表达式2|数值表达式2 INTO 工作区别名2|表别名2 ADDITIVEn说明: 必须选择父表所在工作区为当前工作区,然后再使用本命令与非当前工作区中的数据表(子表)建立关联。n 选ADDITIVE项可使父数据表与子表建立关联时,原先已存在的关联仍然保留。如果不选用该项,则建立新关联时将取消原有关联。n 子表必须按关键字表达式中的关键字段建立索引,子表必须按关键字表达式中的关键字段建立索引,且被指定为主控索引。若选择数值表达式,则两个表且被指定为主控索引。若选择数值表达式,则
38、两个表是按照记录号相联系,此时子表不要求索引。通常情是按照记录号相联系,此时子表不要求索引。通常情况下,用两个表都具有的相同字段作为建立临时关系况下,用两个表都具有的相同字段作为建立临时关系的关键字表达式。的关键字表达式。n不选任何可选项则取消已与当前表建立的关联。父不选任何可选项则取消已与当前表建立的关联。父表可以与多个子表建立关联。表可以与多个子表建立关联。n建立临时关系以后,父表和子表记录指针的移动的规建立临时关系以后,父表和子表记录指针的移动的规则是:父表指针每移动到一个记录,子表则按关键字则是:父表指针每移动到一个记录,子表则按关键字表达式的值进行索引查找,并将记录指针定位在相应表达
39、式的值进行索引查找,并将记录指针定位在相应记录上。若子表中没有记录和父表的当前记录相关联,记录上。若子表中没有记录和父表的当前记录相关联,子表的记录指针将指向子表的记录指针将指向EOF;若子表中有多个记录和父表;若子表中有多个记录和父表的当前记录相关联,则子表的记录指针将指向第一个相匹配的的当前记录相关联,则子表的记录指针将指向第一个相匹配的记录。记录。n【例】某书店有一个图书库存数据表,存放【例】某书店有一个图书库存数据表,存放有该书店所有的图书信息,另有一个图书调有该书店所有的图书信息,另有一个图书调价数据表,其中存放着图书调价后的新价格价数据表,其中存放着图书调价后的新价格 ,现要求编制
40、程序,用中的单价数据更新中的现要求编制程序,用中的单价数据更新中的单价数据。假设数据表中的记录和中的记录单价数据。假设数据表中的记录和中的记录是一一对应的,即凡是出现在中图书都调价是一一对应的,即凡是出现在中图书都调价了,则可用如下的程序:了,则可用如下的程序:n SET TALK OFFn SET SAFETY OFFn USE TSKCn SELECT 2n USE TSGXTJ n INDEX ON 图书编号图书编号 TAG TSBHn SET ORDER TO TSGHnSELECT 1n SET RELATION TO 图书编号图书编号 INTO Bn REPLACE ALL 单价单
41、价 with TSTJ.单价单价n CLOSE ALLn SET SAFETY ONn SET TALK ONn RETURNn2设置表间的永久关系设置表间的永久关系n永久关系是存储在数据库文件(永久关系是存储在数据库文件(.DBC)中的数据表之间的)中的数据表之间的关系关系,它作为数据库的组成部分一直保留。它不像临时,它作为数据库的组成部分一直保留。它不像临时关系每次打开数据表时都要重新建立。关系每次打开数据表时都要重新建立。n数据库中的数据表建立永久关系后,借助这种关系不数据库中的数据表建立永久关系后,借助这种关系不仅仅从当前选定的表中访问数据,而且还可以访问相仅仅从当前选定的表中访问数据
42、,而且还可以访问相关数据表中的数据。关数据表中的数据。n当在查询设计器,视图设计器、表单设计器中的数据环境中使当在查询设计器,视图设计器、表单设计器中的数据环境中使用这些数据表时,这些永久关系将作为这些表之间的默认连接用这些数据表时,这些永久关系将作为这些表之间的默认连接关系自动出现。而且以后使用查询文件,视图文件及表格文件关系自动出现。而且以后使用查询文件,视图文件及表格文件时,这些永久关系也自动把相关数据表连接起来。时,这些永久关系也自动把相关数据表连接起来。n与永久关系的作用不同,临时关系是控与永久关系的作用不同,临时关系是控制表之间制表之间记录指针的连动关系记录指针的连动关系。永久关。
43、永久关系不具有这个功能,而是使系不具有这个功能,而是使相关数据建相关数据建立连接关系立连接关系。n在永久关系中还可以建立参照完整性,在永久关系中还可以建立参照完整性,对各数据表之间进行完整性约束。对各数据表之间进行完整性约束。n表之间关系的类型表之间关系的类型n表与表之间的关系实际上就是,表与表之间的关系实际上就是,按照某一关键按照某一关键字建立的几个数据表之间相关记录的关系字建立的几个数据表之间相关记录的关系。n根据一个表中的记录与另一表中相关记录之间的根据一个表中的记录与另一表中相关记录之间的对应数量关系,关系的类型可分为:对应数量关系,关系的类型可分为:n一对一关系:是指一个表中的一个记
44、一对一关系:是指一个表中的一个记录与另一表中的唯一记录相关联。录与另一表中的唯一记录相关联。n一对多关系:是指一个表中的一个记一对多关系:是指一个表中的一个记录与另一表中的多个记录相关联,但录与另一表中的多个记录相关联,但另一表中的一个记录则只能与这个表另一表中的一个记录则只能与这个表中的唯一记录相对应。中的唯一记录相对应。n在关系数据库设计时,应避免将表设在关系数据库设计时,应避免将表设计成计成“多对多关系多对多关系”,通过数据规范,通过数据规范化设计将化设计将“多对多关系多对多关系”转换成转换成“一一对多关系对多关系”来建立数据库。也可以在来建立数据库。也可以在两个表间建立一个连接表,两个
45、表分两个表间建立一个连接表,两个表分别和连接表建立一对多关系,间接实别和连接表建立一对多关系,间接实现多对多关系现多对多关系n(1)建立表间的永久连接)建立表间的永久连接n建立建立Rsbm与与Rsgl的关联、的关联、Rsgl与与Rsda的关联。的关联。Rsgl与与Rsda根据编号建立一对根据编号建立一对一的关联;由于在一的关联;由于在Rsbm中一个部门可以中一个部门可以在在Rsgl中找到多条记录,所以两个数据中找到多条记录,所以两个数据表之间的关系为一对多的关系。两个表已表之间的关系为一对多的关系。两个表已根据共同字段根据共同字段“部门名部门名”建立了索引,建立了索引,“一一”方(方(Rsbm)建立了以)建立了以“部门名部门名”为索引标识的主索引,为索引标识的主索引,“多多”方建立了以方建立了以“部门名部门名”为索引标识的普通索引。为索引标识的普通索引。 在数据库设计器中建立永久关系在数据库设计器中建立永久关系 (2) 编辑数据表之
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026春招:医疗器械试题及答案
- 2026春招:信息安全顾问真题及答案
- 2026春招:五粮液笔试题及答案
- 传染病防控与个人卫生知识
- 护理护理教学与科研创新
- 货柜安全检查培训课件
- 2026年广东环境保护工程职业学院高职单招职业适应性测试备考题库带答案解析
- 儿保科服务流程优化报告
- 医疗人员急救培训与考核
- 医疗机构人才队伍建设
- 2025年广东省茂名农垦集团公司招聘笔试题库附带答案详解
- 南京市雨花台区医疗保险管理中心等单位2025年公开招聘编外工作人员备考题库有完整答案详解
- 矿业企业精益管理实施方案与案例
- 2026年共青团中央所属事业单位社会人员公开招聘18人备考题库及答案详解(新)
- 2026年宁夏贺兰工业园区管委会工作人员社会化公开招聘备考题库带答案详解
- 装置性违章课件
- 2024年水利部黄河水利委员会事业单位招聘高校毕业生考试真题
- 2025四川成都益民集团所属企业招聘财务综合岗等岗位28人考试重点题库及答案解析
- 脑缺血与急性脑梗死的影像学表现教学设计
- NB-T32036-2017光伏发电工程达标投产验收规程
- 传感器与检测技术习题集
评论
0/150
提交评论