程序设计基础(vfp)第三章-数据库表课件2

PPT
  • 阅读 52 次
  • 下载 0 次
  • 页数 79 页
  • 大小 470.512 KB
  • 2022-12-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
程序设计基础(vfp)第三章-数据库表课件2
可在后台配置第一页与第二页中间广告代码
程序设计基础(vfp)第三章-数据库表课件2
可在后台配置第二页与第三页中间广告代码
程序设计基础(vfp)第三章-数据库表课件2
可在后台配置第三页与第四页中间广告代码
程序设计基础(vfp)第三章-数据库表课件2
程序设计基础(vfp)第三章-数据库表课件2
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 79
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】程序设计基础(vfp)第三章-数据库表课件2.ppt,共(79)页,470.512 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-92307.html

以下为本文档部分文字说明:

第三章数据库和数据表的操作第二部分3.4索引文件及其应用数据表中的顺序是按输入的顺序存储在表中。如果查找某条记录怎么办?3.4.1索引文件及分类1.索引文件索引文件:它仅由两个字段组成,一个字段是

排序的关键字值(也可以是一个表达式),另一个字段是每个关键字在原始数据表中对应的记录号。例,在Rsda.dbf数据表中,以编号为关键字段并按升序建立的索引文件的示意图如下图所示。在索引文件中,记录是按索引关键字值的

顺序排列的,当要查找某一编号的记录时,VFP先在索引文件中查找该编号,找到后再根据对应的记录号,在数据表中将记录指针快速移动到该记录上。一个索引文件中可以只有一个索引,也可以有多个索引。可以包含多个索引的索引文件称该文件

为复合索引文件。在复合索引文件中,需要为每个索引指定一个索引标识名,以便于通过索引标识相互区分各个索引。3.4.1索引文件及分类2.索引的类型(1)主索引主索引通常是数据表的关键字索引,作为主索引的字段称为主关键字。

主索引不能用在自由表中,而只能用在数据库表中,可用于在永久关系中建立参照完整性。创建主索引的字段不允许有重复值,且一个表只能有一个主索引。例如,在数据表中,常用学生证号、身份证号、工作证号等作为主索引,而姓名可能有同名的情况,一般不能作为主索引。3.4.1索引文件及分类(2)候选索

引候选索引类似于主索引,其索引值就不能有重复值。与主索引不同的是,一个数据表中可以有多个候选索引,而且侯选索引不能用来在永久关系中建立参照完整性。(3)惟一索引惟一索引表示索引值只能取一个,如果有两个或两个以上的索引值,则只能取其中一个,因此,惟一索引使用时可能会隐藏一些记录。例如

,若有两个同名的人员,将姓名字段作为惟一索引,则只能找到一个记录,另一个记录将不会找到。3.4.1索引文件及分类(4)普通索引普通索引没有上面各索引的限制,是允许重复索引值的索引。作为普通索引的字段,其字段值可以

重复,也可以作为排序的依据,但因为可能有多个相同的索引值,因此查询时会找到多个符合条件的记录。一个数据表中可以有多个普通索引。3.4.1索引文件及分类3.索引文件的分类单入口索引文件(扩展名为.IDX)(IDX索引文件中只包含一个索引)复合索引文件(扩展名.CDX),.CDX索引文件中

可以包含有一个或多个索引,所以称为复合索引文件。结构化复合索引文件非结构化复合索引文件(独立符合索引文件)结构化复合索引的主文件名与数据表的主文件名相同,并随着数据表的打开而打开,在添加、更改或删除记录时会自动进行维护;非结构化复合索引文件(独立符合索引

文件)的主文件名与数据表文件不同,必须用命令打开。3.4.2创建索引文件1.建立结构化复合索引文件(1)在表设计器中创建索引文件(2)命令方式创建索引【格式】INDEXON<表达式>TAG<索引标识名>[FOR<条件表达式>][ASCENDING|DESCENDI

NG][UNIQUE|CANDIDATE][ADDITIVE]【功能】建立结构化复合索引文件。对rsda表(1)按编号升序建立索引;(2)按工作日期降序;(3)先按性别升序,若性别相同,则按工作日期升序建立

索引(rsda.cdx)USErsdaINDEXON编号TAGbhINDEXON工作日期TAGgzrqdescINDEXON性别+dtoc(工作日期)TAGxbrq2.建立独立复合索引文件独立复合索引文件的扩展名也是.CDX,但其主文件名与数据表文件名不相同,且使

