单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数据库技术及应用,教材:?Visual FoxPro 8.0实用教程?,谢维成 陈永强 郑海春 编著,清华大学出版社,第6章 数据库的创立及操作,6.1 数据库设计概述,6.2 创立数据库,6.3 设置数据库表属性,6.4 创立数据库表间的关系,6.5 习题,6.1 数据库设计概述,VFP中的表分为数据库表和自由表两类,文件扩展名为.dbf。数据库表具有自由表所没有的一些属性。数据库表和自由表可以相互转换,自由表参加到某一数据库时就成为数据库表,而数据库表从数据库中移出就成为自由表。,数据库设计的一般步骤,1、分析数据需求:确定数据库要存储哪些信息;,2、确定需要的表文件:一旦明确了数据库所要实现的功能,就可以将必需的信息分解为不同的相关主题,在数据库中为每个主题建立一个表;,3、确定需要的字段:这实际上就是确定在表中存储信息的内容,即确立各表的结构;,4、确定各表之间的关系:仔细研究各表字段之间的关系,确定各表之间的数据应该如何进行连接;,5、改进整个设计:可以在各表中参加一些数据作为例子,然后对这些例子进行操作,看是否能得到希望的结果。如果发现设计不完备,可以对设计作一些调整。,例:?学生学籍管理系统?,1、分析数据需求:系统需要存储学生情况、课程、成绩信息。,2、确定需要的表文件:xsqk.dbf,kc.dbf,xscj.dbf,xb.dbf,zy.dbf,3、确定需要的字段:如表6.16.5所示;,4、确定各表之间的关系,5、改进整个设计,表6.1“xsqk.dbf学生情况表中的字段,标题,学号,姓名,性别,出生日期,民族,政治面貌,说明,照片,字段名,no,name,sex,birth,nation,clan,note,photo,类型,C,C,C,D,C,C,M,G,宽度,9,8,2,8,10,4,4,4,NULL,否,否,否,否,否,否,可,可,主索引,升序,记录,000802102,朱欣,男,02/01/1982,汉族,团员,000802103,朱玥,女,12/01/1981,汉族,团员,6.2“xscj.dbf学生成绩表,标题,学号,课程代码,成绩,学期,说明,字段名,no,courseid,score,term,detail,类型,C,C,N,N,M,宽度,9,3,5,1,1,0,4,NULL,否,否,否,否,可,主索引,no+courseid+STR(term),普通索引,升序,升序,记录,000802101,002,69.0,1,Memo,000802101,001,66.1,1,Memo,6.3“kc.dbf课程表,标题,课程名称,课程代码,字段名,course,courseid,类型,C,C,宽度,20,3,NULL,否,否,主索引,升序,记录,低频电路,000,计算机导论,001,6.4“xb.dbf系部表,标题,系部名称,系部代码,字段名,dep,dcode,类型,C,C,宽度,22,2,NULL,否,否,主索引,升序,记录,电子信息与电气工程系,08,计算机科学与工程系,09,6.5“zy.dbf专业表,标题,专业名称,专业代码,系部代码,字段名,major,mcode,dcode,类型,C,C,C,宽度,22,2,2,NULL,否,否,否,主索引,dcode+mcode,普通索引,升序,记录,电气技术,01,08,信息工程,02,08,电子信息,03,08,计算机及应用,01,09,软件理论,02,09,6.2 创立数据库,建立数据库文件,结合?学生学籍管理系统?数据库的建立,讨论如何创立数据库。,1利用“数据库设计器创立数据库,【例6.1】利用“数据库设计器来创立“学生学籍管理系统数据库,2使用CREATE DATABASE命令创立数据库,数据库的操作,1翻开数据库命令OPEN DATABASE,语法:OPEN DATABASE|?,功能:翻开一个数据库。,2关闭数据库命令,语法1:CLOSE DATABASES,功能:关闭所有翻开的数据库和数据表,语法2:CLOSE ALL,功能:关闭所有翻开的数据库和数据表,同时关闭除主窗口外的各种窗口。,3修改数据库命令,语法:MODIFY DATABASE|?,功能:翻开当前数据库的“数据库设计器,修改数据库。,4删除数据库命令,语法:DELETE DATABASE|?,功能:从磁盘上删除数据库文件。,说明:删除数据库文件,原数据库中的表随即变成自由表。,数据库中表的操作,VFP有两种形式的数据表,即自由表和数据库表。数据库表和自由表相比,具有一些自由表所没有的属性,如主关键字、触发器、默认值、表关系等。,1向数据库中添加表,【例6.2】将前面建立的两个自由表“xsqk.dbf学生情况表和“xscj.dbf学生成绩表添加到数据库中,使它们成为“学籍管理数据库中的数据库表。,2从数据库中移去或删除表,3重命名数据库中的表,新建数据库表,图“学籍管理数据库中的各个数据表,【例6.3】使用数据库的“表设计器来创立“kc.dbf表,6.3 设置数据库表属性,数据库表属性的常用概念,1触发器,触发器是在对数据库表进行一个插入、更新、删除操作之后运行的事件级代码。不同的事件激发不同的动作,触发器在有效规那么之后运行。它们常用于检查已建立永久关系的数据库表之间的数据完整性。触发器只存在于数据库表中,自由表中不存在触发器,触发器是数据库的一局部,受数据库的管理。,2有效性规那么,有效性规那么是检查输入数据是否满足某些条件的过程。,3记录规那么,记录规那么是一种与记录有关的有效性规那么。当插入或修改字段值时被激活,多用于检查数据输入的正确性。记录规那么在字段规那么之后和触发器之前被激活。,4字段规那么,字段规那么是一种与字段有关的有效性规那么,当插入或修改字段值时被激活,多用于数据输入正确性检查。字段规那么在记录规那么和触发器之前被激活。,设置字段的显示属性,1设置字段的标题,字段标题,2设置字段的显示格式,常用的格式码:,A 表示只允许输出文字字符禁止输出数字、空格或,标点符号;,D表示使用当前系统设置的日期格式;,L表示在数值前显示填充的前导零,而不是用空格字,符;,T表示禁止输入字段的前导空格字符和结尾空格字,符;,!表示把输入的小写字母字符转换为大写字母。,3设置字段的掩码,常用的输入掩码:,X表示可输入任何字符;,9 表示可输入数字和正负符号;,表示可输入数字、空格和正负符号;,比方指定“xsqk.dbf表中的“no字段的输入掩码为“999999999,再把“name字段的显示格式指定为“AT。在这个表的浏览窗口中,当增加新记录时,“no字段只能接受数字输入,而不能输入空格字符、字母等。“name字段只能接受字母或汉字输入,而不能输入空格字符、数字等。设置“格式和“输入掩码,它们是相辅相成的。,输入字段的注释,字段注释,字段注释,表达式生成器窗口,字段有效性,在数据库表的表设计器中,在“字段有效性的框线内有3个表达式文本框:规那么、信息和默认值。,1设置字段的默认值,默认值,2设置字段的有效性规那么,当在数据库中设置了有效性规那么,如果输入无效数据,那么VFP就产生警告信息,要求用户重新输入。根据有效性规那么激活方式的不同,有效性规那么分为两种:字段有效性规那么和记录有效性规那么。字段有效性规那么检查字段中单个信息输入的数据是否有效;记录有效性规那么只有在整条记录输入完成后才开始检查数据的有效性。,字段有效性规那么,记录有效性,1设置记录有效性规那么,记录有效性规那么,2设置触发器,字段级有效性和记录级有效性规那么主要限制非法数据的输入,而数据输入后还要进行修改、删除等操作。假设要控制对已经存在的记录所作的非法操作,那么应使用数据库表的记录级触发器。触发器是在某些事件发生时触发执行的一个表达式或一个过程。这些事件包括插入记录、修改记录和删除记录。当发生了这些事件时,将引发触发器中所包含的事件代码。,6.4 创立数据库表间的关系,数据库表之间存在着永久关系和临时关系这两种关系。永久关系一旦创立就保存在数据库文件中;临时关系是在使用时临时创立的。,索引可以对数据库表进行排序,也可以用其建立关系。在“数据库设计器中,通过连接不同表的索引可以很方便地建立表之间的关系。,当把关系当作永久关系存储在数据库文件中以后,VFP就自动将永久关系作为查询、视图、表单和报表的默认关系。此外,利用永久关系还可以存储参照完整性信息。,设置表间的临时关系,在建立表间的临时关系后,就会使得一个表子表的记录指针自动随另一个表父表的记录指针移动。这样,便允许在关系中“一方或父表选择一条记录时,会自动去访问表关系中“多方或子表中的相关记录。,【例6.4】通过“数据工作期对话框创立“xsqk.dbf表与“xscj.dbf表间的临时关系。,设置表间的永久关系,永久关系是数据库表间的关系,它们存储在数据库文件中,具有如下特点:,在“查询设计器和“视图设计器中,自动作为默认连接条件。,在“数据库设计器中,显示为联系表索引线。,作为表单和报表的默认关系,在“数据环境设计器中显示。,用来存储参照完整性信息。,永久关系与临时关系不同,它不必在每次使用表时重新创立。在VFP中,可使用索引在数据库中建立表间的永久关系。,【例6.5】使用“数据库设计器创立“学籍管理数据库中“xsqk.dbf表与“xscj.dbf表间的永久关系。,在数据库的两个表中建立永久连接时,要求两个表的索引中至少有一个是主索引。必须先选择父表的主索引,而子表中的索引类型决定了要创立的永久连接类型:如果子表中的索引类型为主索引或候选索引,那么建立起来的就是一对一关系;如果子表中的索引类型为普通索引,那么建立起的就是一对多关系。,被选中的关系线,关系线快捷菜单,参照完整性,前面已经讲到字段级有效性和记录级有效性规那么,这里讲的参照完整性属于表间规那么。建立参照完整性涉及到生成一系列规那么,以便在输入或删除记录时,能保持已定义的表间关系。参照完整性应满足如下3个规那么:,在关联的数据表间,子表中的每一个记录在对应的父表中都必须有一个父记录。,对子表作插入记录操作时,必须确保父表中存在一个父记录。,对父表作删除记录操作时,其对应的子表中必须没有子记录存在。,在VFP中,可使用“参照完整性生成器来设置规那么,控制如何在关系表中插入、更新或删除记录。,【例6.6】将“xsqk.dbf表和“xscj.dbf表设置成级联性更新。,在“参照完整性生成器中,用户可以对更新、删除或插入父表与子表记录时所遵循的规那么进行如下设置:,1更新规那么,级连:当修改父表中的某一记录时,子表中相应的记录,将会改变。,限制:当修改父表中的某一记录时,假设子表中有相应的,记录,那么禁止该操作。,忽略:两表更新操作将互不影响。,2删除规那么,级连:当删除父表中的某一记录时,将删除子表中,相应的记录。,限制:当删除父表中的某一记录时,假设子表中有相,应的记录,那么禁止该操作。,忽略:两表删除操作将互不影响。,3插入规那么,限制:当在子表中插入某一记录时,假设父表中没有,相应的记录,那么禁止该操作。,忽略:两表插入操作将互不影响。,6.5 习题,一、选择题,1在数据库中可以存放的文件是。,A数据库文件 B数据库表文件,C自由表文件 D查询文件,2要关闭已经翻开的数据库,可使用以下命令。,ACLEAR BCLOSE,CCLOSE DATABASEDCLEAR ALL,3在“表设计器的字段有效性验证中可以设置、信息和默认值三项内容。,A格式B标题C规那么D输入掩码,4翻开数据库文件的命令是。,AUSE BUSE DATABASE COPEN,DOPEN DATABASE,5Visual FoxPro系统,在“参照完整性生成器中选择“删除规那么选项卡,当按下“限制按钮时完成的功能是。,A删除子表中的所有相关记录 B允许删除,不管子表中的相关记录,C对所有记录均限制删除 D假设子表中有