10.1 数据库
目的与要求: 通过本次课的学习,掌握VFP数据库的操作。 | ||
教学内容与时间安排、教学方法: 教学安排: 数据库的创建、使用,数据库中表的管理 40分钟 设置记录规则、数据库表的关联 40分钟 教学方法: CAI、图形、表格 | ||
教学重点及如何突出重点、难点及如何突破难点: 教学重点: 数据库的创建、使用,数据库中表的管理、设置记录规则、数据库表的关联 教学难点: 数据库中表的管理、设置记录规则、数据库表的关联 | ||
基本内容 |
教学 |
课堂设计 |
6.1 创建数据库 数据库是一种含有表、视图、连接和存储过程等Visual FoxPro对象的集成文件,是能容纳一个或多个表或视图的容器。在Visual FoxPro中,用户可以使用数据库来组织表和视图、建立表间关系、创建存储过程以及访问远程数据源。 1.数据库所包含的主要对象 Visual FoxPro数据库文件的扩展名为.DBC,建立数据库后,与之相关的还会自动建立一个扩展名为.dct的数据库备注文件和一个扩展名为.dcx的数据库索引文件。Visual FoxPro系统中数据库管理的主要对象有:表、远程视图、本地视图、存储过程和连接。以上这些对象,只有表是真实存在的文件,其他对象必须存储于数据库中。 (1)数据库表 我们在第四章介绍的表都是与数据库无关的,称为自由表。如果将表存放在数据库中,称为数据库表。数据库表增加了许多新功能,例如可以为数据库表设置字段属性、设置记录规则、建立永久关系以及建立参照完整性。 (2)视图 视图是一种虚表,利用视图可以把分散在相关表中的数据收集到一起,视图的使用方法将在下一章介绍。 (3)存储过程 使用存储过程主要为了创建用户自定义函数,这些函数的代码保存在数据库文件中,数据库表的字段级规则和记录级有效性规则可以引用这些函数。 (3)连接 使用连接对象可以通过ODBC(开放式数据库互连)技术与远程数据库相连,创建远程视图,使用后台数据库。
3.创建数据库 【格式】CREATE DATABASE [<数据库文件名>|?][EXCLUSIVE] 【功能】创建并打开一个数据库文件。 【说明】<数据库文件名>:指出要创建的数据库名称。 使用参数?或不使用任何参数会打开“创建”对话框,在其中可以指定数据库名称。 例如:Create database c:\vfpex\jxgl.dbc。 4.使用数据库 (1)打开数据库 【格式】OPEN DATABASE [<数据库名>|?][EXCLUSIVE|SHARED][NOUPDATE][VALIDATE] 【功能】打开数据库。 【说明】在打开数据库时,如果不使用数据库名,或者使用?,将启动“打开”对话框。 数据库的打开有独占方式(EXCLUSIVE)和共享方式(SHARED)两种方式。 使用NOUPDATE选项只能读取数据库中的信息,不能更新数据库。 使用VALIDATE子句表示打开数据库时将检查数据库中引用的对象是否合法,如检查数据库中的表和索引是否有效。 打开数据库后,如果使用USE命令打开表,Visual FoxPro将首先在当前数据库中打开指定表,如果找不到,再从数据库外查找。 (2)修改数据库 用户还可以通过数据库设计器修改数据库,具体方法是:从“文件”菜单中选择“打开”命令,然后在“打开”对话框中选择数据库,或者使用命令打开数据库设计器。打开数据库的命令格式如下。 【格式】MODIFY DATABASE [<数据库名>|?][NOWAIT] [NOEDIT] 【功能】修改数据库。 【说明】不使用任何选项,会启动数据库设计器对已经打开的数据库进行修改,若当前没有打开数据库,则启动“打开”对话框要求用户选择一个数据库。 NOWAIT选项只在程序中使用,其作用是在打开数据库设计器后继续执行该命令之后的语句。如果不使用该选项,在打开数据库后,应用程序会暂停,直到数据库关闭后应用程序才会继续执行。 使用NOEDIT选项只打开数据库设计器,而不能对数据库进行修改。 (3)关闭数据库 使用CLOSE DATABASES [ALL]命令可以关闭打开的数据库,其中ALL子句表示关闭所有数据库,否则只关闭当前数据库。
-----------本节课结束-----------
5.数据库中表的管理 数据词典用来保存数据库中各种对象的定义和设置信息,包括表属性、字段属性、记录有效性规则、表间关系以及参照完整性等。用户可以通过数据库设计器设置、显示和修改这些属性,而自由表一般没有这么多的属性,下面介绍数据库表的属性信息及其设置方法。 一、字段属性 图5-4 数据库表的字段属性 数据库表的字段除了具有自由表字段的基本属性外,还具有许多扩展属性。通过表设计器可以对这些属性进行设置,如图5-4所示。 1.基本属性设置 字段的基本属性包括字段名、类型、宽度、小数位数等,这些属性的设置方法已经在自由表中介绍过,在此不再赘述。 2.显示属性设置 字段的显示区用于设置字段显示格式和输入格式,包括3项内容:格式、输入掩码和标题。 ·格式:指定字段在浏览、表单或报表中的显示格式。例如:设置该字段显示为大写,则在格式文本框中输入:!。 ·输入掩码:用于限制或控制用户输入数据的格式。输入掩码可以是以下字符: X 允许输入字符 9 允许输入数字 # 允许输入数字,空格,+,- $ 显示set currency命令指出的货币号 * 在指定宽度内,值左显示星号 . 指出小数点位置 , 用逗号分隔小数点左的数字 例如,要指定电话号码的区号为4位,电话号码为8位,可以指定输入掩码为: (9999)99999999。 ·标题:用来为浏览窗口、表单或报表中的字段指定显示标题。 3.字段注释 用来对字段的用途、功能等进行说明,以便日后或其他人对数据库进行维护。 4.字段有效性 字段有效性用于为选中字段设置某些限制。各设置项的含义如下: ·规则:设置字段级有效性检查规则。用户可以直接输入表达式,也可以在表达式生成器中输入。字段级规则在字段值改变时发生作用。 ·信息:指定出错信息,当该字段输入的数据违反有效性规则时,将显示此处提供的出错信息。 ·默认值:指定字段的默认值。 【例5-2】在学生表中设置“学号”字段的属性。 设置输入掩码为“99999999”,标题为“学号”,字段有效性规则为:LEN(TRIM(sno))=8,出错信息为:“学号应为8位!”。 二、表属性 选择数据库设计器的“表”选项卡,可以设置表注释、记录验证规则和触发器。 1.表名 用户可以为数据库表指定最长不超过128个字符的长表名,但该名称不作为表文件名,它只是表的别名,可以在项目管理器、数据库设计器、表单设计器中显示。 2.记录有效性 ·规则:指定记录级有效性检查规则。该规则在用户插入记录或从记录离开时进行检验。 ·信息:用于指定出错提示信息,当记录不符合记录级有效性规则时显示。 3.触发器 触发器是在进行插入、更新或删除操作后执行的记录级事件代码。 触发器分为插入触发器、更新触发器和删除触发器,当数据库进行插入、更新、删除时,数据库会自动启动这些触发器,以保证数据的完整性。 例如,删除学生表中的某个学生记录,那么该学生所对应的成绩也应该从成绩表中删除,这样的操作可以在学生表的删除触发器中进行。 4.表注释 用于指定出现在项目管理器中的注释信息。 三、主索引 1.主索引 本书4.3节介绍了四种类型的索引,其中主索引不允许在指定关健字段或表达式中出现重复值,主要用于主表或被引用的表,用来在永久关系中建立参照完整性。主索引可以用作主关键字,仅适用于数据库表。每个数据库表,只能建立一个主索引。主索引可以在表设计器的“索引”选项卡中设置,如图5-6所示。使用命令方式也可以建立或删除主索引,命令格式如下: Alter table <表名> Add|drop primary key <索引关键字> [tag <索引标识>] 说明:命令中的ADD用于添加主索引,缺省tag子句表示索引关键字与字段名相同。Drop用于删除主索引。例如:以“学号”为关键字建立主索引可以使用以下命令。 Alter table student add primary key sno tag sno 四、建立永久关系 1.永久关系 永久关系是存在于数据库表之间的一种关系,这种关系可以作为数据库的一部分保存起来。要在数据库表之间建立永久关系,必须保证在父表中已经创建了索引。 在一对多关系中,主表必须使用主索引关键字(主索引标识)或侯选索引关键字(侯选标识),子表使用普通索引关键字(普通索引标识)。 在一对一关系中,两个表必须都用主索引关键字(主索引标识)或侯选索引(侯选索引标识)。 永久关系在查询和视图中,会自动作为联接条件,并且能够作为表单和报表的默认关系,显示在数据环境设计器中。此外,还允许通过永久关系建立参照完整性。 2.建立永久关系 建立永久关系可以通过以下步骤完成: ·确定两个具有一对多或一对一关系的表。 ·建立主表的主索引或侯选索引。 ·建立子表索引。如果关联是一对多关系,需要在子表中以主表关键字建立普通索引。如果是一对一关系,在子表中需要建立与主表相同的主索引或候选索引。 ·从主表的主索引或侯选索引到子表的相关索引建立永久关系。 【例5-4】jxgl数据库中的学生表(student.dbf)和学生成绩表(score.dbf)具有一对多关系。在数据库设计器中,建立两表的永久关系。 操作方法如下:将学生表的字段sno设置为主索引,将成绩表的字段sno设置为普通索引,将鼠标移到学生表的主索引sno上,拖动它到成绩表的索引关键字sno上,此时可以看到在主表与子表的索引sno间产生了一条连线,即表示两表建立了永久性关系,如图5-7所示。 选定关系线,然后单击鼠标右键,在快捷菜单中选择“删除关系”命令,系统会删除指定关系。如果选择“编辑关系”命令,系统会显示图5-8所示的“编辑关系”对话框,用户可以在此对话框中重新设置关联条件。 图5-8 “编辑关系”对话框 五、参照完整性 1.参照完整性 参照完整性用来控制数据一致性,尤其经常用来控制数据库相关表之间的主关键字与其外关键字之间的数据一致性。相关表的参照完整性规则是建立在永久关系基础上的,可以在主表或子表的触发器中设置,规则代码被保存在数据库的存储过程中。对于建立永久关系表,在一个表中插入、修改或删除记录时,相关表的记录也要发生变动。 2.设置参照完整性规则 打开数据库设计器,选择“数据库”菜单中的“编辑参照完整性”命令或者用鼠标指向永久关系连线单击右键,然后在快捷表单中选择“参照完整性”命令或者双击永久关系的连线,然后在“编辑关系”对话框中选择“参照完整性”按钮,会出现图5-9所示的“参 图5-9 参照完整性规则 照完整性生成器”对话框。 参照完整性成器具有更新、删除和插入三个规则: 更新规则用于指定修改父表中的关键字值时所触发的规则。选择“级联”表示更新父表关键字值时,同时会更新子表中相关记录的对应值;选择“限制”表示如果子表中有相关记录,则禁止更新父表关键字;选择“忽略”表示不管子表中的相关记录,都允许更新父表。 删除规则用于指定删除父表中的记录时所触发的规则。选择“级联”表示删除父表记录时,同时会删除子表中的相关记录;选择“限制”表示如果子表中有相关记录,在删除父表中的记录时会出现“触发器失败”的提示信息;选择“忽略”表示不管子表中的相关记录,都允许父表删除记录。 插入规则用于指定子表在插入新的记录或更新已存在的记录时所触发的规则。选择“限制”表示如果父表中没有相关的记录,在子表添加记录时产生“触发器失败”的提示信息;选择“忽略”表示允许子表插入记录,与父表无关。 【例5-5】为已经建立了永久关系的学生表和成绩表设置参照完整性。 打开jxgl数据库,打开参照完整性生成器。在对话框中分别设置更新规则、删除规则为“级联”,插入规则为“限制”,然后单击“确定”按钮,完成设置。这时我们打开学生表修改字段sno的值,然后查看成绩表,会发现成绩表中的相应记录也发生了变化;删除学生表中的某条记录,则成绩表中的相关记录也会被删除。
-----------本节课结束-----------
|
讲述
|
数据库介绍10分钟
创建数据库5分钟
使用数据库20分钟
数据库中表的管理15分钟
表属性10分钟
主索引10分钟
建立永久关系5分钟
参照完整性5分钟
|