第1章数据库基础
【1】关系数据库的标准操纵语言是什么?操纵泛指哪些操作?
答:结构化查询语言。
答:定义、查询、更新、控制。
【2】举例说明用excel工作表表示两个实体的数据时,会导致哪些操作异常问题。
答:删除异常;插入异常;更新异常。
【3】请问数据库组织数据与excel组织数据的主要区别是什么?
答:数据库将同一个应用系统的不同实体的数据组织在不同的表中,而excel将数据组织在同一个电子表中。
【4】请问满足哪些条件的二维表才会成为一个关系?
答:关系是一个满足如下条件的二维表。
表的每行存储了某个实体或实体某个部分的数据;表的每列包含了用于表示实体某个属性的数据;表中的每个单元格都不能再分,只能存储一个值;任意一列中所有单元格的数据类型必须一致;每列都必须有唯一的名称,但表中列的顺序任意;行的顺序任意,但表中任意两行不能有完全相同的数据值。
【5】在关系模型中,什么叫关系、字段、记录、关键字?
答:对于一个二维表关系,通常将其中的每一行称为一个记录,或称为一个元组;将其中的每一列称为一个字段,或称为一个属性。在表的属性中,有一个属性或一组属性可以唯一的标识一个记录,将这个属性或属性组称为关键字。
【6】举例说明完整性约束的类型和功能?
(1)实现实体完整性约束:在任何关系的任何一个元组中,关键字的值不能为空值、也不能取重复的值。例如:关系seller指定编号为主键;关系product指定商品编号为主键。请读者思考:关系order应该怎样指定主键。
(2)实现域完整性约束:表中字段必须具有正确的数据类型、格式及有效的数据范围。域完整性约束由用户根据实际情况,例如:例如seller表中指定sex是字符型字段,它的宽度是2,并且sex∈{男,女};又如order表中销量整型数据,并且销量值要大于1,同时要低于product表的库存值。
(3)实现参照完整性约束:不引用不存在的实体。即:不允许在一个关系中引用另一个关系中不存在的元组。例如在order表中不能引用seller表中没有的销售员编号;又如order表中不能出现product表中不存在的商品编号。
第2章 Visual FoxPro基础
【1】简述Visual FoxPro6.0与DBMS的关系?
答:DBMS是数据库管理系统这类软件的统称,Visual FoxPro6.0是一个具体的DBMS软件,它们是抽象和实例的关系。
【2】说明使用“工具”菜单配置Visual FoxPro 6.0默认目录的方法?
答:选项对话框的文件位置选项卡的默认目录命令。
【3】举例说明Visual FoxPro 6.0中主要的常量数据类型有哪些?
答:字符型、数值型、货币型、日期型、日期时间型和逻辑型。
【4】请说明常量、变量、函数以及表达式的关系?
常量、变量、函数都是特殊的表达式;常量、变量、函数都是表达式的组成元素;常量和变量都可以是函数参数的组成元素。
【5】请用excel工作表的导入实验说明命令操作方式和菜单操作方式的一致性。
答:打开Visual FoxPro 6.0,使用“文件”菜单的“导入”命令导入一个excel文件,然后用“文件”菜单的“打开”命令打开导入的数据表,最后用“显示”菜单的“浏览”命令浏览这个数据表。在上述的菜单操作中,命令窗口都会出现相应的命令。
第3章数据表的创建与维护
【1】数据表中常用的数据类型有哪些?
答:字符型、整型、数值型、货币型、日期型、日期时间型、逻辑型、备注型与通用型。【2】数据表的结构和数据有什么区别和联系?
答:表的结构和数据都是描述一个实体的,表结构描述的是实体的属性,它定义一个这个属性的名称、类型、宽度等,而表数据是这个属性的值。
【3】物理排序和逻辑排序生成的结果文件的结构有什么不同?
答:主要区别是:物理排序在源数据表的基础上生成一个新的目标数据表,源数据表与目标数据表的结构是一致的,记录的内容是一致的,只是记录的存储顺序不一致,目标数据表中的记录是按照指定的字段重新排序的;逻辑排序是在源数据表的基础上生成一个新的索引文件,这个索引文件与源数据表的结构是不一致的,内容上也是不一致的,索引文件没有存储源数据表的任何一个记录,只是存储了源数据表所有记录的一种排序映射。
【4】索引项有哪几种类型?在建立和使用时有什么不同?
答:Visual FoxPro支持主索引、候选索引、普通索引和唯一索引4种类型,但对于自由表,不支持主索引这一类型。各种类型索引在建立和使用时有以下不同。
①主索引
主索引仅适用于数据库表,其索引关键字段的值不允许有重复值和NULL值。一个数据表只能创建一个主索引。一般把最具有代表性的字段作为表中的主索引。
②候选索引
候选索引与主索引一样,不允许其索引关键字段有重复值和NULL值。但一个数据表可以建立多个候选索引。
③普通索引
普通索引的索引关键字段允许有重复值和NULL值,无任何限制,是最常用的索引类型。一个数据表可以建立多个普通索引。
④唯一索引
唯一索引也允许其索引关键字段有重复值和NULL值,但在其索引项的列表中仅保留重复值的首条记录。一个数据表可以建立多个唯一索引。
【5】对数据表进行更新操作的Visual FoxPro专有命令有哪些?
答:更新操作包括记录插入、修改和删除。它们的专有命令有:记录插入:INSERT和APPEND;记录的修改:REPLACE;记录删除:DELETE、PACK。
第4章数据库的创建与管理
【1】简述自由表与数据库表的差别?
答:相对于自由表,数据库表有以下优点:可以使用长表名,在表中可以使用长字段名;可以为数据库表中的字段指定标题和添加注释;可以为数据库表中的字段指定默认值和输入掩码;可以为数据库表规定字段级规则和记录级规则;数据库表支持主关键字、参照完整性和表之间的联系。
【2】什么是永久关系?如何建立不同种类的永久关系?
答:数据库中各数据库表之间的关系被称为永久关系,这种关系能在运行结束后一直保存。在“数据库设计器”窗口中,通过在两表之间的索引项连线,可以很方便地建立表之间的永久关系。临时关系是用SET RELATION 命令创建的,这种关系在关闭Visual FoxPro时自动解除。
【3】什么是数据字典?有何作用?
答:数据字典保存了数据库各种数据的定义和设置信息,包括数据库中各数据库表的属性、各字段的属性、记录规则、表间关系及其参照完整性等。数据字典以文件的形式将数据库中相关对象的描述信息集中组织起来,是数据库数据维系的根基。
【4】Visual FoxPro有哪些类型约束?它们有什么区别?
答:Visual FoxPro的数据库约束分为三类:字段约束即字段有效性规则、记录约束即记录有效性规则、表间约束即参照完整性规则。
字段约束是为了保持字段的数据完整性,即指输入到字段中的数据的类型或值必须符合某个特定的要求,通过字段的有效性规则加以实施。表内约束是为了保持记录的数据完整性,通过记录的有效性规则。表间约束是为了保持相关表之间的数据一致性,通过参照完整性设置加以实施。
【5】什么是参照完整性?有何作用?
答:参照完整性(Referential Integrity)简称RI,设置RI就是建立一组数据库表之间的规则,当用户插入、更新或删除表中记录时,可保证各相关数据库表之间数据的完整性。设置参照完整性后,Visual FoxPro可以确保:
(1)当主表中没有相应的记录时,关联表中不得添加相关记录。
(2)若主表中的数据被改变时将导致关联表中出现孤立记录,则主表中的这个数据不能被改变。
(3)若主表中的记录在关联表中有匹配记录,则主表中的这个记录不能被删除。
设置参照完整性的操作包括:建立参照完整性的规则类型、指定应实施规则的数据库表,以及具体的实施规则。
第5章 SQL语言
【1】什么是SQL语言?它有什么主要特点?
答:SQL是Structured Query Language三个单词的缩略词,译为结构化查询语言。SQL 的功能主要包括定义、更新、查询和控制四个方面,是一个综合的、通用的、功能极强的关系数据库语言。
SQL语言的主要特点如下:
(1)SQL语言是一种一体化的语言,提供了完整的数据定义和操纵功能。
(2)SQL语言具有完备的查询功能。
(3)SQL语言非常简洁,易学易用。虽然它的功能强大,但只有为数不多的几条命令。此外它的语法也相当简单,接近自然语言,用户可以很快地掌握它。
(4)SQL语言是一种高度非过程化的语言。
(5)SQL语言的执行方式多样,既能以交互命令方式直接使用,也能嵌入到各种高级语言中使用。尽管使用方式可以不同,但其语法结构是一致的
(6)SQL语言不仅能对数据表进行各种操作,并可对视图进行操作。
它具有功能丰富、使用方式灵活、语言简洁易学等突出特点。
【2】SQL语言的功能有哪些?
答:SQL语言具有以下4个方面的功能。
(1)数据定义功能。SQL语言最基本的功能就是数据定义功能,这主要包括:定义、删除与修改数据表的结构和约束;另外为了提高数据查询的效率,SQL语言还可以基于数据表建立索引,当然索引也可以被修改和删除;SQL语言还具有视图定义功能。
(2)数据更新功能。数据定义功能只是建立的数据表的结构和约束,刚刚定义的数据表是一个空表,里面没有任何数据,需要使用插入命令在表中插入数据,插入的数据如果有问题,还可以使用修改命令对数据进行修改或删除。数据的插入、修改和删除统称为数据的更新功能。
(3)数据查询功能。数据查询是SQL语言最重要的功能,SQL语言既可以进行简单的
单表查询,也可以进行较为复杂的多表查询,另外SQL语言还支持汇总查询、集合查询等功能。
(4)数据控制功能。数据控制功能主要涉及是数据保护和事务管理两方面的内容。数据控制主要完成安全性和完整性控制任务,事务管理主要完成数据库的恢复以及并发控制等功能。
【3】数据库中既然有了表,为什么还要有视图?它们二者有什么区别?
答:虽然视图十分像表,但是不能将视图认为是表,两者之间有着本质的区别:表中的数据是物理存在并存储在介质上的,而视图本身没有存储任何实际数据,只是一种逻辑对象,它所有的数据都是通过引用基表反映出来的。视图中的数据是按照用户指定的条件从已有的数据库表或其他视图中抽取而来,这些数据在数据库中并不另加存储,而是仅在该数据库的数据字典中存储这个视图的定义。某个视图一旦被定义,就成为数据库中的一个组成部分,具有与普通数据库表类似的功能,可以像数据库表一样地接受用户的访问和更新。
视图是由数据库中满足一定约束条件的数据组成的,可以作为某个应用的专用数据集合。当对视图进行操作时,将由系统转换为对基本数据表的操作,这样既方便了用户的使用,同时也提高了数据的独立性,有利于数据的安全与保密。
【4】SELECT语句可以给数据表物理排序吗?为什么?
答:可以。ORDER BY短语指明对查询结果进行排序后输出。INTO TABLE可以指定排序
后结果的输出数据表。
【5】什么是分组查询,举例说明分组查询的实际意义。
答:分组查询是将检索得到的数据依据某个字段的值划分为多个组后输出,这是通过SELECT的GROUP BY子句实现的。在实际应用中分组查询经常与统计函数一起使用。
【6】什么是嵌套查询?嵌套查询可以完全替代连接查询吗?为什么?
答:Visual FoxPro 允许一条SELECT语句(内层)成为另一条SELECT语句(外层)的一部分,这样就形成了嵌套查询。外层的SELECT语句被称为外部查询,内层的SELECT语句被称为内部查询(或子查询)。
嵌套查询不能完全替代连接查询,连接查询和子查询各有各的优点:当需要即时计算聚集值并把该值用于外部查询中进行比较时,子查询就比连接更具有优势;而如果查询中的SELECT列表所包含的列来自于多个表,那么这时连接的优势要胜过子查询。
另外,当数据量大的时候,子查询很影响速度,这种情况下,要尽量减少子查询的使用。对于数据量多的肯定是用连接查询快些,原因:因为子查询会多次遍历所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。
但是数据量少的话也就无所谓是连接查询还是子查询,视自己的习惯而定。一般情况下还是用子查询来的好,容易控制。
第6章视图与查询
【1】使用数据库的视图有哪些优点?
答:视图是查看原始数据库数据的一种方式,依赖于某一个数据库而存在,具有以下优点:(1)简单性。看到的就是需要的,视图不仅可以简化用户对数据的理解,也可以简化他们的操作,用户可以根据需要设定视图,以后不用每次都去指定条件,只要调用视图即可。(2)安全性。通过视图,用户只能查询和修改他们所能见到的数据,而无法看到数据库中的其它数据,较好地满足了不同权限用户的需求,并防止非权限数据被篡改。(3)逻辑数据独立性。视图可以帮助用户屏蔽真实表结构变化带来的影响。
【2】如何设置视图的可更新条件?
答:为了能够通过视图更新源数据表中的数据,需要打开“视图设计器”,在其下部窗格的“更新条件”选项卡中,选中其左下角的“发送SQL更新”复选框,选定可更新的表,以及可更新字段,确定更新方式,便可进行更新操作了。
【3】Visual FoxPro中提供了哪几种创建视图的方法?
答:Visual FoxPro允许通过视图向导、视图设计器和有关的命令等多种方式来创建视图。
【4】使用查询设计器进行查询的基本步骤是什么?
答:(1)打开“查询设计器”窗口。(2)指定被查询的数据表。(3)选择出现在查询结果中的字段。(4)设置查询条件。(5)设置排序或分组来组织查询结果。(6)指定查询结果的输出方向。(7)保存查询文件。(8)运行查询。
【5】查询与视图有哪些区别?视图与数据表又有哪些区别?
答:查询与视图的区别:(1)视图是一种虚拟表,只是保存在数据库中的一个数据定义,只有在数据库打开的情况下,在数据库设计器中进行浏览和修改;查询创建后,会产生一个保存在磁盘上的扩展名为.QPR的查询文件,这个查询文件完全独立,它不依赖数据库的存在而存在,并且用户可再未打开有关数据库或数据表的情况下运行查询文件。(2)通过视图可以更新数据库表中的数据,而查询不可以;(3)查询去向可以有浏览、临时表、表、图形、屏幕、报表和标签七种方式,而视图只能通过浏览方式进行查看。
视图与数据表的区别:虽然视图十分像表,但是不能将视图认为是表,两者之间有着本质的区别:表中的数据是物理存在并存储在介质上的,而视图本身没有存储任何实际数据,只是一种逻辑对象,它所有的数据都是通过引用基表反映出来的。视图中的数据是按照用户指定的条件从已有的数据库表或其他视图中抽取而来,这些数据在数据库中并不另加存储,而是仅在该数据库的数据字典中存储这个视图的定义。某个视图一旦被定义,就成为数据库中的一个组成部分,具有与普通数据库表类似的功能,可以像数据库表一样地接受用户的访问。
第7章程序设计基础
三、程序填空
【1】(1)T=1
INPUT "请输入N的值:" TO N
(2)T=2
INPUT "请输入N的值:" TO N
(3)T=1
INPUT "请输入N的值:" TO N
TO 1
【2】(1)LOCA TE FOR顾客编号="37020001"
顾客编号="37020001"
ENDIF
(2)LOCATE FOR顾客编号="37020001"
! EOF()
SKIP
四、阅读程序,写运行结果
【1】显示商品表PRODUCT.DBF中库存大于等于200的商品的商品名称和商品库存【2】*
***
*****
*******
*********
【3】ABCDEF---------->FEDCBA
【4】6 1 2 2 75
五、编程题
【1】CLEAR
USE PRODUCT
ACCEPT "请输入商品编号:" TO BH
LOCATE FOR 商品编号=BH
IF FOUND()
? 商品名称,商品库存
ELSE
? "找不到该编号商品!!!"
ENDIF
USE
RETURN
【2】CLEAR
INPUT "请输入里程数:" TO LCH
IF LCH<=3
? "车费8元"
ELSE
CHF=8+(LCH-3)*3
? "车费"+STR(CHF,4)+"元"
ENDIF
RETURN
【3】CLEAR
INPUT "输入A的值" TO A
INPUT "输入B的值" TO B
INPUT "输入C的值" TO C
IF C>B
T=C
C=B
B=T
ENDIF &&执行第一个IF 语句后保证了B和C中较大者放入B
IF B>A
T=B
B=A
A=T &&执行第二个IF 语句后保证了A和B中较大者放入A
ENDIF &&以上两个IF 语句实现了A、B、C三者中最大者放入A
IF C>B
T=C
C=B
B=T
ENDIF &&执行第三个IF 语句后保证了B和C中较大者放入B
? A,B,C
RETURN
【4】用Visual FoxPro命令实现
CLEAR
USE ORDER
LOCATE FOR YEAR(订单日期)=2012 AND MONTH(订单日期)=11
IF FOUND()
DISP ALL FOR YEAR(订单日期)=2012.AND.MONTH(订单日期)=11
ELSE
?" 2012年11月份没有订单!!!"
ENDIF
RETURN
**用SQL语言实现
CLEAR
USE ORDER
LOCATE FOR YEAR(订单日期)=2012 AND MONTH(订单日期)=11
FND=FOUND()
USE
IF FND
SELECT * FROM ORDER ;
WHERE YEAR(订单日期)=2012.AND.MONTH(订单日期)=11 ELSE
?" 2012年11月份没有订单!!!"
ENDIF
RETURN
【5】CLEAR
INPUT "请输入成绩:" TO S
DO CASE
CASE S>=90
? "优秀"
CASE S>=75
? "良好"
CASE S>=60
? "及格"
OTHERWISE
? "不及格"
ENDCASE
RETURN
【6】用Visual FoxPro命令实现
CLEAR
SELE 1
USE COURSE
USE SCORE IN 2
? SPACE(6)+"课程名称"+SPACE(10)+"选课人数"
SCAN
KCHH=课程编号
SELE 2
RSH=0
SCAN FOR课程编号=KCHH
RSH=RSH+1
ENDSCAN
SELE 1
? 课程名称+SPACE(4)+STR(RSH,4)
ENDSCAN
CLOSE ALL TABLE
RETURN
**用SQL语言实现
CLEAR
SELECT COURSE.课程名称, COUNT(*) AS 人数;
FROM COURSE,SCORE;
WHERE COURSE.课程编号=SCORE. 课程编号;
GROUP BY COURSE.课程名称
RETURN
【7】用Visual FoxPro命令实现
SELE 1
USE SCORE
USE STUDENT IN 2
? "学生姓名"+SPACE(4)+"成绩"
SCAN FOR 课程编号="200101"
XH=学号
SELE 2
LOCA TE FOR 学号=XH
XM=姓名
SELE 1
? XM+SPACE(4)+STR(成绩,6,2)
ENDSCAN
CLOSE ALL TABLE
RETURN
**用SQL语言实现
CLEAR
SELECT STUDENT.姓名, SCORE.成绩;
FROM STUDENT,SCORE;
WHERE STUDENT.学号=SCORE.学号AND;
SCORE.课程编号='200101'
RETURN
【8】CLEAR
FOR I=1 TO 9
FOR J=1 TO I
?? STR(I,1)+" * " +STR(I,1)+" = "+STR(I*J,2)+SPACE(4)
NEXT
?
NEXT
RETURN
【9】(1)用过程实现
*主程序MAIN1.PRG
CLEAR
INPUT "请输入M的值" TO M
INPUT "请输入N的值" TO N
STORE 1 TO T1,T2,T3
DO P1 WITH M,T1
DO P1 WITH N,T2
DO P1 WITH M-N,T3
T=(T1+T2)/T3
? "答案是"+STR(T,10)
*过程P1
PROCEDURE P1
PARAMETER X,Y
FOR I=1 TO X
Y=Y*I
NEXT
RETURN
(2)用自定义函数实现
*主程序MAIN2.PRG
CLEAR
INPUT "请输入M的值" TO M
INPUT "请输入N的值" TO N
T=(F(M)+F(N))/F(M-N)
? "答案是"+STR(T,10)
RETURN
*自定义函数F
FUNCTION F
PARAMETER X
Y=1
FOR I=1 TO X
Y=Y*I
NEXT
RETURN Y
【10】CLEAR
DO WHILE .T.
USE PRODUCT
ACCEPT "请输入商品编号:" TO BH
LOCATE FOR 商品编号= BH
FND=FOUND()
USE
IF .NOT. FND
商品编号=BH
ACCEPT "商品名称:" TO 商品名称
INPUT "商品价格:" TO商品价格
INSERT INTO PRODUCT FROM MEMV AR
ELSE
? "表中已有该商品,不需要插入"
ENDIF
WAIT "继续插入新商品吗(y/n)" TO ANSWER
IF UPPER(ANSWER)="N"
EXIT
ENDIF
ENDDO
RETURN
第8章面向对象程序设计
【1】说明面向对象和面向过程进行程序设计的区别?
答:OOP方式以对象和数据结构为程序设计的中心,而不是以操作和过程为中心。OOP 方式用“对象”表示各种事物、用“类”表示对象的抽象、用“消息”实现对象之间的联系、用“方法”实现对象处理的过程。在面向对象的程序设计过程中,开发者的中心工作不再是程序代码的编写,而是着重于如何合理地创建类与对象、如何建立对象之间的联系、如何利用对象来简化程序的设计等。
【2】什么是对象?什么是类?类和对象之间是什么关系?
答:对象是要研究的任何事物,在Visual FoxPro中,包含在应用程序中的表单、各种控件都是对象。所谓类是对象的集合,是对一组具有共同方法和一般属性的对象的抽象描述。类是在对象之上的抽象,对象则是类的具体化。在OOP中,类就像是一批对象的框架和模板,用户可在它的基础上方便地生成具有该类性质的若干个对象。这些对象虽然具有相同的属性和行为方法,但它们在属性上的取值是可以完全不同的,并且彼此之间是相互独立的。
【3】怎样理解类的封装性、继承性和多态性三个特性的含义?
答:(1)封装性:所谓封装性实际上是将信息进行隐蔽,将对象的方法程序和属性代码包装在一起,外部只能通过向对象发送信息来使用该对象,而不必也不能知道对象内部处理该消息的方法,隐蔽了不必要的复杂性。(2)继承性:从一个现有的、更普遍的类型创建出一种新的、更具体的类型的方法,而不必从零开始设计每个类。(3)多态性:对象的多态性是指同类的对象可以有不同的表现形式。
【4】VFP6.0提供的基类有哪些?举例说明容器类的包含关系。
答:Visual FoxPro的基类一般可分为两大类,即:控件类与容器类。容器(Container)类能够包含其他的对象,在一个容器类对象中有时还可以包含另一些容器对象,例如:一个表单集中可包含多个表单,每个表单中可以包含按钮、文本框等对象,所以说表单是容器类对象的一个典型例子。
第9章表单设计及应用
【1】简述表单的作用。
答:表单在Visual FoxPro数据库应用系统中有着重要的应用,它往往用来作为应用程序数据输入、修改或输出的用户界面。事实上,Windows环境中的窗口及对话框均为表单的不同表现形式。
【2】常用的表单事件有哪些?
(1)Init事件:在对象建立时引发。
(2)Activate事件:在表单、表单集或页面对象激活时引发。
(3)Destroy事件:在对象释放时引发。
(4)Load事件:在表单对象建立之前引发。
(5)Unload事件:在表单对象释放时引发,是表单释放时最后一个要引发的事件。
(6)Error事件:当对象的方法或事件代码在运行中产生错误时引发。
(7)Gotfocus事件:当对象获得焦点时引发。
(8)Click事件:用鼠标单击表单的空白处,将引发表单的Click事件。
【3】常用的表单方法有哪些?
(1)Release方法
将对象从内存中释放。若释放一个表单,即是将此表单关闭。
(2)Refresh方法
刷新对象的信息。当一个表单被刷新时,该表单中所有控件的内容将同时被刷新;而当一个页框被刷新时,只有当前页被刷新。
(3)Show方法
显示表单。此方法将表单的Visible属性设置为.T.,并使该表单成为活动对象。
(4)Hide方法
隐藏表单。此方法将表单的Visible属性设置为.F.,因而表单不可见。
(5)SetFocus方法
让对象获得焦点,使其成为活动对象。如果一个对象的Enabled属性值或Visible属性值为.F.,则不能获得焦点。
【4】请说明“文本框”与“编辑框”的区别。
答:文本框只能供用户输入一段数据,其数据类型可以为字符型(默认类型)、数值型、日期性、逻辑型;而编辑框可以供用户输入多段数据(所以编辑框通常有垂直滚动条),且其数据类型只能为字符型。
【5】请说明“列表框”与“组合框”的区别。
答:列表框任何时候都显示它的列表;而组合框通常只显示一项内容,当用户单击其右侧的向下按钮时才显示出可滚动的下拉列表。对于组合框而言,又有下拉组合框和下拉列表框之分。
【6】请说明数据环境及其作用。
答:数据环境泛指创建表单或表单集时所使用的数据源,包括与表单或表单集相关的数据表、视图以及表之间的关系等。在表单运行时,数据环境中的表或视图会随所属的表单自动打开,并随该表单的释放而释放。