第四章vfp数据库的使用.ppt_第1页
第四章vfp数据库的使用.ppt_第2页
第四章vfp数据库的使用.ppt_第3页
第四章vfp数据库的使用.ppt_第4页
第四章vfp数据库的使用.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章,数据库的创建与使用,主要内容,VFP数据库数据库的设计过程建立数据库文件数据字典数据库表字段的扩展属性数据库表的表属性表之间的关系参照完整性使用多个数据库查看和设置数据库的属性,教学安排:理论:6学时上机:6学时重点:字段和表的扩展属性参照完整性难点:字段和记录的验证规则触发器参照完整性,4.1VFP数据库,4.1VFP数据库,教师表,课程表,学生表,任课表,成绩表,专业代码表,工号,课程代号,课程代号,学号,专业代号,4.1VFP数据库,数据库是许多相关的数据库表的集合数据库表之间有联系(关系)数据库包含表及表之间的联系数据库=数据库表+连接+本地视图+远程视图+存储过程,4.2数据库的设计过程,4.2.1确定建立数据库的目的明确数据库中应保存哪些信息充分了解用户的需求,明确数据库的目的4.2.2确定需要的表技巧性最强的一步尽量避免在一个表中存储重复的数据(冗余度最小)重复信息的后果增加数据量、工作量数据的不一致性删除异常确定各主题,分门别类的存入对应的表中,4.2.3确定表的字段每个字段直接和表的主题相关学生表(学号、姓名、性别、系名)成绩表(学号、课程代号、成绩)课程表(课程代号、课程名、课时数、别修课、学分、成绩)不要包含推导得到或需计算的数据字段(年龄,出生日期)收集所需的全部信息(不要太多)以最小的逻辑单位存储信息(原子)每个表都必须包含主关键字(学号、学号+课程代号、课程代号),用于建立表间的联系,把相关的数据组合起来。,4.2.4确定表之间的关系1.关系的种类(1)一对多关系(主表、子表)例:学生表(主表)与成绩表(子表)(2)多对多关系例:学生表与课程表(必须建立纽带表,分解为两个一对多:两张表的主关键字都放入纽带表成绩表中。)(3)一对一关系(不常用)2.分析并确定表之间关系(借助于一个公共的字段即主表的主关键字,子表的外部关键字)4.2.5改进设计,关系,1:m,N:m,n:1,1:1,4.3创建数据库,4.3.1数据库的创建数据库文件(.DBC)关联的数据库备注文件(.DCT)关联的索引文件(.DCX)1、界面方式(1)在项目管理器中新建数据库(2)通过“新建”对话框新建2、命令方式CREATEDATABASE|?如果给出数据库名,则创建数据库,并使该数据库处于打开状态,但不出现数据库设计器,否则自动打开新建对话框。,4.3创建数据库,4.3.2数据库的组成数据库表数据库与数据库表间的双向链接数据库表(相关表):从属于某一个数据库的表数据库表与数据库之间的相关性是通过表文件与库文件之间的双向链接(前链,后链)实现的前链(数据库中)=表文件路径+表文件名信息后链(表文件中)=库文件的路径+库文件名信息库与库表在物理上是相互独立的,从属关系只是一种逻辑上的关系,这种关系通过双向链接实现。,4.3创建数据库,(2)在数据库中添加、新建和移去表添加表:自由表数据库表(建立库与表之间的双向链接)新建数据库表移去(不同于删除)表:数据库表自由表(删除库与表之间的双向链接)操作方法:项目管理器(命令按钮)数据库设计器(数据库菜单、工具栏或快捷菜单)命令OPENDATABASEEXCLUSIVEModidatabaseFOREIGNKEYxhTAGxhREFERENCExs)如果CJ表已存在,使用ALTERTABLE命令指定与XS表之间的永久关系:ALTERTABLEcjADDFOREIGNKEYxhTAGxhREFERENCExs,确定两个具有一对多或一对一关系的表建立主表的主索引或侯选索引如果是一对多关系,则在子表中以主表的外关键字建立普通索引;如果是一对一关系,在子表中以与主表相同的关键字建立主索引或候选索引从主表的主索引或侯选索引到子表相关的索引建立永久关系,4.3创建数据库,(4)删除、编辑修改永久性关系单击关系连线,按DEL键删除关系ALTERTABLECJDROPFOREINGKEYTAGXHSAVE不加SAVE同时删除XH索引标识右键单击关系连线,单击移去关系右键单击关系连线,单击编辑关系,在对话框中进行编辑、修改,4.4数据字典,数据字典:是包含数据库中所有表信息的一张表元数据:存储在数据字典中的信息,是记录数据的数据VFP数据字典可创建和指定的内容:主关键字和侯选索引关键字表单的默认控件类永久性关系字段的输入掩码和显示格式长表名和表中的长字段名字段级和记录级有效性规则字段的标题和注释存储过程字段的默认值触发器。,4.5数据库表字段的扩展属性,基本属性(字段名、类型、宽度、小数位数)扩展属性:保存在数据库文件中,直到表从数据库中移去为止(移去后,字段的扩展属性、库表属性全部丢失,主索引变为候选索引)。4.5.1字段的显示属性1.字段的格式(P78表4-7JS/GH/FORMAT:A)2.输入掩码(JS/JBGZ:999.99具有一对一格式)1、2决定以什么形式显示,只能输入什么。字段的格式具有全局性,输入掩码具有一对一格式。3.字段变量的标题和注释(标题不加撇号,注释任意):使表具有更好的可读性。,4.5数据库表字段的扩展属性,4.默认值作用:添加记录时,字段所具有的最初的值(注意类型)系统自动的默认值(P80);当字段允许设置为.NULL.时,为亦可将之置为.NULL.可减少用户的输入工作量创建字段默认值表设计器“字段属性”CREATETABLE命令的DEFAULT子句CREATETABLECJ(XHC(6)DEFAULT“980000”,KCDHC(6),CJN(3,0)ALTERTABLE命令的SETDEFAULT子句ALTERTABLECJALTERCOLUMNXHSETDEFAULT“980000”,4.5数据库表字段的扩展属性,4.5.2字段验证规则:是一个和字段绑定的逻辑表达式作用:用来控制用户输入到字段中的信息,必须满足指定的规则要求(通常是控制信息的类型或字段的数据)。字段级的有效性规则将把所输入的值用所定义的规则表达式进行验证,如果输入的值不满足规则要求,则拒绝该值。字段级规则在字段值改变时发生作用。(演示cj=0andcj0andcj=0ANDCJb)(check前缺少逗号为字段的验证规则)altertablejssetcheckjs.glyear(date()-year(js.csrq)-15,4.6数据库表的表属性,4.6.3表的触发器基本概念:“表触发器”(Trigger)是在一个插入、更新或删除操作后运行的记录级事件代码。不同的事件可以对应不同的动作。Trigger是绑定在表上的表达式,当表中的任何记录被指定的操作命令修改时,触发器被激活。如果从数据库中移去一张表,则同时删除和该表相关联的触发器。触发器在进行了其它所有检查之后被激活。与字段级规则和记录级规则不同,触发器不对缓冲数据起作用。作用:用于控制数据的有效性和数据的一致性,4.6数据库表的表属性,三个触发器插入(INSERT)触发器:每次向表中插入或追加记录时触发该规则;更新(UPDATE)触发器:每次在表中修改记录时触发该规则;删除(DELETE)触发器:每次在表中删除记录时触发该规则。触发器必须返回.T.或.F.,当返回假时,触发器失败创建方法表设计器“表”选项卡命令CREATETRIGGERON表名FORINSERTAS逻辑表达式CREATETRIGGERON表名FORUPDATEAS逻辑表达式CREATETRIGGERON表名FORDELETEAS逻辑表达式例:在JS表中创建更新触发器,防止GL字段值大于50(不大于)CREATETRIGGERONJSFORUPDATEASGL=50,4.6数据库表的表属性,移去或删除触发器表设计器“表”选项卡命令DeleteTriggerOn表名ForDelete|Insert|Update如果从数据库中移去或删除表,则所有属于该表的触发器都从数据库中删除,4.6数据库表的表属性,4.6.4库表的约束机制及其激活时机,4.8相关表之间的参照完整性,4.8.1基本概念参照完整性(ReferentialIntegrity),是用来控制数据的一致性,尤其是控制数据库相关表之间的主关键字和外部关键字之间数据一致性的规则。三个规则:1.子表中的每一个记录在对应的父表中必须有一个父记录(XS(主表),CJ(子表)2.在父表中修改记录时,如果修改了主关键字的值,则子表中相关记录的外部关键字值必须同样修改。(否则也会违反规则1)3.在父表中删除记录时,与该记录相关的子表中的记录必须全部删除(否则也会违反规则1)孤立记录:在一对多关系中,当用户对主表进行添加、修改或删除记录时,或修改子表的记录时,子表中的某些记录在主表中没有对应的父记录,4.8相关表之间的参照完整性,4.8.2设置参照完整性注意事项:相关表之间的参照完整性规则是建立在永久关系基础上的参照完整性规则被设置在主表或子表的触发器中规则的代码被保存在数据库的存储过程中。设置(演示)右击永久关系的连线选“参照完整性”三种规则(表3-9)更新规则(父动)、删除规则(父动)、插入规则(子动)三种设置(表3-9)级联(插入规则无)、限制、忽略例:建立JS和RK间的永久性关系、设置参照完整性(更新/级联),4.9使用多个数据库,1.打开多个数据库(演示)OPENDATABASE2.设置当前数据库所有打开的数据库中,只有一个是当前数据库在打开数据库时,最后一个打开的数据库为当前数据库也可以把其它数据库设置为当前数据库设置方法:界面:工具栏SETDATABASETO几个函数测试当前数据库名DBC()(最多一个)测试数据库是否打开DBUSED()(可以多个),4.9使用多个数据库,3.使用数据库中的表使用USE命令可以打开数据库表和自由表如果打开的是数据库表,则系统会首先自动打开表所在的数据库(但不是当前数据库)USE打开非当前数据库中的表USE!4.关闭数据库项目管理器(单击数据库名,然后才能关闭)CLOSEDATABASES:关闭当前数据库和库中的表若没有当前数据库,则关闭所有工作区内所有打开的自由表、索引和格式文件,并选择工作区1为当前工作区,4.10查看和设置数据库的属性,4.10.1DBGETPROP()函数返回当前数据库的属性,或者返回当前数据库中字段、表或视图的属性例:?DBGETPROP(js,Table,Primarykey)?DBGETPROP(js.Gh,Field,Caption)?DBGETPROP(js.Gh,Field,Comment)?DBGETPROP(js.Gh,Field,RuleExpr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论