用时还需单独打开。独立复合索引文件主要用来创建那些使用不太频繁的索引。独立复合索引文件不能在表设计器中创建,命令建立。【格式】INDEXON<表达式>TAG<索引标识名>OF<独立复合索引文件名>[FOR<条件表达式][ASCENDING|DESCENDING][U

NIQUE|CANDIDATE][ADDITIVE]例:对rsgl.dbf表,(1)编号升序建立索引;(2)先按性别升序,若性别相同,则按工作日期升序建立独立索引文件gl.cdxusersglindexon编号tagbhcandofgl.cdxindex

on性别+dtoc(出生日期)tagxbcsrqofgl.cdx3.重新建立索引文件在数据表的使用过程中,当增删记录或数据表中被索引文件使用的关键字段改动时,结构化复合索引会随着数据表的打开自动打开并能及时得到更新,但

如果在使用数据表时未打开相应的独立复合索引文件或传统的单入口.IDX索引文件,则索引文件会因为无法及时更新而产生错误索引。这时须打开索引文件,并对其重新索引。菜单方式:打开数据表->“显示”“浏览”,菜单

“表”、“重建建立索引”命令,或打开数据表后用REINDEX命令重新建立索引。命令方式【格式】REINDEX4、索引的删除若单索引:直接在windows中删除若复合索引,删除索引标识删除所有的索引标识:Deletetagall删除特指的索引标识Dele

tetag<索引标识1>[,<索引标识2>……]3.4.3索引文件的使用1.指定主控索引一个数据表可以建立多个索引文件,每个索引文件中又可能包含多个索引,而一种索引就是一种排序方式在使用索引时,必须指明哪一个索引是对数据表记录排序起作用的,即指定主控索引。在没有指定哪一个索引为主控索引

之前,数据表的访问顺序仍然是原来的物理顺序,即按记录号的顺序访问。主控索引和主索引有什么区别?主控索引和主索引是完全不同的概念。主索引是用来控制数据的完整性的,而主控索引是用来指定目前记录排列顺序的。1.指定主控索引(1)指定结构化复合索引文件中的索引为主控索引菜单方式:

“浏览”->“表”“属性”命令->即弹出“工作区属性”对话框设定主控索引后,利用LIST、DISPLAY命令输出的记录顺序也是排序后的顺序。主控索引只是改变了记录的输出顺序,记录在数据库中的顺序并没

有发生变化。命令方式【格式一】USE<数据表名>ORDER[TAG]<索引标识名>[ASCENDING|DESCENDING]【功能】打开表,同时指定结构化复合索引文件的索引为主控索引。【格式二】SETORDERTO[[TAG]<索引

标识名>][ASCENDING|DESCENDING]【功能】打开表后,指定结构化复合索引文件的索引为主控索引。(2)指定独立复合索引文件中的索引为主控索引对于独立的复合索引文件或单入口的索引文件,需要用命令将其打开和

关闭,只有打开要使用的独立复合索引文件后,才能指定其中的索引为主控索引。【格式一】USE<数据表名>ORDER[TAG]<索引标识名>OF<独立复合索引文件名>[ASCENDING|DESCENDING]【格式二】SETINDEXTO[TA

G]<索引标识名>OF<独立复合索引文件名>(4)关闭索引文件【格式一】SETINDEXTO【格式二】CLOSEINDEX2.使用索引快速查找记录FIND命令和SEEK命令都可在指定主控索引的情况下进行记录的查找操作。SEEK<表达式>USERs

daORDERTAGbh&&打开Rsda同时指定BH为主控索引SEEK"03002"dispSETORDERTOgzrq&&重新指定rq为主控索引seek{^1963/09/02}&&日期格式要与设置相同,否则会出错dispUsersdasetordertobh3.

5数据表的统计计算3.5.1累加求和及求平均值对每个记录的横向求和和统计可以用前面介绍的操作或命令方便地给出,如REPLACE命令。对于每个记录的纵向求和统计可以用累加求和命令实现。【格式】SUM|AVERAGE[<表达式表

>][<范围>][FOR<条件表达式>][TO<内存变量名表>]|[TO<数组变量名>]【例】求出Rsgz.dbf中计算机系所有职工的月基本工资平均值及全年实发工资之和并显示。AVERAGE基本工资TOaFORSUBSTR(编号,1,2)="03"SUM实发工资*12TObFORS

