《《VFP课件新》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VFP课件新》PPT课件.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章第四章 索引、排序与多表操作索引、排序与多表操作4.1排序排序4.2索引索引4.3数据完整性数据完整性4.4多表操作多表操作4.5自由表自由表记录按录入先后次序存储,数据维护比较方便,但检索速度较慢。因此,数据库系统经常需要按照用户的要求对数据表文件中的记录进行重新组织排列。VFP提供了两种重新组织数据的方法,即排序与索引。4.1 排序对表文件进行物理位置的整理对表文件进行物理位置的整理命令格式:命令格式:Sort To On/A/D/C,/A/D/C Ascending|Descending For Fields 4.1 排序排序说明:说明:指定主排序字段。如果有多个排序字段,先按排序
2、,对于字段值相同的记录,再按排序。:新建的数据表文件名,默认扩展名.dbf。/A/D/C:指明按字段的升序、降序排序和排序时不区分字母大小写。Ascending|Descending:对没有用/A或/D指明排序顺序的字段按升序或降序排序。For:对满足条件的记录进行排序。Fields:指定新文件中所含字段及其顺序。注意:该命令最终的结注意:该命令最终的结果是生成一个新表!且果是生成一个新表!且使用该命令不需要建索引!使用该命令不需要建索引!4.1 排序排序例1:use coursebrowsesort to 学时 on 学时/D fields 课程号,课程名,学时use 学时browse4.2
3、 索引索引4.2.1 4.2.1 索引的概念索引的概念索引的概念索引的概念一本书的目录可看作是一个索引文件,该文件中只有“章节标题”及其所在的“页码”两项,根据此文件可很快找到所需的内容,而不必一页一页地顺序翻阅。对表文件也可建立类似的索引文件。与排序相比,索引是一种逻辑排序方法,它不改变记录在物理上的排列顺序,而是建立一个与原文件相对应的索引文件,索引文件中存储了一组记录指针,它指向原文件的记录。4.2 索引索引4.2.1 索引的概念索引的概念VFP索引是指由指针构成的文件,这些指针逻辑上按照索引关键字值进行排序。即索引是一个二维表,其中仅含有两列:关键字的值和记录在数据表中的物理位置。创建
4、索引就是建立一个由指向.dbf文件记录的指针构成的文件。索引和表分别存储在两个文件中。使用索引可以加速对表的查询操作。4.2 索引索引4.2.1 索引的概念索引的概念1.索引的作用索引的作用可使表文件按索引表达式的值进行逻辑排序可以快速查询表中数据要建立两数据库表间的永久性关系,必须建立索引文件4.2 索引索引4.2.1 索引的概念索引的概念2.索引文件的构成索引文件的构成索引关键字记录号3.索引文件的特点索引文件的特点索引文件不能显示物理顺序物理顺序逻辑顺序逻辑顺序使用顺序使用顺序记录存储在表文记录存储在表文件中的实际排列件中的实际排列顺序顺序按照某个关键字按照某个关键字或关键字表达式或关键
5、字表达式在关键字与记录在关键字与记录号之间建立的一号之间建立的一种逻辑上的顺序种逻辑上的顺序实际操作的记实际操作的记录顺序录顺序4.2 索引索引4.2.2 4.2.2 索引的分类索引的分类索引的分类索引的分类1.1.索引文件的分类(按照索引的组织类型分类)索引文件的分类(按照索引的组织类型分类)索引文件的分类(按照索引的组织类型分类)索引文件的分类(按照索引的组织类型分类)VFP6.0索引文件索引文件单项索引文件单项索引文件(IDX)复合索引文件复合索引文件(CDX)包含一个索引入口的索包含一个索引入口的索引文件,不会随着表的引文件,不会随着表的打开而自动打开打开而自动打开包含多个索引入口的索
6、包含多个索引入口的索引文件,在使用时需明引文件,在使用时需明确指定打开确指定打开压缩型压缩型非压缩型非压缩型结构复合索引文件结构复合索引文件非结构复合索引文件非结构复合索引文件每次表打开时自动打每次表打开时自动打开,并且在表修改时开,并且在表修改时自动更新的索引文件,自动更新的索引文件,通常与表同名,但扩通常与表同名,但扩展名是展名是.CDX4.2 索引索引4.2.2 4.2.2 索引的分类索引的分类索引的分类索引的分类三种索引文件的比较三种索引文件的比较索引类型索引类型描述描述索引索引数目数目限制限制独立独立.idx非结构非结构.cdx结构结构.cdx必须明确的打开必须明确的打开,.idx的
7、基本的基本名由用户定义名由用户定义必须明确的打开必须明确的打开,使用和表名使用和表名不同的基本名不同的基本名使用和表文件名相同的文件名使用和表文件名相同的文件名,和表一起自动打开和表一起自动打开 单索引单索引多索引多索引,称为称为”标志标志”多索引多索引,称为称为”标志标志”有效表达式有效表达式限制在限制在100个个字符之内字符之内有效表达式有效表达式限制在限制在240个字符之内个字符之内有效表达式有效表达式限制在限制在240个字符之内个字符之内4.2 索引索引4.2.2 4.2.2 索引的分类索引的分类索引的分类索引的分类2.2.按照索引的功能分类按照索引的功能分类按照索引的功能分类按照索引
8、的功能分类主索引:主索引:主索引:主索引:要求索引表达式的值是唯一能够标识每个记录处理顺序的值。自由表不能建立主索引,自由表不能建立主索引,一个数据库表只能建立一个主索引。候选索引:候选索引:像主索引一样,要求索引表达式的值是唯一能够标识每个记录处理顺序的值。一个表可以建立多个候选索引。惟一索引:惟一索引:当字段或表达式的值出现重复时,在索引中只保留一个记录。即索引中表达式的值是唯一的,而数据表中的字段值是可以重复的。唯一性是指索引项索引项的惟一,而不是字段值的惟一。一个数据表中可建立多个惟一索引。普通索引:普通索引:允许字段或表达式的值重复,一个数据表中可建立多个普通索引。注意事项:注意事项
9、:表中所建不同类型表中所建不同类型索引文件个数?索引文件个数?什么时候使用什什么时候使用什么类型的索引?么类型的索引?4.2 索引索引4.2.2 4.2.2 索引的分类索引的分类索引的分类索引的分类说明说明:表的主索引和候选索引存储在结构复合索引文件中,同时以Primary属性或Candidate属性存储在数据库中。这两种索引不能保存在非结构.cdx文件中,也不能保存在.idx 文件中。这是因为:这两种索引必须和表同时打开。其他两种索引文件可以存储惟一索引和普通索引。一个数据表文件可以建立多个索引文件,也可以同时打开多个索引文件,但在同一时间内只有一个索引起作用,这个索引被称为主控索引(当前索
10、引)主控索引(当前索引)。4.2 索引索引4.2.2 4.2.2 索引的分类索引的分类索引的分类索引的分类为了管理和使用索引,VFP给索引编了序号,序号从1开始。当打开多个索引文件时,VFP首先按打开.idx文件的顺序,给idx文件中的索引编号;然后再对结构复合索引文件中的标识,按创建标识的先后顺序编号;最后,对一般的复合索引文件中的标识,按创建的顺序编号。4.2 索引索引4.2.2 4.2.2 索引的分类索引的分类索引的分类索引的分类建立在一个表之上的各种索引文件建立在一个表之上的各种索引文件基本表基本表独立索独立索引文件引文件1独立索引文独立索引文件件m结构复合索结构复合索引文件引文件复合
11、索复合索引文件引文件1复合索引复合索引文件文件n每个文件中只有一每个文件中只有一个索引个索引文件中可以有多个索引文件中可以有多个索引,称为索引称为索引”标标识识”或或”标签标签”4.2 索引索引4.2.3 4.2.3 索引的建立索引的建立索引的建立索引的建立1.1.在表设计器中建立索引在表设计器中建立索引在表设计器中建立索引在表设计器中建立索引“字段”选项卡:建立单字段的普通索引。“索引”选项卡:指定索引名、类型、索引顺序(升序或降序),建立索引表达式、筛选条件。4.2.3 索引的建立索引的建立设置过程中可借助设置过程中可借助于表达式生成器来于表达式生成器来进行进行将书本命令分解成两条:将书本
12、命令分解成两条:此方式生成的索此方式生成的索引文件类型是引文件类型是?索引选项卡索引选项卡移移动动按按钮钮排排序序按按钮钮在此框中输在此框中输入索引标记入索引标记在此列表框中在此列表框中选择索引类型选择索引类型在此文本框中输在此文本框中输入索引表达式入索引表达式在此输入条在此输入条件表达式件表达式表表达达式式生生成成按按钮钮结构化复合索引结构化复合索引文件文件4.2 索引索引4.2 索引索引4.2.3 索引的建立索引的建立2.2.命令方式命令方式命令方式命令方式格式一:格式一:INDEX ON TO FOR COMPACT UNIQUE ADDITIVE格式二:格式二:INDEX ON TAG
13、 OF FOR ASCENDINGDESCENDING UNIQUE|CANDIDATE ADDITIVE4.2 索引索引4.2.3 索引的建立索引的建立(1)(1)建立单索引文件建立单索引文件建立单索引文件建立单索引文件格式:格式:Index On To Additive 说明:说明:小于等于100个字符。文件扩展名为.idx。该索引文件要用Set Index To命令打开。Additive:建立索引文件的同时保持先前打开的索引文件不被关闭。单索引文件建立后,自动处于打开状态并作为当前索引生效。4.2 索引索引4.2.3 4.2.3 索引的建立索引的建立索引的建立索引的建立例2:use st
14、udent index on 出生日期 to csrq list index on 性别 to sex unique list4.2 索引索引4.2.3 索引的建立索引的建立 建立复合索引文件建立复合索引文件建立复合索引文件建立复合索引文件格式:格式:Index On Tag Of For Ascending|Descending Unique|Candidate Additive说明:说明:小于等于240个字符。:用以区分不同索引的索引标识。Of:省略该可选项,建立结构复合索引文件,否则建立非结构复合索引文件。复合索引文件的扩展名为.cdx。For:对满足条件的记录进行索引。Additive
15、:省略该可选项,指关闭以前的索引。索引命令不能建立主索引。默认建立的是普通索引。ASCENDING|DESCENDING:ASCENDING 指定复合索引文件为升序,这是默认值。指定复合索引文件为升序,这是默认值。DESCENDING 指定复合索引文件为降序。指定复合索引文件为降序。结构复合索引文件的特点:结构复合索引文件的特点:在打开表时自动打开在打开表时自动打开同一索引文件中能包含多个索引方案同一索引文件中能包含多个索引方案在增、删、修改时系统自动维护索引在增、删、修改时系统自动维护索引注意:注意:绝大多数情况下都是绝大多数情况下都是用结构化复合索引,用结构化复合索引,某些场合可能建立某些
16、场合可能建立临时性的单一索引临时性的单一索引UNIQUE:对于一个索引关键值,只有第一个满足:对于一个索引关键值,只有第一个满足该值的记录包含在该值的记录包含在.IDX文件或文件或.CDX标识中。标识中。利用利用UNIQUE子句可以避免显示或访问记录的重复值。子句可以避免显示或访问记录的重复值。4.2 索引索引4.2.3 4.2.3 索引的建立索引的建立索引的建立索引的建立例3:use studentindex on 姓名 tag xm descendinglistindex on 性别+dtoc(出生日期)tag xbcsrqlist4.2 索引索引4.2.3 4.2.3 索引的建立索引的建
17、立索引的建立索引的建立例4:use studentindex on 姓名 tag xingming of xmlistindex on 性别 tag xingbie of xm uniquelist4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用1.1.索引文件的打开索引文件的打开索引文件的打开索引文件的打开结构化索引文件是随表的打开而自动打开。而其它索引文件可用命令打开。4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用1.1.索引文件的打开索引文件的打开索引文件的打开索引文件的打开(1)(1)表文件与索引文件同时打开表文件与索引
18、文件同时打开表文件与索引文件同时打开表文件与索引文件同时打开格式:格式:格式:格式:use indexorder tagofascendingdescending功能:功能:打开指定的表文件及相关的索引文件打开指定的表文件及相关的索引文件4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用1.1.索引文件的打开索引文件的打开索引文件的打开索引文件的打开(1)(1)表文件与索引文件同时打开表文件与索引文件同时打开表文件与索引文件同时打开表文件与索引文件同时打开说明:说明:Index?:?:表示打开的索引文件。若选择表示打开的索引文件。若选择“?”,系,系统将出现统将出
19、现“打开打开”对话框,供用户选择索引文件名。若对话框,供用户选择索引文件名。若中的第一个索引文件是单索引文件,则它是主索引文件,若第一中的第一个索引文件是单索引文件,则它是主索引文件,若第一个索引文件是复合索引文件,则表文件的记录将以物理顺序被访问。个索引文件是复合索引文件,则表文件的记录将以物理顺序被访问。指定要打开的索引文件,索引文件中的文件扩展名指定要打开的索引文件,索引文件中的文件扩展名可以省略,但若存在同名的单索引文件和复合索引文件,必须带扩展可以省略,但若存在同名的单索引文件和复合索引文件,必须带扩展名。名。4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引
20、的使用1.1.索引文件的打开索引文件的打开索引文件的打开索引文件的打开(1)(1)表文件与索引文件同时打开表文件与索引文件同时打开表文件与索引文件同时打开表文件与索引文件同时打开说明:说明:order子句用来指定主索引,选择此选项时,主索引文件将不是子句用来指定主索引,选择此选项时,主索引文件将不是中的第一个单索引文件,而是此选项指定的单索引中的第一个单索引文件,而是此选项指定的单索引文件或标识。文件或标识。将指定主索引的编号,若为将指定主索引的编号,若为0,则表示,则表示不设主索引。不设主索引。将指定的单索引文件设置为主索引。将指定的单索引文件设置为主索引。tagof:表示将复合索引文件中的
21、:表示将复合索引文件中的指定标识作为主索引。不设定指定标识作为主索引。不设定of 时表示为结构时表示为结构复合索引文件。复合索引文件。ascendingdescending:表示主索引被强制以升序或降序索引;:表示主索引被强制以升序或降序索引;不包括此项时,主索引按原有顺序打开。不包括此项时,主索引按原有顺序打开。4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用1.1.索引文件的打开索引文件的打开索引文件的打开索引文件的打开(2)(2)打开表文件后再打开索引文件打开表文件后再打开索引文件打开表文件后再打开索引文件打开表文件后再打开索引文件格式:格式:SET IN
22、DEX TO 说明:说明:指定同时打开的单索引文件或非结构复合索引文件。:指定同时打开的单索引文件或非结构复合索引文件。省略可选项,省略可选项,Set Index To用于关闭除结构复合索引文件以外的索引用于关闭除结构复合索引文件以外的索引文件。文件。索引文件列表中的第一个索引文件将作为当前索引文件。对于单索引索引文件列表中的第一个索引文件将作为当前索引文件。对于单索引文件,索引顺序将立即生效。非结构复合索引文件,则其第一个索引文件,索引顺序将立即生效。非结构复合索引文件,则其第一个索引生效。生效。4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用1.1.索引文件
23、的打开索引文件的打开索引文件的打开索引文件的打开例5:use studentset index to csrqlist4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用2.2.设置主控索引(当前索引)设置主控索引(当前索引)设置主控索引(当前索引)设置主控索引(当前索引)在同时打开多个索引时,要设置主控索引。(1)命令方式命令方式格式:格式:SET ORDER TO|TAG说明:说明:按索引文件总的序号指定当前索引。先按Set Index To命令中的文件列表顺序为单索引文件编号,再按创建时的先后顺序为结构复合索引文件中的索引编号。:将指定的单索引文件作为当前索引
24、。Tag:将指定的复合索引名作为当前索引。4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用2.2.设置主控索引(当前索引)设置主控索引(当前索引)设置主控索引(当前索引)设置主控索引(当前索引)例6:use student set order to tag xm list 4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用2.2.设置主控索引(当前索引)设置主控索引(当前索引)设置主控索引(当前索引)设置主控索引(当前索引)(2)菜单方式菜单方式打开“浏览”窗口,选择“表”-“属性”菜单命令,在“工作区属性”对话框的“索引顺序”框中
25、选择一个索引项,浏览窗口中的记录就会按照该索引顺序排列。4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用3.关闭索引关闭索引Set index to:关闭当前索引文件Close index:关闭当前工作区中打开的所有单索引文件和独立复合索引文件,而表文件和结构复合索引文件保持打开状态。Use:关闭表的同时关闭索引文件4.2 索引索引4.2.4 4.2.4 索引的使用索引的使用索引的使用索引的使用4.删除索引删除索引命令格式:命令格式:delete tag all|,of说明:明:若要从结构复合.cdx文件中删除索引,可使用命令delete tag ,,若要删除全
26、部索引,使用命令:delete tag all 若要删除非结构.cdx文件中的索引,可使用delete tag 命令的of子句;eg:delete tag xingming of xm若要删除独立.idx文件,可使用delete file命令。eg:delete file csrq.idx4.2 索引索引4.2.5 4.2.5 索引查询索引查询索引查询索引查询1.find命令命令格式:格式:find/功能:功能:在打开的索引文件中快速查找与命令中指定的字符串或常数相匹配的第1条记录说明:说明:用find命令查找常数时,命令中给出的常数值必须完整,小数点后面的零可以省略。用find命令查找字符串
27、常量,书写命令时,字符串常量可以不使用定界符,但如果是以空格开头的字符串就必须使用定界符。在find命令中使用字符型内存变量时变量名前要使用宏替换函数。4.2 索引索引4.2.5 4.2.5 索引查询索引查询索引查询索引查询例7:在course表中,查找学时为280的课程的记录。use courseindex on 学时 tag xsfind 280?found()display4.2 索引索引4.2.5 4.2.5 索引查询索引查询索引查询索引查询例8:在student表中,查姓名为周利的学生的记录use studentSet order to tag xmfind 周利?found()di
28、splaynn=周利Find nn?found()&返回.f.find&nn?found()display4.2 索引索引4.2.5 4.2.5 索引查询索引查询索引查询索引查询2.seek 命令命令格式:格式:seek 功能:功能:在打开的索引文件中快速查找与命令中指定的相匹配的第1条记录说明:说明:Seek命令中的表达式类型必须与索引表达式的类型相同。Seek命令不仅可以查字符串和常量,还可以查字符型、数值型、日期型和逻辑型表达式的值。用seek查找字符串常量时,字符串常量必须放在定界符中。4.2 索引索引4.2.5 4.2.5 索引查询索引查询索引查询索引查询例例例例9 9:use st
29、udentindex on 出生日期 tag birthset strictdate to 0seek 06/05/83+5?found()displayindex on 学号 tag xhseek 20015846 order xhdisplay4.2 索引索引4.2.5 4.2.5 索引查询索引查询索引查询索引查询例例例例1010:use studentset order to tag xmseek 周利?Found()displayaa=马大波seek aa?found()display注意总结注意总结locate、find与与seek这三个这三个命令动词的异同命令动词的异同4.2 索引
30、索引索引与排序的区别:索引与排序的区别:索引与排序的区别:索引与排序的区别:排序要生成一个新的表文件,记录的物理顺序发排序要生成一个新的表文件,记录的物理顺序发 生了改变;生了改变;排序生成的表可以单独使用;排序生成的表可以单独使用;索引它并不生成新的表文件,仅仅是表中记录的逻索引它并不生成新的表文件,仅仅是表中记录的逻 辑顺序发生了变化,但索引也要生成一个新的文件,辑顺序发生了变化,但索引也要生成一个新的文件,即索引文件;即索引文件;索引文件不能单独使用,它必须同表一起配合使用索引文件不能单独使用,它必须同表一起配合使用。4.3 数据完整性数据完整性数据库中的数据是从外界输入的,由于种种原因
31、,可能会发生输入无效或输入错误信息等情况,保证输入的数据符合规定成为了数据库系统,特别是多用户关系数据库系统首要关注的问题,因此,提出了数据完整性。数据完整性是指数据的精确性和可靠性,它是指防止数据库中存在不符合语义规定的数据,并且要防止因错误的输入输出造成的无效操作。数据完整性分为三类:实体完整性、域完整性、参照完整数据完整性分为三类:实体完整性、域完整性、参照完整性。性。4.3 数据完整性数据完整性4.3.1.实体完整性与主关键字实体完整性与主关键字实体完整性是保证表中记录惟一的特性,即在一个表中不允许有重复的记录。在VFP中,利用主关键字或候选关键字来保证表中的记录惟一,即保证实体完整性
32、。在VFP中将主关键字称作主索引,将候选关键字作为候选索引。4.3 数据完整性数据完整性4.3.2 域完整性与约束规则域完整性与约束规则域完整性规则也称作字段有效性规则,在插入或修改字段值时被激活,主要用于数据输入正确性的检验。表设计器字段字段有效性:规则、信息、默认值。例例11:设置数据库表student.dbf表中字段“性别”的有效性规则。性别=“男”or 性别=“女”或者性别$“男女”4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联参照完整性与表之间的关联有关,它的含义是:当插入、删除或修改一个表中的数据时,通过参照引用相互关联的另一个表中的数据,
33、来检查对表的操作是否正确。在VFP中为了建立参照完整性,必须首先建立表之间的联系。在关系数据库中通过连接字段来体现和表示联系。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联1.表之间的关系表之间的关系(1)表的关联表的关联表间的逻辑连接称为关联。所谓关联是把工作区中打开的表与另一个工作区中打开的表根据关键字段进行逻辑连接,而不生成新的表。两个表建立关联后,当前工作区中的表记录指针移动时,被关联工作区的表记录指针也将自动相应的移动,以实现对多表的同时操作。在多个表中,必须有一个表为关联表,此表常被称为父表或主表,而其他的表则成为被关联的表,常被称为子表。
34、在两个表之间建立关联,必须以某一个字段为标准,该字段称为关键字段。表之间的关联的类型分为:一对一、一对多、多对多关联。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联1.表之间的关系表之间的关系(1)表的关联表的关联一对一联系:主表中的一条记录在子表中有唯一一条记录与之对应。一对多联系:主表中的一条记录在子表中有多条记录与之对应。多对一联系:主表中多条记录在子表中仅有一条记录与之对应。多对多联系:甲表中的一条记录对应于乙表中多条记录。乙表中的一条记录也对应于甲表中多条记录。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间
35、的关联1.表之间的关系表之间的关系(2)联系的存在形式联系的存在形式 永久联系:永久联系:数据库表之间的一种联系,体现为数据库中数据表索引之间的连线。数据表记录指针之间不产生联动。永久联系存储在数据库中,一次设置,反复使用。概念:主表、子表临时联系临时联系:又称关联,它存在于任何表之间。关联建立后,数据表之间的指针将产生联动。主表中的关键字建主索引主表中的关键字建主索引或候选索引或候选索引子表中的关键字可子表中的关键字可建任何类型的索引建任何类型的索引4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联1.表之间的关系表之间的关系注意:注意:注意:注意:在关
36、系数据库中,一般通过连接字段来体现和表示联系。连接字段在父表中一般是主关键字,在子表中是外部关键字。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联1.表之间的关系表之间的关系(3)永久关联的建立方法永久关联的建立方法建立两表间的“一对一”关系:先要使两表都具有同一属性的字段,然后父表以该字段为关键字表达式建立主索引,子表与其同名的字段为候选索引或主索引。建立两表间的“一对多”关系:先要使两表都具有同一属性的字段作为关键字表达式,然后父表建立主索引,子表建立普通索引或唯一索引。操作方法:操作方法:建立索引后,只要把父表的主索建立索引后,只要把父表的主索引
37、拖到子表的相应索引上,永久引拖到子表的相应索引上,永久性关系便已建立性关系便已建立4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联1.表之间的关系表之间的关系例例12:为department表和teacher表建立一对多关系。例例13:建立数据库“学生管理”,将student、course、grade表添加进来,然后建立这三个表之间的永久性关联。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联2.设置参照完整性设置参照完整性(1)参照完整性概念参照完整性概念在一个关系中,给定属性集上的取值也在一个关系中,给定属性集
38、上的取值也在另一个关系的某一属性集的取值中出在另一个关系的某一属性集的取值中出现,满足这一条件的称为。现,满足这一条件的称为。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联2.设置参照完整性设置参照完整性(2)参照完整性规则参照完整性规则更新规则:更新规则:规定了当更新父表中的连接字段(主关键字)值时,如何处理相关的子表中的记录。有“级联”、“限制”和“忽略”3种规则。删除规则:删除规则:规定了当删除父表中的记录时,如何处理子表中相关的记录。有“级联”、“限制”和“忽略”3种规则。插入规则插入规则:规定了当在子表中插入记录时,是否进行参照完整性检查。有
39、“限制”和“忽略”两种规则。4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联2.设置参照完整性设置参照完整性更新规则更新规则4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联2.设置参照完整性设置参照完整性删除规则删除规则4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联2.设置参照完整性设置参照完整性插入规则插入规则4.3 数据完整性数据完整性4.3.3 参照完整性与表之间的关联参照完整性与表之间的关联2.设置参照完整性设置参照完整性例例14:设置更新规则为“级联”、“限制”、
40、或“忽略”后,更新Department表的id 字段,观察更新结果。如把department表的第一条记录的id字段由“001”更改为“005”例例15:设置删除和插入为“限制”,对department表进行删除操作,对teacher表进行插入操作,观察结果4.4 多表操作多表操作4.4.1 4.4.1 工作区的概念工作区的概念工作区的概念工作区的概念1.1.工作区与当前工作区工作区与当前工作区工作区与当前工作区工作区与当前工作区工作区工作区是是VFP为当前正使用的数据表文件开辟的为当前正使用的数据表文件开辟的一个内存区域。在一个内存区域。在一个工作区只能打开一个表文一个工作区只能打开一个表文
41、件件。若想在同一个工作区内打开另一个表文件,。若想在同一个工作区内打开另一个表文件,则系统将在自动关闭前一个表文件后再打开第则系统将在自动关闭前一个表文件后再打开第2个个表文件。一个表文件只能在一个工作区打开表文件。一个表文件只能在一个工作区打开(无(无AGAIN)。若在同一时刻需要打开多个表,)。若在同一时刻需要打开多个表,则只需要在不同的工作区中打开不同的表就可以了。则只需要在不同的工作区中打开不同的表就可以了。工作区个数:工作区个数:VFP提供了提供了32767个工作区。个工作区。各个工作区彼此独立,数据互不干扰。各个工作区彼此独立,数据互不干扰。当前工作区当前工作区:在任何时刻,操作对
42、象只能占用一个工作区,在任何时刻,操作对象只能占用一个工作区,这个工作区称为这个工作区称为“当前工作区当前工作区”。启动。启动VFP后,系统默认后,系统默认1号号工作区为当前工作区。利用选择工作区命令工作区为当前工作区。利用选择工作区命令SELECT可以可以指定某个工作区为当前工作区。指定某个工作区为当前工作区。4.4 多表操作多表操作4.4.1 4.4.1 工作区的概念工作区的概念工作区的概念工作区的概念2.2.工作区的系统别名工作区的系统别名工作区的系统别名工作区的系统别名系统别名:代表工作区号或表文件名,系统定义系统别名:代表工作区号或表文件名,系统定义前前10个工作区的别名分别为:个工
43、作区的别名分别为:A、B、C、D、E、F、G、H、I、J。因此用户不能把。因此用户不能把AJ这这10个字母个字母作为表文件名使用。对应于作为表文件名使用。对应于11-32767号工作区,号工作区,它们的系统别名分别为它们的系统别名分别为W11-W32767。除了标号外,工作区还有自己的别名,系统为每个工作区除了标号外,工作区还有自己的别名,系统为每个工作区规定了一个固定的别名,称为系统别名。用户也可以为工规定了一个固定的别名,称为系统别名。用户也可以为工作区定义一个别名,称为用户别名。作区定义一个别名,称为用户别名。4.4 多表操作多表操作4.4.1 4.4.1 工作区的概念工作区的概念工作区
44、的概念工作区的概念3.工作区的用户别名工作区的用户别名当用命令当用命令USE打开表时,系统默认该表的别名就是打开表时,系统默认该表的别名就是该表的主文件名,若用户为工作区自定义一个别名,该表的主文件名,若用户为工作区自定义一个别名,可使用命可使用命令为表文件指定别名令为表文件指定别名:命令格式:命令格式:USEALIAS命令功能:在打开表的同时定义表的别名。命令功能:在打开表的同时定义表的别名。命令说明:有命令说明:有ALIAS选项时,选项时,就是用户为当前工作区就是用户为当前工作区定义的用户别名,定义的用户别名,以英文字母或下划线开头,由字母、以英文字母或下划线开头,由字母、数字和下划线组成
45、,其命名规则与文件名的命名规则相同。数字和下划线组成,其命名规则与文件名的命名规则相同。无无ALIAS选项时,系统将取表的主文件名作为该表文件的别选项时,系统将取表的主文件名作为该表文件的别名,并且在当前工作区中打开该文件。名,并且在当前工作区中打开该文件。4.4 多表操作多表操作4.4.1 4.4.1 工作区的概念工作区的概念工作区的概念工作区的概念4.工作区的选择工作区的选择格式:Select|说明:132767中的任意数字。:用已打开的数据表的别名激活工作区。用SELECT选定的工作区为主工作区,在主工作区打开的表文件是主表。所有表文件的操作命令只能在当前工作区内进行。函数SELECT(
46、)可以返回当前工作区的区号。SELECT 0表示选当前未使用过的最小工作区号为当前工作区的区号。表文件操作完毕,可使用USE命令依次关闭当前表文件,也可使用CLOSE ALL命令关闭所有工作区的表文件。Select 0的含义的含义4.4 多表操作多表操作4.4.1 4.4.1 工作区的概念工作区的概念工作区的概念工作区的概念例例16:open database 教学管理 select 1 use student select 2 use course select 3 use grade4.4 多表操作多表操作4.4.1 4.4.1 工作区的概念工作区的概念工作区的概念工作区的概念例例17:o
47、pen database 教学管理use student in 1 alias xsuse course in 2&注意当前工作区还是1号工作区use grade in 3&注意当前工作区还是1号工作区4.4 多表操作多表操作4.4.2 不同工作区中表的使用不同工作区中表的使用在主工作区上访问其他工作区上的数据,是实现多表文件之间数据处理的有效手段。VFP系统对当前工作区中打开的表可以进行任何操作,也可以对其他工作区中打开的表文件的数据进行访问。在当前工作区调用其他工作区中的表文件字段时,必须在其他表文件的字段名前面使用别名调用格式以示区别。格式:格式:.或或-功能:功能:通过用工作区别名指定
48、要访问的工作区,所得到的字段值通过用工作区别名指定要访问的工作区,所得到的字段值为指定工作区打开的表当前记录的字段值。为指定工作区打开的表当前记录的字段值。4.4 多表操作多表操作4.4.2 不同工作区中表的使用不同工作区中表的使用例例18:Use studentGo 3 Use grade in 2 Select a?学号,姓名,性别,b-成绩4.4 多表操作多表操作4.4.2 不同工作区中表的使用不同工作区中表的使用例例19:close all?select()use studentselect 2use gradedisp A.姓名,A.性别,学号select 0use course?s
49、elect()4.4 多表操作多表操作4.4.3 建立表间的临时性关联建立表间的临时性关联永久联系在数据库设计器中体现为表索引间的连接线,虽然永久联系在每次使用表时不需要重新建立,但永久联系不能控制不同工作区中记录指针的关系。建立表之间的表之间的临时性关联:使用 SET RELATION 命令:步骤步骤打开子表打开子表;为子表按要关联的字段建立索引为子表按要关联的字段建立索引;在新工作区打开父表;在新工作区打开父表;在父表所在工作区执行命令:在父表所在工作区执行命令:Set relation to into|(关联表达式:一般是父表的主索引,子表的(关联表达式:一般是父表的主索引,子表的普通索
50、引)普通索引)4.4 多表操作多表操作4.4.3 建立表间的临时性关联建立表间的临时性关联例例20:利用表文件student,course,grade,显示学生选课的课程名和相应的成绩clear allselect 1use student index on 学号 tag xhselect 2use courseindex on 课程号 tag kchselect 3use gradeset relation to 学号 into aset relation to 课程号 into b additivelist all fields a-姓名,b-课程名,成绩 off4.4 多表操作多表操作4