
第04章数据库的创建和使用.ppt
38页1,VFP第4章,数据库的创建和使用,2,本章要点,1.掌握数据库的概念、创建、打开和关闭;2.掌握数据的组成(库表、永久关系、视图、存储过程);3.掌握库与表之间的链接以及链接的更新和恢复;4.掌握永久关系的概念、创建和删除、作用;5.掌握库表字段的扩展属性(格式、掩码、标题和注释)及其设置方法;6.掌握字段有效性规则、记录有效性规则、表触发器、库表之间参照完整性概念及其设置方法,以及VFP数据完整性概念;7. 掌握临时关系的概念、建立与解除,以及与永久关系的区别、联系3,目录,4.1 VFP数据库 4.2 数据库的设计过程 4.3 建立数据库文件 4.4 数据字典 4.5 数据库表字段的扩展属性 4.6 数据库表的表属性 4.7 表之间的关系 4.8 参照完整性 4.9 使用多个数据库 4.10 * 查看和设置数据库的属性,4,4.1 VFP数据库,数据库是一个容器,是许多相关的数据库表及其关系的集合1、数据库表 数据库表与数据库之间的相关性是通过表文件(.dbf)与库文件(.dbc)之间的双向链接实现的 前链是保存在库文件中的:表文件的路径和文件名信息;后链是保存在表文件中的:库文件的路径和文件名信息;2、视图3、连接 指定了远程数据源的名称4、存储过程存储过程是保存在数据库中的过程代码。
5,4.2.1 确定建立数据库的目的 数据库中要保存哪些信息4.2.2 确定需要的表 数据库设计中技巧性最强的一步4.2.3 确定表的字段 确定每张表中要保存哪些详细信息 原则: a、每个字段直接和表的主题相关 b、不要包含可推导得到和需计算的数据字段 c、收集所需的全部信息 d、以最小的逻辑单位存储信息 e、每张表都必须明确主关键字,4.2 数据库的设计过程,,6,4.2.4 确定表之间的关系 在每张独立的表中存储的数据之间有一定的关系,利用关系来查找数据库中有联系的信息 一、关系的种类 一对多关系(主表XS,子表CJ) 多对多关系(甲表XS,乙表KC;纽带表CJ) 一对一关系(不常用,可简单合并为一张表)例二、 分析并确定表之间关系 确定每张表数据和其它表中数据的关系,必要时,可在表中加入字段或创建新表来明确关系4.2.5 设计的改进,,7,例,一个教学数据库管理系统,涉及到学生、课程、教师、任课、学生成绩、专业等实体。
分别用表表示:学生表、教师表、课程表、任课表、学生成绩表、专业代码表cj表是xs和kc的纽带表,2个表的关键字都放在这个表中,返回,8,4.3 建立数据库文件,相关文件:数据库文件 .DBC数据库备注文件 .DCT数据库索引文件 .DCX一、打开数据库设计窗口 1、菜单: 新建命令 2、工具栏:“新建”按钮 3、项目管理器: 数据库--“新建”,,9,新建表,添加表,,10,,二、CREATE DATABASE [数据库名] * CREATE DATABASE sjk1三、数据库的打开和关闭 open database sjk &&打开数据库sjk open database sjk1 &&打开数据库sjk1 set database to sjk &&设置当前数据库为sjk close database &&关闭当前数据库sjk close database all &&关闭所有数据库,,11,,,数据字典 是指存储在数据库中用于描述所管理的表和对象的数据,即关于数据的数据。
这些数据称为 元数据 在数据库中的表可以享受到数据字典的各种功能数据字典使得对数据库的设计和修改更加灵活 数据字典可以创建和指定一下内容:表中字段标题、注释、默认值、输入掩码、 显示格式、表单中使用的默认控件类等主索引和候选索引关键字等字段级和记录级有效性规则、 数据库表之间的永久关系长表名和表注释存储过程插入、更新、删除触发器 4.4 数据字典,,12,4.5 数据库表字段的扩展属性,字段扩展属性保存在库表所在的数据库文件中,比较数据库表和自由表多了4部分属性: 显示 字段有效属性 匹配字段类型到类 字段注释,,13,4.5.1 字段的显示属性,字段的格式(Format)(表4—7) 在”格式“框中输入指定的字符,确定字段显示时大小写和样式总体指定)例: !:把字母字符转换为大写字符 输入掩码(Input Mask)(表4—8) 指定格式(具体指定)每个位置符号的指定 字段的标题(Caption)和注释(Comment) 使表具有更好的可读性 注意:字段名和字段标题的区别,,只能输入数字且6位,接受4个汉字或8个字符,,14,4.5.2 字段的有效性规则,一、 字段级规则用来控制用户输入到字段中的信息类型 在字段值改变时发生作用。
注意几点:1、字段有效性的作用2、如何设置3、何时验证规则,,15,Math>=0 and math<=100,,16,,二、为字段设置默认值:可以减少数据输入1、界面操作,如图2、*可以用DEFAULT 子句指定例:建表的时候指定默认值CREATE TABLE ss(xh c(6),xb C(2) DEFAULT "男")表已经建好,指定默认值 ALTER TABLE XS ALTER COLU xb SET DEFAULT “男” 3、系统给字段的默认值 P86 表4—10,,17,,返回,,18,返回,19,4.6 数据库表的表属性,,输入长表名,,,,20,4.6.1 长表名VFP规定最大长度128个字符使用长表名打开表前,必须打开所属的数据库长表名和文件名可以同样使用例如:给sx表设置长表名“学生情况表”,则以后打开此表可有2种方法: use xs &&此时表的别名是“xs” use 学生情况表 &&此时表的别名是“学生情况表 ”用命令设置长表名* 用CREATE TABLE 命令时用NAME子句指定长表名,,21,4.6.2 表记录的有效规则,什么情况下设置 通常是比较同一记录中两个以上字段的值例:职工表年满20周岁才能参加工作, 在记录有效性 —— 规则中写入: Year(date()) - year(csrq) > gl+20何时被激活 记录验证规则的激活时间是:记录指针离开记录时。
字段验证规则的激活时间是:字段输入完或光标离开时可以使用命令设置,,22,4.6.3 表的触发器什么是表的触发器是记录级事件代码会在事件(插入、更新或删除操作)之后运行的代码不同事件对应不同的代码操作触发器何时被激活触发器是绑定在表上的,当表中的任何记录被操作时,触发器被激活触发器在记录的验证规则之后运行例1) 只招收外语系学生: 插入触发器: ximing =‘外语系’例2) 只允许删除工龄超过30年的职工记录: 删除触发器: year(date())-year(gzrq)> 30可以用命令创建各触发器,,23,,有3个触发器1、插入触发器 插入或追加记录时触发该规则2、更新触发器 修改记录时触发该规则3、删除触发器 删除记录时触发该规则,,24,4.6.4 约束机制及其激活时机 库表的字段级和记录级规则及触发器,为数据的输入和修改实施了约束 激活时机(P.89 表 4-11)1、字段有效规则:字段级2、记录有效规则:记录级3、触发器: 表级,,25,4.7 表之间的关系,库表之间的永久关系 在数据库表之间建立的关系,并作为数据库的一部分保存起来,称为永久关系。
⑴永久性关系通过索引建立 一对多关系中 主表必须用主索引或侯选索引, 子表则使用普通索引 一对一关系中 两表都必须是主或侯选索引,,26,,⑵永久性关系的作用: 1、在查询或视图设计器中自动作为默认联接条件 2、作为表单和报表的默认临时关系 3、用来存储参照完整性信息⑶永久性关系的建立: ★ 在数据库设计器中建立 通过命令建立,,27,永久关系,,,28,,,29,4.8 参照完整性,4.8.1 参照完整性(RI)概念是用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则数据一致性的三个规则:子表中的每一个记录在对应的主表中必有一个父记录;在父表中修改记录时,如果修改了主关键字的值,则子表中相关记录的外部关键字值必须同样修改;在父表中删除记录时,与该记录相关的子表的记录必须全部删除30,4.8.2 设置参照完整性它建立在永久关系基础上,规则代码存于存储过程中在“数据库设计器”中右击关联线或利用菜单进行设置,,31,参照完整性规则有三种:更新、删除、插入。
每一种规则又具体分为:级联、限制、忽略32,参照完整性规则(见P.92表4-12),,33,注:主表作删除标记,子表也自动加删除标记,,,,34,4.8.3 数据完整性综述三类完整性:实体、参照和用户自定义完整性实体完整性:字段级和记录的完整性;分别通过字段和记录的有效性规则实施参照完整性:相关表之间的数据一致性;用户自定义完整性:用户通过编程实现的对数据完整性的约束35,4.9 使用多个数据库,1、打开多个数据库命令: OPEN DATABASE 库名1 OPEN DATABASE 库名2 OPEN DATABASE 库名3窗口方式打开,与打开一个数据库相同,多次操作open database sjkopen database sjk1,,36,,2、设置当前数据库最近一次打开的数据库是当前数据库设置当前数据库从“常用”工具栏的“数据库”下拉列表中选择或命令:SET DATABASE TO 库名测试函数DBC() &&返回当前打开的数据库的文件名DBUSED() &&返回指定的数据库文件是否已经打开,返回值为.t.或.f.例 : ? DBUSED(‘sjk’) 值为.T. 表示打开,,37,3、使用数据库中的表格式:USE 库名!表名 例: use sjk!xs注意:如果数据库sjk是当前的,则可以用use xs 。
如果数据库sjk不是当前的,虽然已打开sjk,必须用 use sjk!xs打开表,表所在的数据库会随着打开,例: use xs &&表在数据库sjk中? DBUSED(‘sjk’) && 显示.T.,,38,,4、关闭数据库使用“项目管理器”CLOSE DATABASES &&关闭当前数据库和表CLOSE DATABASES ALL &&关闭所有的数据库 及自由表、索引 CLOSE ALL &&关闭所有的数据库及 自由表、索引、各种设计器,。






![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)