UBSTR(编号,1,2)="03“【例】求出xscj每门课的平均成绩,每个同学的平均成绩和总成绩。usexscj.dbfbrowaverage英语,数学,计算机toa,b,c?a,b,creplall总成绩with英语+数学+计算机,平均成绩with总成绩/33.5.2

统计记录个数【格式】COUNT[<范围>][FOR<条件表达式>][WHILE<条件表达式>][TO<内存变量名表>]|[TO<数组变量名>]例:统计每门课成绩均在90分以上的人数,以及不及格的人数。countfor英语>=90and

数学>=90and计算机>=90tos1countfor英语<60or数学<60or计算机<60tos2?S1,s23.5.3分类汇总分类汇总对已经建立了索引并且指定了主控索引的数据表,可以按关键字

进行分类求和【格式】TOTALON<关键字表达式>TO<新表名>[FIELDS<字段名表>][<范围>][FOR<条件表达式1>][WHILE<条件表达式2>]①当前数据表必须是按<关键字表达式>索引过,并指定该索引为主控索引,以保证具有相同关键字值的记录能连续访问。②FI

ELDS短语给出了需分类求和的字段名,这些字段只能是数值型或货币型的,如果缺省,则对当前表中的所有数值型或货币型字段分类求和。不管选不选FIELDS短语,新表与当前表的结构是一样的。③对当前数据表中的若干个关键字表达式相同的记

录,生成新表中的一条记录。这条记录的非数值型或非货币型字段取自关键字相同的一组记录中首记录的相应字段,参加求和的字段值取自求和结果。例题(1)统计本月每种商品的台数和总价,以及每个售货员销售的台数和总价例题USExs.dbfbrowreplall总价with单价*台数indexon售货员

toshytotalon售货员toshytjfields台数,总价indexon商品名tospmtotalon商品名tosptjfields台数,总价useshytjbrowusesptjbrow(2)统计每天的销售台数和总价,以及本月每天每个售

货员的销售台数和总价。Indexon日期tagrqTotalon日期torqtjfields台数,总价Indexon日期+售货员tagrqshyTotalon日期+售货员torqshtjfields台数,总价3.6数据交换3.6.1数组与数据表的数据

交换1.将数据表中的记录数据保存到数组中【格式一】SCATTER[FIELDS<字段名表>][MEMO]TO<数组名>【格式二】COPYTOARRAY<数组名>[FIELDS<字段名表>][<范围>

][FOR<逻辑表达式>]【功能】将当前打开的数据表中的某些记录数据存储在数组中。2.将数组中的数据传递到当前数据表中【格式一】GATHERFROM<数组名>[FIELDS<字段名表>][MEM

O]【格式二】APPENDFROMARRAY<数组名>[FOR<逻辑表达式>][FIELDS<字段名表>]【功能】将数组中各元素的数据传递给当前打开的数据表中。注意:请读者将COPYTOARRAY与SCATTER、APPENDFROMARRAY与GATH

ERFROM的差别搞清楚。例:将第1条记录与第4条记录互换go1Scattertoa&&把第一条记录存到变量a中go4Scattertob&&把第四条记录存到变量b中go1gatherfromb&&把b中存的第4条

记录复制到第1条记录go4gatherfroma&&把a中存的第1条记录复制到第4条记录例:将前四条记录复制到另一新表xscjtemp中copytoarraybnext4&&将前四条记录复制到内存变量中dispmemo&&显示内存变量copystrutoxscjtemp&&生成

一个与xscj相同的表结构,空表usexscjtemp&&打开表appendfromarrayb&&将内存中存储的记录追加到表brow3.6.2文件复制1.复制部分记录或整个数据表(生成新表)【格式】COPYTO<表文件名>[<范围>][FOR|WHILE<逻辑表达

式>][FIELDS<字段名表>][DATABASE<数据库名>[NAME<长表名>]][[WITH]CDX]|[[WITH]PRODUCTION]|SDF|SYLK|WK1|WKS|WR1|WRK|XLS|XL5|DELI

