VFP数据库

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库的建立与操作PAGE97在数据管理时,我们常把不同的数据放在不同的数据表中,如把学生数据保存在学生表中,把成绩数据保存在成绩表中,把有关课程的数据保存在课程表中。有时我们需要使用到多个数据表中的数据。如我们需要学生表数据,也同时需要成绩表中的数据。学号姓名性别040101章强T040102王平F040103周舟T学号课程号成绩040101000178040101000296040102000163040103000277学生表成绩表学号姓名课程号成绩040101章强000178040101章强000296040102王平000163040103周舟000277学生表数据成绩表数据关键字段33个表文件及它们之间的关联数据库的建立与操作PAGE97数据库----对多个相互联系的表进行有效的管理,保证数据间的有效性、一致性和完整性VFP中表可分成自由表和数据库表一个数据库中可以包括多个表----数据库表在数据库中各表间一般相互联系(通过表中的索引关键字)通过数据库管理多个表,可以进一步约束表间数据,提高数据的可靠性和完整性比如:学生表数据与成绩表数据有相应的联系成绩表数据与课程表数据也有相应的联系数据之间的联系类型1:m(一对多)关系:实体集1与实体集2之间存在一对多的联系,即实体集1中的一个元素,在实体集2中有多个元素与它对应;而实体集2中的一个元素,在实体集1中,最多只有一个元素与它对应。这是最常见的一种类型,例如,某个学校的“学生”与“成绩”之间便是一对多的联系通常,将一对多关系中的实体集1称为“父”方或“一”方,实体集2称为“子”方或“多”方。学号姓名性别040101章强T040102王平F040103周舟T学号课程号成绩040101000178040101000296040102000163040103000277学生表成绩表m:n(多对多)关系:实体集1与实体集2之间存在多对多的联系,即实体集1中的一个元素,在实体集2中有多个元素与它对应;而实体集2中的一个元素,在实体集1中也有多个元素与它对应。例如,某个学校的“课程”与“学生”之间,因为每个学生可以学习多门课程,而每门课程也可有多个学生学习,所以它是多对多的联系。学号姓名性别040101章强T040102王平F040103周舟T课程号课程名学分0001计算机40002会计学30003英语4学生表课程表1:1(一对一)关系:实体集1与实体集2之间存在一对一的联系,即实体集1中的一个元素,在实体集2中最多有一个元素与它对应;而实体集2中的一个元素,在实体集1中也最多只有一个元素与它对应。例如,某个学校寝室的“床位”与“学生”之间就是一对一的联系。数据库表之间的联系表与表之间是一对多的联系:实现该联系需将父表中的主关键字放入子表当中,即父表与子表有同名同类型的字段,以实现两表之间的有效关联。在VisualFoxPro中,“一”方使用主索引关键字,“多”方使用普通索引关键字。表1与表2之间是多对多的联系:实现该联系需另外增加一个新表,这个表称为“关联表”,其中包括表1和表2的主关键字,并且加进两表之间的关联字段。例如,学校的“学生”表与“课程”表之间为多对多联系,具体设计表的组成时,需添加“成绩”表,其中包括学号、课程号、成绩等字段。表与表之间是一对一的联系:实现该联系需要根据实际情况而定,设计时可以分为两个表或合并为一个表。学号姓名性别040101章强T040102王平F040103周舟T课程号课程名学分0001计算机40002会计学30003英语4学号课程号成绩040101000178040101000296040102000163040103000277学生表成绩表课程表关系数据库的完整性数据库的完整性指数据库中数据的有效性、一致性和兼容性。数据库的完整性包括以下三个部分:(1)实体完整性。实体完整性是指一个表中主关键字的取值必须是确定的、唯一的,不允许为null值。例如,对“学生”表中的记录,主码“学号”字段的取值必须是唯一的、且不能为空值。这就要求在“学生”表中存储的记录必须满足这一条件,而且在输入新记录、修改已有记录时也要遵守这一条件。(2)参照完整性。数据库的参照完整性是指在“子”表当中实现关联的外部关键字,它的取值或者为“空”值、或者为“父”表中实现相应关联的主关键字值的子集。在两个表之间大量存在一对多的联系,即“父”表与“子”表间的联系。这也是关系数据库中最主要的一种联系,并且它是通过“父”表中的主关键字与“子”表中相应的外部关键字来实现关联的。学号姓名性别040101章强T040102王平F040103周舟T学号课程号成绩040101000178040101000296040102000163040103000277(3)用户自定义完整性。这部分是由实际应用环境当中的用户需求决定的。通常为某个字段的取值限制、多个字段之间取值的条件等。例如,在“成绩”表中,“成绩”字段的取值必须在0至100之间。一般情况下,要实现数据库的完整性约束条件及完整性检验,用户需编写相应的代码或利用数据库管理系统提供的功能完成。数据库的建立PAGE97数据库文件保存为带.DBC扩展名的文件,相关的数据库备注文件扩展名为.DCT,相关的索引文件扩展名为.DCX。数据库可以单独使用,也可以将它们合并成一个项目,用“项目管理器”进行管理。数据库必须在打开后才能访问它内部的表。(1)使用“项目管理器”创建一个新数据库。l选择“项目管理器”中的“数据库”项。l选择“新建”按钮,如图6.1所示。(2)使用命令创建一个新数据库。格式:CreateDatabase[数据库名/?](3)由主菜单文件—新建---数据库“数据库设计器”对应工具栏说明:l新建表:用数据库设计器创建新表。l添加表:将表添加至数据库。l移去表:从数据库中将表移出。l修改表:在“表设计器”中打开表。l浏览表:在浏览窗口中显示并编辑表。l新本地视图:使用数据库设计器创建本地视图。l新远程视图:使用数据库设计器创建远程视图。数据库表间的永久关联P113在数据库设计器下可建立多表操作Vfp在默认的状态下,每次只能打开和使用一张表Use职工List职工号,姓名Use销售list一、工作区P.122为了能同时从多个表中取数据,就要打开多个表,VFP提供了多工作区技术工作区是VisualFoxPro在内存中开辟的临时区域。用户可以在不同的工作区中打开多个不同的表,并且可以利用多种方法访问不同工作区中的表。l工作区及工作区编号每一个工作区都是一个编号区域,它标识一个已打开的表。VisualFoxPro中最多允许使用32767个工作区,可以用工作区编号1、2、3、4、…32767来标识。工作区当前工作区及当前表page123在VisualFoxPro中,32767个工作区同时存在,因此用户可以在32767个工作区中打开多个表,并且每个表各有各自的记录指针。但在某一时刻,用户只能选择一个工作区作为当前操作的对象,也就是说,用户在某一时刻只能对一个表文件进行读写操作,而对其他工作区中的表只能进行有限制的读操作。为了区分当前正在操作的工作区与其他工作区的不同情况,我们称当前正在操作的工作区为当前工作区,称在当前工作区中打开的表文件为当前表。当前工作区是可变的,用户可以根据需要选择任意一个工作区做为当前工作区。l工作区的别名所谓工作区的别名就是指给工作区取一个除工作区编号外的名字,它可以用来标识一个工作区。在VisualFoxPro中,每个工作区都有两个等效的别名,一种是系统固有指定的,另一种是用户自己定义的(表别名)。表别名是一个名称,通过它可以引用在工作区中打开的表。通常是通过使用该工作区中打开的表的别名来识别。用户自己定义别名(表别名)可以使用下列命令:USE表文件名[ALIAS别名]如果省略[ALIAS别名],则该工作区的用户自己定义默认别名为表文件名。USE学生ALIASSTUDENT用户自己定义别名(表别名)可以使用下列命令:USE表文件名[ALIAS别名]如果省略[ALIAS别名],则该工作区的用户自己定义默认别名为表文件名。系统固有指定的别名为:A、B、C、D、…J、W1、W2…W32767,分别对应1、2、3、4、…32767工作区。在1~10号工作区中指定的默认别名是工作区字母A到J,在工作区11到32767中指定的别名是W1到W32767。12345678910工作区对应于ABCDEFGHIJ工作区使用SELECT命令可以选择或转换当前工作区,该命令介绍如下。格式:SELECT工作区编号/工作区别名SELECT1USE学生LISTSELECT2USE成绩LIST选择第一工作区打开学生表选择第二工作区打开成绩表l工作区之间的联访P.105所谓工作区之间的联访,是指系统在当前工作区访问另一个工作区中表内容(字段)的一种联系形式。工作区之间的联访是通过工作区的别名实现的。即用别名限制访问的对象。具体访问的格式如下:别名.字段名或别名-字段名?学生.学号,学生.姓名,成绩.成绩学生表中学号字段成绩表中成绩字段二、工作区使用规则VisualFoxPro规定了使用工作区的规则:l在一个工作区内只能存在一个打开的表文件;l当前工作区只有一个,用户可对当前工作区中的当前表文件进行所有操作但对非当前工作区中的非当前表文件进行操作时,必须采取引用的方式(别名.字段名或别名-字段名);l每个工作区中的表文件都有自己独立的记录指针,如果工作区之间没建关联,对当前工作区中的当前表文件进行所有操作均不影响其它工作区中的非当前表文件的记录指针;l一个表文件能在多个工作区中打开;l指定工作区可以使用:P.105数据工作期或命令:•SELECT工作区编号/工作区别名USE表名•USE表文件名IN工作区编号/工作区别名l由系统指定当前可用的最小号工作区可以使用:SELECT0或USE表文件IN0SELECT2USE学生USE学生IN2SELECT0USE成绩在第二工作区打开学生表USE学生IN1USE成绩IN2LISTSELECT学生LIST每个工作区中的表文件都有自己独立的记录指针表只需要打开一次SELECT1USE学生LISTnext5SELECT2USE成绩GO3DISPLAYSELECT1SKIP?RECNO()SELECT2SKIP–1?recno()打开多个表对不同表进行操作每一个表都有自己的记录指针,一般,它们互不影响*输出学生王平的学号,姓名,课程号,成绩(同时从三表:学生表、成绩表、课程表取数据)OPENDATABASE学籍SELECT1USE学生LOCATEFOR姓名=”王平”USE成绩IN2USE课程IN3SELECT成绩LOCATEFOR学号=学生.学号SELECT课程LOCATEFOR课程号=成绩.课程号SELECT成绩?学号,学生.姓名,课程号,课程.课程名,成绩CLOSEDATABASESELECT1USE学生SELECT2USE成绩LOCATEFOR学号=学生.学号SELECT学生?学号,姓名,成绩.课程号,成绩.成绩SELECT1USESELECT2USE同时从学生表、成绩表取数据其他工作区字段的写法SELECT1USE学生GO3SELECT2USE成绩LOCATEFOR学号=A.学号SELECT1?学号,姓名,B.成绩工作区别名成绩表中第三个同学的学号建立表间的关联一、表间的永久关系1.在数据库表间建立永久关系在数据库表间建立永久关系的目的是:l为实现参照完整性提供依据。l在查询设计器、视图设计器中,作为默认连接条件。在数据库设计器中将主索引拖到另一表的相应索引上即可二、表之间的临时关系p106表间的永久性关系并不能使子表的记录指针随父表的记录指针产生联动表间的临时关系可以实现两表间记录指针的连动。例如,在浏览“学生”表的浏览窗口中,当光条移到某个学生记录上时,如果希望同时了解该学生的学习成绩,那么,可先在“学生”表与“成绩”表之间以“学号”字段

1 / 49
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功