vfp数据库的创建和使用.ppt
Visual FoxPro,讲授 钟 丹,江苏省普通高校计算机等级考试教程,第 三 章,数据库的创建和使用,一、数据库的基本概念,数据库的概念:数据库是一个容器,是许多相关的数据库表及其关系的集合数据库设计的一般步骤:*需求分析;*分解问题,确定表;*确定表中字段;*确定表之间关系;*改进优化数据库的功能:存储一系列表,在表间建立关系,设置属性和数据有效性规则使相关联的表协同工作。库文件类型:每创建一个新的数据库都将产生三个文件:数据库文件.dbc,关联的数据库备注文件.dct,关联的数据库索引文件.dcx,设计一个完善、高效和结构优化的数据库,是创建以数据库为基础的信息系统中必不可少的重要环节,VFP的主要操作对象就是数据库(库表),VFP数据库的组成数据库表:从属于某个数据库的表,与自由表相比具有许多扩展功能和管理特性注:库表与库之间的相关性是通过库表文件(.dbf)和库文件(.dbc)之间的双向链接来实现的,双向链接包括前链和后链;前链保存在库中,后链保存在表中 P71视图(view):把分散在相关表中的数据通过联接条件将它们收集到一起,构成一张虚表,视图就是这样一种虚表类型。连接(connection)存储过程,二、数据库的创建,数据库的创建:界面方式:1、在“项目管理器”中创建,创建的库在项目中 2、通过“新建”按钮或“文件”“新建”来创建,创建的库不在项目中命令方式:用create database databasename|?打开一个库:界面方式:新建一个数据库,保存后会自动打开在打开一个数据库表时,系统也会自动的打开相应的库在“项目管理器”中用“打开”或“修改”按钮命令方式:Open database databaseNameexclusive|sharednoupdatevalidate,三、数据库的使用,设置当前数据库在“常用”工具栏“数据库下拉列表”中选择利用set database to databaseName命令来进行设置检查数据库的有效性:p75若用户移动了数据库文件(.dbc,.dct,.dcx)或与数据库相关联的表文件,则这些文件的相对路径会改变,那么有可能破坏VFP关联库和表的双向链接,就需要重建链接或检查有效性,使用命令:Validata database recoverto printer|to file filename关闭库:“项目管理器”“关闭”按钮 p75 close database all命令 删除库:“项目管理器”“移去”按钮;delete database,概念:数据字典是指存储在数据库中,用于描述所管理的表和对象的数据;存储在数据字典中的信息称之为元数据(Metadata),换言之,其记录的是关于数据的数据。数据字典的功能:创建和指定以下内容表中字段的标题、注释、默认值、输入掩码和显示格式,以及表单中的默认控件表的主索引关键字长表名和表注释字段级和记录级有效性规则存储过程插入、更新和删除事件触发器,四、VFP数据字典概述,五、数据库表,库表的创建:界面方式:选中“项目管理器”“数据库”“表”,新建按钮“数据库设计器”“数据库设计器工具栏”“新建表”在数据库打开时,“文件”“新建”或“新建”按钮命令方式:p101,注意name与free子句在数据库打开时,利用create table-SQL语句来创建表,此时若在命令中不使用free子句,则创建的为库表注意:在利用命令创建库表时,可以使用name子句定义长 表名(表名长度可超过128个字符),数据库表具有自由表的所有功能,对自由表适用的所有操作也同样适用于数据库表,库表还另外扩展了数据管理和控制等功能,库表的字段扩展属性:P7880,例字段显示属性:只要求会根据给出的条件进行设置字段格式:用于指定字段显示时的格式,包括浏览窗口、表单和报表中显示时的大小写和样式等,可用的格式字母代号见 P79 表3-2输入掩码:用于指定字段中输入数据的格式,可用的掩码字符见P79 表3-3字段的标题和注释:标题和注释是为了使表具有更好的可读性和可理解性,不是必需的;在“项目管理器”中选中字段,窗口下部的状态栏会显示字段注释,数据库表除了具有自由表的属性之外,还可以设置一些扩展属性;这些属性在“表设计器”中设置,并作为数据字典保存在数据库中,字段级验证:用来限定字段的取值及取值范围,包括有效性规则,有效性信息以及默认值字段有效性规则:用来控制输入到字段中的数据的取值范围,是一个逻辑表达式,且当前字段包含在表达式当中;当输入数据时,系统根据表达式进行验证,若结果为.t.,则接收输入的值;否则,拒绝输入的值,并且显示一个提示框字段有效性信息:它是有效性规则的说明,是一个字符表达式,是在拒绝输入值时显示的提示框中的说明信息默认值:向一张数据库表中添加新记录时所指定的最初的值称为该字段的默认值,它必须是一个与字段类型相同的表达式,适当的设置默认值可以减少输入的工作量字段的默认控件类型:作用是指定在使用“表单向导”生成表单或从数据环境中将字段拖放到表单上时,与字段相对应的控件类,还可以利用命令来进行扩展属性的设置:P101102Create table 表名(字段名 类型(宽度)default 表达式check 表达式error 提示信息)Alter table 表名 alter column 字段名 set defa 表达式set check 表达式error 提示信息P103 例子阅读,请读懂上机操作:为CJ表的CJ字段设置扩展属性:XH的默认值为“980000”,要求CJ必须在0100之间,若不是在此范围请给出提示信息:成绩必须在0100之间,库表的表属性:P8182,例长表名和表注释长表名:创建表时,若不做任何规定则表文件名就是表名;若设置了长表名属性,则该数据库在任何场合均以长表名代替表文件名使用 在“表设计器”“表”卡片“表名”中设置,也可在使用create table命令创建库表时用Name子句来设置(如前述)表注释:表的说明信息,在“表设计器”“表”卡片中进行设置;设置后在“项目管理器”中选中相应的表,可在窗口的下部状态栏中看到表的注释,数据库表不仅可以设置字段的扩展属性,还可以为表设置一些属性,如长表名、记录级验证、触发器等,这些属性在“表设计器”中设置,也保存在数据字典中,记录级验证:用于定义记录级校验规则,包括了记录的有效性规则和有效性信息注意比较字段级验证和记录级验证的区别记录有效性规则和信息的设置类似于字段有效性规则和信息的设置,也可在create table时利用check子句来进行设置或在alter table时利用set check子句来进行设置注意比较利用命令进行字段验证设置和记录验证设置的区别表触发器:是绑定在表上的逻辑表达式,是表在进行插入、更新或删除记录是的检验规则触发器分为三种:插入、更新、删除触发器的返回值为.t.或.f.,若为.t.,则允许该操作执行;否则,就,不允许该操作执行触发器可在“表设计器”“表”卡片中设置,也可通过create trigger on来设置触发器,通过delete trigger on来删除触发器,库表的约束机制及其激活时机综述:P82 表3-5库表的索引:前述有关自由表索引的一切内容均适用于库表,但库表多出一个主索引设置主索引时必须注意:主索引必须是一个候选索引,即记录的值必须唯一主索引对每张库表都只有一个,库表的添加和移去:向库中添加表是指将自由表添加到库中,使自由表成为数据库表,本质上是建立了库表和库之间的双向链接;而从库中移去表,则是删除了库表和库之间的双向链接添加:“项目管理器”“添加”“数据库设计器”“工具栏”“添加”按钮在数据库打开并为当前库时,用add table 表名 来添加注意:一张表只能添加到一个库中去移去:“项目管理器”中选中表“移去”“库设计器”中选中表“工具栏”“移去”按钮在数据库打开并为当前库时,用remove table 表名来移去,有关库和库表的几点说明:尽可能使用数据库表,因它存在这一些约束条件可以使用!来指定数据库(在打开多个库时)移动和复制库文件时要考虑到相应库表的位置,以防出现前、后链的错误不要轻易的从库中移去表做过多次修改库结构、库表结构的操作后,要进行“数据库清理”,以防出现错误和数据的冗余在删除库后,应该有一个FREE tablename库表的命令若多次移动、删除了库或库表,应使用validate database recover命令重建双向联接,六、永久关系和参照完整性,表之间的关系:三种关系一对一关系:甲表的每一个记录在乙表中只能对应一个记录,而乙表中的每一个记录在甲表中也只能有一个记录与之对应一对多关系:设有甲乙两张表,如果甲表中的任意一个记录在乙表中可以有几个记录与之对应,而乙表中的每个记录在甲表中就有一个记录与之对应,则称甲乙两张表之间存在一对多关系,并称甲表为“父表”,乙表为“子表”多对多关系:若甲表的一个记录在乙表中可以对应多个记录,而乙表中的一个记录在甲表中也可以对应多个记录,则称这两张表具有多对多关系,数据库中,用户可以为存在一对多关系的两张表创建永久性关系,且基于永久性关系可以创建这两张表之间的数据完整性规则,纽带表:在使用中,多对多关系不能直接被使用;遇到多对多的情况,必须建立第三张表,把一个多对多关系分解为两个一对多关系;这第三张表就称为纽带表,纽带表中要存储两张父表的主关键字分析并确定表之间的关系:分析每张表,并确定它们之间的关系,必要时可以在表中添加字段或者创建一张新表来明确关系;要求会根据给出的条件判定表之间的关系,特别是要能够找出纽带表,表之间的永久性关系:永久性关系:是在数据库表之间的一种关系,这种关系不仅在运行时存在,而且一直保留;拥有永久性关系的表必须在数据库中;永久性关系是根据表的索引来建立的补充:临时关系:是在打开的表之间在“数据工作期”窗口中设置,还可以用set relation命令建立临时性关系,它不保存,运行结束时就结束。永久性关系的作用:在“查询/视图设计器”中,自动作为默认联接条件作为表单和报表的默认关系,在“数据环境设计器”中显示出来用来存储参照完整性信息,创建永久性关系的操作:确定两张具有一对多/一对一关系的表建立主表的主索引或候选索引若为一对多关系,则在子表中以主表的主关键字作为该表的外部关键字建立普通索引;若为一对一关系,则在子表中以与主表相同的关键字建立主索引或候选索引在“库设计器”中,将主表的主索引或候选索引标识拖放到子表相同的索引标识上,则完成了永久关系的设置在“库设计器”中,可以建立、删除或编辑库表之间的永久关系:删除单击连线,DEL 编辑双击连线,参照完整性:定义:用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则参照完整性的一般要求:三个规则子表中的每一个记录在对应的主表中必须有一个父记录在子表中插入记录时,其外部关键字必须是父表主关键字值中的一个在父表中删除记录时,与该记录相关的子表中的记录必须全部删除设置参照完整性:双击连线单击“参照完整性”按钮右击连线“编辑参照完整性”,参照完整性规则:P105 表3-7一般我们使用“更新”、“删除”级联,“插入”限制,但要会根据给出的条件对照规则表设置参照完整性。VFP完整性综述:主要使用前两类,系统自动实体完整性:字段级和记录级有效性验证参照完整性:表之间数据的一致性用户自定义完整性:用户通过编写代码来控制数据 的完整性数据库操作常用函数:P106107 掌握DBC()与DBUSED()DBGETPROP()DBSETPROP(),为JS表设置字段扩展属性GH:标题:工号;去掉其首尾的空格;输入时GH第一位为字母,其他为数字;做注释为“主关键字”XB:默认值为男;该字段只能为男或女,不能为其他值,若输入了其他值则提示错误信息“性别只能为男或女”为JS表设置表属性长表名为:教师基本档案表验证参加工作时,所有教师的年龄必须在18岁以上给JS表设置注释:教师基本信息表(2009年建)当GH字段不为空时才允许插入,当GH字段为空时才允许删除,F,D,