MITED[WITH<定界符>|WITHBLANK|……例题:将rsda中1980年以后工作的员工复制到新表rsda80usersdacopytorsda1fields姓名,性别,职称,工作日期foryear(工作日期)>1980usersda1

brow2.复制数据表的结构【格式】COPYSTRUCTURETO<表文件名>[FIELDS<字段名表>][[WITH]CDX|[WITH]PRODUCTION]说明:①若不选可选项,生成的表结构具有与原数据表相

同的字段名、类型和宽度。②若选FIELDS子句,生成的表结构只有<字段名表>中的字段,字段名之间用逗号隔开。③CDX和PRODUCTION的意义与复制记录时的意义一致。3.7多数据表操作在一个数据库中,一

般都有着许多个数据表。而在对这些表的使用中,也经常是多个表中的数据同时被用到。VFP提供了强有力的多数据表操作能力,引入了工作区和表的别名这两个概念。用户可以在不同的工作区中同时打开多个表,也可以在不同的工作区打开同一个表,通过

表的别名,用户可以引用在不同工作区打开的表中的数据。3.7.1工作区的基本概念所谓“打开”数据表,实际上就是VFP在内存中开辟了一个区域(亦称缓冲区)与磁盘上数据表之间建立起一种映射关系,使VFP通过缓冲区使用磁

盘上数据表里的数据,这个内存中的缓冲区就称为工作区。1.工作区的性质(1)在每一个工作区中只能打开一个表,VFP最多可以开辟32767个工作区,打开32767个表。允许一个表在几个工作区中同时打开。(2)在某一时刻只能选择一个工作区为“当前工作区”,对其中的表进行操作

。系统初始状态默认1号工作区为当前工作区。(3)每一工作区打开的数据表都有各自的记录指针。在一般情况下,对数据表的操作只能移动当前工作区的记录指针。当使得数据表之间建立临时关系以后,另一工作区的记录指针才能根据要求伴随当前工作

区的记录指针作相应的移动。(4)内存变量对各工作区是公用的,每一工作区的字段变量对其它各工作区也是公用的。在任意工作区都可以对其它工作区的当前记录进行读、写操作。2.工作区的编号和别名为了标识每一个工作区,系统给每一工作区编号,号码为1、2、…、3276

7。同时还为工作区规定了别名,其中1至10号工作区别名为A、B、…、J;11至32767号工作区别名为W11、W12、…、W32767。给数据表命名时,不要与工作区的别名冲突,否则容易引起混乱。3.数据表别名在打开数据表的同时,可以为数据表起一个别名,这个别名也作为打开该数据

表的工作区别名。★[格式]USE<数据表名>[ALIAS<别名>][IN<数值表达式>|<工作区别名>][again]说明:①若不指定工作区,则默认为在当前工作区上打开指定的数据表,并同时关闭以前在当

前工作区上打开的数据表。②ALIAS<别名>为可选项,不指定别名时,原数据表名就是它的别名。USERsdaALIASda&&表Rsda的别名就是daUSERsda&&默认Rsda表的别名③若选择了IN0短语,表示在当前空闲的编

号最小工作区上打开数据表。④该命令只是在指定的工作区上打开数据表,并不能改变当前工作区。改变当前工作需要单独的命令。⑤一旦一个工作区上打开了一个数据表,数据表就和该工作区建立起对应关系,所以打开数据表后可以用数据表的别名来代替工作区别

名。3.7.2工作区的选择和使用1.选择工作区(1)利用“数据工作区”窗口选择工作区选择[窗口]菜单中的[数据工作期]命令,或单击常用工具栏中的[数据工作期窗口]按钮,打开[数据工作期]窗口。这时默认

当前工作区为1。单击[打开]按钮选择一个数据表打开。若再次单击[打开]按钮,可以依次在其它工作区打开其它数据表,并且可以用显示的别名选择工作区。在数据工作期窗口还可以浏览各工作区打开的数据表,还可以关

闭他们。(2)利用SELECT命令选择工作区[格式]SELECT<工作区号>|<工作区别名>|<表别名>说明:选择当前工作区,选择的工作区中可以是在前面已经打开了数据表,也可以是未曾打开表。例:USERsda&&默认在1号工作区打开Rsda.dbfSELECTd

&&选择4号工作区为当前工作区USERsgl&&在当前(4号)工作区打开Rsgl.dbfUSERsgzALIASgz&&在当前4号工作区打开Rsgz,同时关闭RsglSELECT1&&选择1区为当前工作区LIST&&显示当前(1号)工作区数据表(Rsda)的记录SELECTgz&&或S

ELE4,SELEd,但不能SELERsgzLIST&&显示Rsgz的记录SELERsda&&是否可以?为什幺?LIST?SELECT()&&给出当前工作区号函数,返回当前工作区号例:USERsglIN10

?SELECT()USE&&关闭当前工作区上的数据表USERsglIN0?SELECT()2.在不同工作区打开同一个数据表例SELE1USERsdaUSERsdaALIASdaIN3AGAINSELE2USERsda

AGAIN3.使用非当前工作区中表的数据方法是在非当前工作区的表的字段名前加注工作区别名或表的别名。格式为:<别名>-><字段名>或<别名>.<字段名>注意,这里的符号“->”是“-”和“>”两个(均为半角

)符号复合而成。例(rsgl(编号、部门名、姓名、性别、出生日期、文化程度、职位、婚否),Rsda(编号、姓名、性别、工作日期、职称、简历、照片))select1usersglusersdain2sele1List姓名,部门名,出生日期,b->姓名,b->工作日期显示结果如下:

在VFP中,表之间关联有临时关系和永久关系两种关联1.设置表的临时关系(1)利用数据工作期窗口建立表的临时关系3.7.3数据表的关联123List姓名,部门名,出生日期,b->姓名,b->工作日期(2)利用命令建立表之

间的临时关系【格式】SETRELATIONTO[<关键字表达式1>|<数值表达式1>INTO<工作区别名1>|<子表别名1>[,<关键字表达式2>|<数值表达式2>INTO<工作区别名2>|<表别名2>…][ADDITIVE]]说明:①建立临时关系以后

,父表和子表记录指针的移动的规则是:父表指针每移动到一个记录,子表则按关键字表达式的值进行索引查找,并将记录指针定位在相应记录上。若子表中没有记录和父表的当前记录相关联,子表的记录指针将指向EOF;若子表中有多个记录和父表的当前记录相关联,则子表的记录指针将指向第一个相匹配

的记录。②必须选择父表所在工作区为当前工作区,然后再使用本命令与非当前工作区中的数据表(子表)建立关联。③选ADDITIVE项可使父数据表与子表建立关联时,原先已存在的关联仍然保留。如果不选用该项,则建立新关联时将取消原有关联。④子表必须按关键字表

达式中的关键字段建立索引,且被指定为主控索引。通常情况下,用两个表都具有的相同字段作为建立临时关系的关键字表达式。⑤不选任何可选项则取消已与当前表建立的关联。父表可以与多个子表建立关联。【例】某书店有一个图书库存数据表T

skc.dbf,存放有该书店所有的图书信息,另有一个图书调价数据表tstj.dbf,其中存放着图书调价后的新价格,现要求编制程序,用Tstj.dbf中的单价数据更新Tskc.dbf中的单价数据。假设Tstj.dbf

数据表中的记录和Tskc.dbf中的记录是一一对应的,即凡是出现在Tskc.dbf中图书都调价了,则可用如下的程序:select1usetskcselect2usetstjindexon图书编号tagtsbhsetordertotsbhselect1setrela

tionto图书编号intobreplall单价withb->单价list2.设置表间的永久关系永久关系是存储在数据库文件(.DBC)中的数据表之间的关系,它作为数据库的组成部分一直保留。它不像临时关系每次打开数据表时都要重新建立。数据库中

的数据表建立永久关系后,借助这种关系不仅仅从当前选定的表中访问数据,而且还可以访问相关数据表中的数据。当在查询设计器,视图设计器、表单设计器中的数据环境中使用这些数据表时,这些永久关系将作为这些表之间的默认连接关系自动出现。而且以后使用查询文件,视图文件及表格文件时,这些永久

关系也自动把相关数据表连接起来。与永久关系的作用不同,临时关系是控制表之间记录指针的连动关系。永久关系不具有这个功能,而是使相关数据建立连接关系。在永久关系中还可以建立参照完整性,对各数据表之间进行完整性约束。表之间关系的类型表与表之

间的关系实际上就是,按照某一关键字建立的几个数据表之间相关记录的关系。根据一个表中的记录与另一表中相关记录之间的对应数量关系,关系的类型可分为:一对一关系:是指一个表中的一个记录与另一表中的唯一记录相关联。一对多关系:是指一个表中的一个记

录与另一表中的多个记录相关联,但另一表中的一个记录则只能与这个表中的唯一记录相对应。在关系数据库设计时,应避免将表设计成“多对多关系”,通过数据规范化设计将“多对多关系”转换成“一对多关系”来建立数据库。也可以在两个表间建立一个连接表,两个表分别和连接表建立一对多关

系,间接实现多对多关系(1)建立表间的永久连接建立Rsbm与Rsgl的关联、Rsgl与Rsda的关联。Rsgl与Rsda根据编号建立一对一的关联;由于在Rsbm中一个部门可以在Rsgl中找到多条记录,所以两个数据表之间的关系为一对多的关系。两

个表已根据共同字段“部门名”建立了索引,“一”方(Rsbm)建立了以“部门名”为索引标识的主索引,“多”方建立了以“部门名”为索引标识的普通索引。在数据库设计器中建立永久关系•(2)编辑数据表之间的关联永久关系临时关系区别作用主要用来设置参照完整性控制两张打开的表之间记录的访问创建方法创建主表的

主索引或候选索引创建子表的任意类型索引基于索引创建永久关系打开两张要创建临时关系的表设置子表的主控索引选择主表工作区用SETRELATION命令创建临时关系创建条件只能在同一数据库中的表之间创建可以在任意库表、自由表、视图、临时表之间创建主表数一张表可以作为多张永久关系的子表,即一张子表

可以有多张主表一张表只能作为一张临时关系的子表生命期永久存储在数据库文件中随表的关闭而解除联系创建永久关系或临时关系的基础是两张表之间确实存在着关系VFP根据表之间的永久关系在表单或报表的数据环境中自动

创建临时关系一张主表可以有多张子表3.8管理数据库3.8.1使用多个数据库1.在项目中新建或添加数据库2.从项目中移去数据库3.打开多个数据库4.设置当前数据库5.访问其它数据库中的表OPENDATABASERsgl.dbc&&打开数据库Rs

glOPENDATABASEExample.dbc&&打开Example并自动将其设为当前数据库?DBC()&&显示当前数据库名SELECT4&&选择第4工作区为当前工作区USERsgl!Rsda.dbf&&

在第4工作区上打开数据表BROWSE&&浏览当前工作区(第4工作区)上的数据SELE2&&选择第2工作区为当前工作区?Rsda.姓名&&显示Rsda数据表的当前记录的姓名字段6.关闭数据库SETDATABASETORsglCLOSE

DATABASE另外,用CLOSEALL命令可以关闭所有打开着的数据库及其他文件。3.8.2向数据库中添加和删除表1.向数据库中添加表2.将数据表从数据库中移走项目管理器中选择要移走的数据表,单击“移去”按钮,系统即弹出确认对话框,单击“移去”命令即可

将选定的数据表从数据库中移走,成为自由表;若单击“删除”按钮则可将选定的数据表从磁盘上删除。3.8.3参照完整性参照完整性是为确保数据库中表间关系不被破坏而设置的一组规则。在用户修改、增加或删除相关表中的记录时,参照完整性将起保护作

用。怎样才算破坏了连接关系呢?如建立了Rsbm和Rsgl两表的一对多关联,在此关联下,如果进行了如下操作:(1)将Rsbm(父表)中一个父记录删除,而没删除Rsgl(子表)中所对应的一或多个记录,造成子记录无对应的父记录。(2)修改了Rsbm(父表)中某个记录的部门名,而没有修改子表R

sgl的相对应的记录,从而造成rsgl(子表)中一个或多个记录没有对应的父记录。(3)在Rsgl(子表)中增加了一个无父记录与其对应子记录。解决不完整性的一般方法是编写触发器和存储过程代码来实现,但方法复杂。VFP中参照完整性生成器可帮助用户建立参照完整性。

1.建立参照完整性打开下图所示的参照完整性生成器的三种方法:①级联:若选择该项,当更新某一父数据记录的关联字段时,VFP将自动更新与此数据记录对应的子数据记录的关联字段的值。这样,原来父记录与子

记录间的对应关系仍存在。而当删除某一父记录时,系统将会自动删除所有与该父记录对应的子记录。②限制:若选此项,当对父表数据进行操作时,系统将先检查子表中是否有记录与之相关联,如果有则不允许更新该父数据表记录的关联字段,同样也不允许删除该父数据表记录,也不允许插入没有父

表中的记录与之对应的子表中的记录。③忽略:选此项,系统将不进行任何参照完整性的检查工作。这是默认设置。2.修改参照完整性修改参照完整性的步骤与建立参照完整性类似。参照完整性常常通过一个程序代码函数过程来实现,这样的函数

过程保存在数据库的“存储过程”中,与数据库一起存放。可以用命令MODIFYPROCEDURE查看存储过程的程序代码。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?