




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据库的建立与维护2.1数据表2.2数据库设计2.3创建数据库2.4创建数据表2.5表的操作2.6索引的创建和使用2.7建立和编辑表之间的关系习题2.1数据表数据表(Table)是构成数据库的基本元素之一,是数据库中组织并存储数据的单元。在VisualFoxPro中,数据库可由多个数据表组成,从用户实际使用的角度来看,关系模型的逻辑结构是一张二维表,它由行和列组成。关系模式对应一个二维表的表头。关系(Relationship)对应通常所说的二维表,如表2-1所示的学生情况表。其中每一列指明学生的一种属性,属性的名称如学号、姓名、性别等在每一列的顶端标出,每一行则给出某个学生的具体属性值。表2-1学生情况表学号姓名性别出生日期班级联系方式2001501冯小亮男02/07/1984机械1班23301232001307王金科男03/11/1984计算机2班23307872001203刘丽丽女08/27/1983国贸1班23308902001405王海男11/20/1984计算机1班23303482001421李晓华女12/15/1983计算机2班23300052001508赵文娟女09/23/1983机械1班23303972001209张强男05/18/1984国贸1班2330566数据表中的一行称为一条记录(Record)或一个元组,表示了数据表中一组相关联的信息。数据表中的一列称为一个字段(Field),字段反映了某个主题的信息,数据表字段的取值范围称为域(Domain),如性别的域是(男,女),所在班级的域是一个学校所有班级名的集合等。关系数据库要求关系中的每一个元组具有唯一性,即关系中没有相同的元组。因此,对于关系中的某一个属性或属性组,若它的值能唯一地标识出一个元组,则称该属性或属性组为候选键(Candidatekey)。在一个关系中可能有多个候选键,可选择其中的一个作为主键(Primarykey),也称为关键字。在一个关系中只能有一个主键。假设表2-1所示的学生情况表中没有同姓名学生,则学号和姓名都分别是该关系的候选键,可以取学号作为主键。数据库可包含多个数据表,每一个数据表对应一组相关主题信息。例如学生选课数据库系统可以包含学生情况数据表、课程情况数据表和学生选课数据表等,这几个表之间是相对独立又相互关联的。关系数据库的关系就体现为二维数据表的结构及表之间的联系。它允许用户不仅能从当前选定表中访问数据,而且可以通过当前选定表访问其他表中的数据。在某个关系R中可能有这样一组属性A,它不是关系R的主键,但它是另一个关系S的主键,则属性组A称为关系R的外键(Foreignkey)。2.2数据库设计1.应用示例背景信息教务处每一年都要组织学生进行选修课的选择,公布每门选修课的课程编号、名称、学分、学时、任课教师及课程内容等,学生根据自己的实际需要选修相应的课程。选修时填表录入自己的学号、选修课程号、选修学期等信息,教务处根据全院学生基本情况表清单(表2-1)建立每个学生的选修课程成绩档案,对学生的选修课成绩进行管理统计。为了方便管理,要求建立相应的计算机数据库管理系统。2.确定数据表经过细致地调查和分析,在明确了建立数据库的目的、内容和处理方式之后,就可以着手把信息分成独立的主题,每个主题对应数据库中的一个表。例如对于上述管理学生选课的系统来说,可以建立“学生情况表”、“课程情况表”和“学生选课表”三个表。
3.确定所需字段、字段类型和其他属性确定了数据库中所包含的表后,还应该根据表中所包含的信息项确定表的字段。例如,在学生情况表中,可以建立“学号”、“姓名”、“性别”等字段。字段的建立应该考虑既能描述主题信息,又能体现数据表之间的关系且尽量避免冗余。VisualFoxpro6.0是一个关系型的数据库管理系统,可以利用表之间的关系来迅速查找存储在多个表中的信息,并可将这些信息组合在一起。根据主关键字的定义,如果姓名存在重复值,则只有“学号”可以作为其主关键字,因为根据“姓名”或“性别”是无法唯一确定某一条记录的。在VisualFoxpro6.0中,正是利用主关键字的特征,从而快速地关联多个表中的数据,并将数据组合在了一起。在确定主关键字时应注意以下两点:(1)在主关键字中不允许有重复值或NULL值。因此,不能选择包含有重复值或NULL值的字段作为主关键字。(2)因为要用主关键字的值来查找记录,主关键字的长度直接影响数据库的操作速度。因此,在创建主关键字时,该字段值最好使用能满足存储要求的最小长度,所以它不能太长,以方便记忆和键入。
4.确定表之间关系对于学生选课的管理系统来说,假设已经设计了“学生情况表”、“课程情况表”和“学生选课表”三个表。目前这些表相对孤立,尽管这些表之间存在着种种关系,但是计算机不会自动把它们联系起来,需要人为地在设计数据库的时候设定表之间的关系。在VisualFoxPro6.0中,表之间有三种关系:一对一关系、一对多关系和多对多关系。在一对一关系中如果两个表有相同的主题,可在两个表中使用同样的主关键字字段,并以此建立一对一关系。如果两个表有不同的主题及不同的主关键字,可以选择其中任意一个表,把它的主关键字放到另一个表中作为外部关键字。一对多关系是关系型数据库中最普遍的关系,在一对多的关系中,一个表(表1)中的记录在另一个表(表2)中可以有多条记录与之对应,而表2中的一条记录最多只能与表1中的一条记录对应。例如“学生情况表”和“学生选课表”,由于一个学生可以选多门课程,所以在“学生情况表”中的一条记录可以对应“学生选课表”中的多条记录,但“学生选课表”中的一条记录只唯一对应“学生情况表”中的一条记录,这就形成了一对多关系。要建立这样的关系,就要把关系中“一方”的主关键字字段添加到“多方”的表中。在关系中,“一方”用主关键字或候选索引关键字,而“多方”使用普通索引关键字。在多对多关系中,表1的一个记录可以对应表2的多个记录,同样表2中的一个记录在表1中也可以对应多个记录,这样不利于数据信息的管理和维护,因此,需要改变数据库的设计,即创建第三个表,把多对多关系分解为两个一对多关系。这第三个表称作"纽带表",纽带表可能只包含这两个表的主关键字,也可能包含其他信息。
5.对所设计的表分析在设计数据库时,由于信息的复杂和情况的不同,使得设计出来的系统可能存在这样那样的问题,所以设计完成后,还应查找表中是否带有大量的并不属于这个主题的字段,是否遗忘了字段,多个表中是否包含了同样的字段,是否有需要的信息没包括进去,表中是否有些字段由于对很多记录不适用而始终保持空白,关系定义是否正确,等等。只有通过反复的修改,才能设计出一个完善的数据库系统。在设计完成后,就可以创建数据库和数据表了。2.3创建数据库本节将通过一个实例来介绍如何在VisualFoxPro6.0环境下创建一个数据库,在创建数据库之前,首先需要设置工作目录。VisualFoxPro6.0的系统文件所在的VFP目录,是其默认的工作目录,如果没有指定其他的目录,用户所建的文件就存放在这个目录中,这样容易和其他文件混淆,不利于管理,因此,在创建数据库之前,最好先设置一个工作目录。例如要将D盘根目录下的student目录设置为工作目录,方法如下:(1)启动VisualFoxPro6.0。(2)选择“工具”菜单的“选项”。(3)在“选项”对话框中选择“文件位置”标签,选中“默认目录”后点击“修改”按钮。(4)选中“使用默认目录”,在“定位默认目录”框中选中“D:/student”,点击“选中”按钮。(5)返回“选项”菜单后点击“确定”按钮。表2-2课程情况表课称号课程名学时学分是否必修任课教师课程简介028英语12011是刘惠
034高数1009是章孝斌
078物理908是吴文黎
102程序设计605是田峰计算机基础课055数据结构504否张浩浩
009体育807是陈静澜
087工程化学403否杨娟工程类基础课表2-3学生选课表学号课程号选修学期成绩2001501028176.5200130700918720012030782692001209028174200142105545620015011022832.3.1创建项目文件项目管理器是VisualFoxPro6.0应用程序开发过程中所有对象与数据的控制中心,在创建应用程序之前应建立一个项目文件,方法如下:(1)选择“文件”菜单中的“新建”子菜单。(2)在“文件”菜单中选择“项目”,按下“新建文件”选项进入“创建”对话框。(3)在“创建”对话框中直接显示的是默认工作目录中的内容,在“项目文件”处输入用户的项目名称,这里输入“学生管理”,按下“保存”按钮就建立了一个新的项目文件。在屏幕上会出现如图2-1所示的“项目管理器”窗口。图2-1“项目管理器”窗口2.3.2创建数据库在VisualFoxPro6.0中,如果单独使用表,用户可以存储和查看信息,但是,如果把若干表组织到一个数据库中,用户就可以充分利用VisualFoxPro6.0提供的强大功能存储一系列的表或视图,设置属性和数据验证规则,在表间建立关系,使相关联的表协同工作等。在后面的学习中我们会逐步熟悉它并体会到它的优越性。下面介绍以菜单的方式创建数据库的具体步骤:(1)在项目管理器中选择“数据”选项卡。(2)在“数据”选项卡中选择“数据库”,这时“文件”选项卡右边的“新建”和“添加”按钮由灰变黑。(3)按下“新建”按钮,出现如图2-2所示的对话框。(4)图2-2中有“数据库向导”和“新建数据库”两个选项,选择“新建数据库”进入数据库创建对话框,如图2-3所示。图2-2新建数据库对话框图2-3数据库创建对话框(5)对话框中需要确定数据库的类型、名称、存储位置等信息,其中数据库的类型就是用默认的.dbc类型,存储位置是用户创建的默认位置,不需要改变,要确定的主要是数据库的名称,我们在“数据库名”处输入“学生选课”。(6)单击“保存”按钮,进入如图2-4所示的数据库设计器画面,同时显示出数据库设计器工具栏。图2-4数据库设计器窗口图2-5工具栏按钮功能现在,一个空的数据库文件“学生选课”已经建立完成,单击“×”返回项目管理器,可以看到刚才建立的“学生选课”数据库已经出现在“项目管理器”窗口中,如图2-6所示。图2-6项目管理器中的新建数据库2.4创建数据表2.4.1设置数据字段1.字段名(Name)字段名的选取应既能体现字段含义,又尽量精练,如“学生情况表”中的“姓名”字段名。在命名字段时,只能使用字母、下划线和数字。
2.字段类型(Type)数据库中可存储大量丰富的数据,这些数据可以是一段文字、一组数据、一个字符串、一幅图像或其他信息。当把不同类型的数据存入表中时,需要告诉数据库系统字段的类型和属性,这样系统才能采用相应的数据处理方法对数据进行处理。在VisualFoxPro中可以将字段的数据类型设置为表2-4中的任意一种。表2-4常用的VisualFoxPro字段类型及宽度数据类型宽度说
明字符型<254字节字母、数字型文本货币型固定8字节货币类型数值,如价格等数值型最大20个字节,小数位数最大为19位整数或小数浮点型等价于数值型字段同“数值型”日期型固定8字节年,月,日日期时间型固定8字节年,月,日,时,分,秒双精度型固定8字节双精度数值整型固定4字节不带小数点的数值逻辑型固定1字节真或假备注型固定4字节不定长的字母数字文本通用型固定4字节OLE(对象链接与嵌入)(1)字符型(Character)。字符型字段通常用于存储文本数据,可以是汉字、字母、数字、空格、符号以及标点符号。如“学生情况表”中的“姓名”、“性别”和“班级”。也可以使用字符型的字段来存储数字,只要这个数字不直接进行数值运算,比如“学生情况表”中的“学号”字段。字符型的最大宽度为254字节。(2)货币型(Currency)。用来保存货币数值。货币型字段的取值范围是-922337203685477.5808~922337203685477.5807如果货币数值的小数位数超过4位,将四舍五入为4位。(3)数值型(Numeric)。用来存储数值数据,包含数字0~9,正负号和小数点。通常记录整数或者分数,它的取值范围为 .9999999999E+19~.9999999999E+20(4)浮点型(Float)。在功能上与Numeric型相同,其取值范围为 .9999999999E+19~.9999999999E+20(5)日期型(Date)。用于存储包含年月日的的日期数据,其取值范围为 01/01/100~12/31/9999(6)日期时间型(DateTime)。用于存储包含年月日时分秒的日期和时间数据,其取值范围为年月日:01/01/100~12/31/9999,时分秒:00:00:00am~11:59:59pm。(7)双精度型(Double)。用于存储数据精度要求较高,位数固定的数值数据,其取值范围为±4.94065645841247E-324~±8.9884656743115E+307(8)整型(Integer)。用于整数存储,其取值范围为-2147483647~2147483646(9)逻辑型(Logical)。逻辑型字段只有“真”(.T.)与“假”(.F.)的布尔值,用来表示是或否,真或假,成立与不成立等。(10)备注型(Memo)。用来存储长度不定的文本型数据。例如附录、备注、说明等内容,由于其文本数据长度无法确定且有可能大于254字节,所以无法使用字符型字段来存储,应采用备注型字段。备注型字段的实际内容存储在与本表名相同的一个文本数据块中,其扩展名为FPT,备注型字段的长度只受可用内存大小限制。(11)通用型(General)。通常用于存储OLE参考对象连接嵌入,字段宽度为固定的4个字节,其中存储了一个指针,指向该字段的内容。OLE通常包括电子表格、字处理文档、图像、多媒体对象等,这些对象可以用链接的方式存储在表中。在表中实际占用的存储空间为4个字节,其实际内容存储在与本表名相同、其扩展名为FPT的文件中。表中的4个字节存放指向该FPT文件的一个指针(地址信息),其存储的实际内容大小只受可用内存大小的限制。
3.字段宽度每一种数据类型都有其规定的宽度,各个数据类型的宽度见表2-4。对于宽度固定的数据类型,不需要设置字段宽度,经常需要设置的是字符型字段的宽度。对于类型为数值型和浮点型的字段,除了设定整个字段的宽度外,在定义时还应在“小数位数”栏中设置小数的位数。
4.是否允许为空如果允许某字段接受空值,即NULL值,则选中该项。注意,表的关键字段不允许为空值。下面以“学生选课”系统为例,将三个表的字段分别进行定义,其中“学生情况表”的字段类型定义如表2-5所示,“课程情况表”的字段类型定义如表2-6所示,“学生选课表”的字段类型定义如表2-7所示。表2-5“学生情况表”的字段类型定义字段名类型宽度(字节)小数位数索引是否允许为空学号字符10
yesF姓名字符10
F性别字符2
F出生日期日期
F班级字符12
F联系方式字符10
表2-6“课程情况表”的字段类型定义字段名类型宽度(字节)小数位数索引是否允许为空课程号字符8
yesF课程名字符20
F学时整型40
F学分整型40
F是否必修逻辑
F任课教师字符10
F课程简介字符100
表2-7“学生选课表”的字段类型定义字段名类型宽度(字节)小数位数索引是否允许为空学号字符10
yesF课程号字符8
F选修学期字符2
F成绩数值51
F2.4.2创建数据表在VisualFoxPro6.0中有两种表,一种是与某一数据库关联的数据表,另一种是没有与任何数据库关联的自由表,下面介绍用表设计器创建数据表的步骤。(1)在如图2-1所示的“项目管理器”窗口中,单击“数据”选项卡,选中要添加表的数据库并展开,这里选中“学生选课”数据库。(2)选中“表”文件对象,单击项目管理器右边的“新建”按钮,表示在数据库中添加新表,此时出现如图2-7所示的“新建表”对话框,在对话框中有两个按钮,其中一个是用向导来创建数据表,另一个表示用设计器来创建数据表。(3)单击“新建表”按钮,进入如图2-8所示的“创建”对话框,在此确定表的类型名称和保存位置,其中位置和类型是默认的,一般不需要改变,这里主要输入表的名称,我们输入“学生情况表”。图2-7“新建表”对话框图2-8“创建”对话框(4)单击“保存”进入如图2-9所示的“表设计器”窗口。图2-9“表设计器”窗口(5)在“表设计器”窗口中,单击“字段”选项卡,然后输入每个字段的字段名称;在“类型”列中,单击右边的箭头,然后从下拉列表中选出合适的类型;在“宽度”列中,设置以字符为单位的字段宽度,在设置时,既要考虑到本字段可以取的最大宽度,又不必使字段宽度太宽,否则将占据大量的空间,如果是数值型和浮点型数据,还可设定小数宽度;在“索引”列中可以为字段添加索引,即选择升序或降序的排序方式;如果字段可以为空,点击NULL处的按钮即可。(6)当所有字段被输入完后点击“确定”,弹出对话框询问“现在输入数据记录吗?”,如果现在要添加记录,则点击“是”,这里我们先不输入记录,点击“否”关闭对话框。这样,就创建了“学生情况表”。2.4.3创建自由表自由表是独立于数据库的表,它可以不属于某个数据库而单独存在。使用自由表可以处理一些简单的问题,但是对于复杂的数据系统,单一的表是无法表示清楚的,往往需要多张相互关联的表才能真正地描述完整的数据,这时,自由表的用处就不大了,不过,我们可以将需要的自由表添加到数据库中,自由表一旦添加到数据库中,就将获得数据库表的所有属性和操作方法。下面,就来介绍如何创建自由表以及如何将自由表添加到数据库中。
1.创建自由表自由表的创建同样可以使用表向导和表设计器,这里主要介绍表设计器的使用。表设计器是创建新表、设计表结构和修改表结构的工具。用表设计器创建新表的步骤如下:(1)在图1-7所示的VFP主窗口中选择“文件/新建”菜单,在弹出的“新建”对话框中选择“表”,然后选择“新建文件”按钮,在弹出的“创建”对话框中选择要存放的目录或文件夹,并输入表名,这里我们输入“课程情况表”,就会弹出如图2-10所示的“表设计器”对话框。(2)选择“字段”选项卡,在“字段名”列键入字段的名称;在“类型”列选择列表中的某一字段类型;在“宽度”列设置以字符为单位的列宽;如果“字段类型”是“数值型”或“浮点型”,则需设置“小数位数”列中的小数点位数;如果希望为字段添加索引,请在“索引”列中选择一种排序方式。(3)定义完字段后,按“确定”按钮,VFP会询问是否“现在输入数据?”,此时,可以选择立即开始输入记录或是在以后准备好所有记录后再打开表进行输入。图2-10“表设计器”对话框
2.将自由表添加到数据库中创建了自由表后,就可以将这个自由表加入到“学生选课管理”数据库中。(1)单击“文件”菜单的“打开”项,在出现的对话框中选择建好的“学生选课”数据库。(2)选中“学生选课”数据库下的“表”,单击右边的“添加”按钮,进入“打开”对话框,在列表文件中选择刚才建立的“课程情况表”。(3)单击“确定”按钮关闭对话框,在项目管理器中即可以看到如图2-11所示的“课程情况表”被添加到“学生选课”数据库中。当自由表添加到数据库中之后,其表设计器也变成了数据库表设计器,拥有了“标题”、“注释”、“默认值”等属性,这就是自由表与数据表的区别。当自由表添加到数据库中后,就可以拥有这些特性。图2-11“课程情况表”被添加到“学生选课”数据库中2.5表的操作2.5.1修改表的结构对于已经存在的表,可以利用“表设计器”来修改它的结构,如增加或删除字段,设置字段的数据类型和宽度,查看表的内容等。下面介绍修改表结构的方法:(1)在“项目管理器”中选中表后单击“修改”,出现“表设计器”对话框。(2)如果要插入字段,可在表设计器中选择“插入”按钮,在“字段名”、“字段类型”和“宽度”等位置分别输入新插入字段的信息。如果要修改字段,可用鼠标单击相应位置进行修改。如果要删除某个字段,可选中该字段后单击“删除”按钮。(3)修改完成后单击“确定”,系统会提问“是否永久性地更改表结构?”,回答“是”,即改变了表的结构。2.5.2设置字段验证规则对于表中某些有固定范围或特定值的字段,通过设置该字段的验证规则可以防止输入非法值。字段验证规则能够控制用户输入到字段中的信息的类型,以“学生情况表”中的“性别”字段为例,因为性别只有“男”或“女”两种情况,输入其他的任何值都是不允许的。这时,可以给“性别”字段设定规则。在图2-9所示的“表设计器”中选择“性别”字段为当前字段,在“规则”文本框中输入:性别=“男”or性别=“女”。以后性别字段只能输入这两个值,假设用户在“性别”字段误输入“南”,当回车准备离开该字段时,系统会给出错误警告:“违反了字段性别的有效性规则”,须按下确定后重新输入正确值。2.5.3打开表当数据表刚刚被建立后,会自动处于打开状态,除非使用“关闭”命令关闭它。关闭后,或者在下一次运行时,可以使用“文件”下拉菜单中的“打开”命令或者“常用”工具栏中的“打开”按钮打开它,对于已经处于打开状态的表,通过“显示”下拉菜单即可进行浏览。在操作数据表之前,首先要打开表,打开表的方式有两种,一是用“浏览”方式打开表,二是用“编辑”方式打开表,下面分别予以介绍。
1.用“浏览”方式打开表如果希望打开表后在每行显示一条记录,每列显示一个字段,就应该在“浏览”窗口中打开表。(1)在“项目管理器”中单击选中要打开的数据表。(2)单击“浏览“按钮。这时VisualFoxPro6.0将用“浏览”或者“编辑”方式打开表,当第一次打开一个新建的表时,默认进入的是“浏览”窗口,对于已经存在的表,打开的方式取决于上次关闭表时是“浏览”还是“编辑”方式。(3)如果打开的窗口不是“浏览”窗口,则单击“显示”菜单选中“浏览”方式。用浏览方式打开表的显示如图2-12所示。图2-12用浏览方式打开的“学生情况表”
2.用编辑方式打开表用编辑方式打开的表使用一条分割线将每条记录分隔开来,在显示每条记录时,字段是按照纵向排列的。(1)在“项目管理器”窗口中单击选中要打开的数据表。(2)单击“浏览“按钮。这时VisualFoxPro6.0将用“浏览”或者“编辑”方式打开表,对于第一次打开一个新建的表时,默认进入的是“浏览”窗口,对于已经存在的表,打开的方式取决于上次关闭表时是“浏览”还是“编辑”方式。(3)如果打开的窗口不是“编辑”窗口,则单击“显示”菜单选中“编辑”方式。用编辑方式打开表的显示如图2-13所示。图2-13用编辑方式打开的“学生情况表”由以上步骤可以看出,这两种打开方式只是在模式上有所不同,在“浏览”方式下,“浏览”窗口中的各“字段”名称与数据记录是分行显示的,而在“编辑”方式下则以列的形式显示。但是,无论在哪一种方式下,“浏览”窗口中都会提供水平与垂直两个滚动条,通过拖动它们可观察到那些在当前窗口中没有显示出来的部分记录。什么时候使用哪一种方式完全是个人习惯与爱好问题,在“浏览”方式下可以使用网格线,这将有利于清晰地观察数据记录,更适用于各字段长度差别不大的情况;而在“编辑”方式下,各行记录会集中显示在一起,也有利于观察。2.5.4在表中添加记录设计好数据表结构后,就可以在表中添加记录了。记录的输入可以在设计表的时候进行,也可以在表创建好后在“浏览”方式或“编辑”方式下进行。若想在表中快速加入新记录,可以将“浏览”窗口设置为“追加”方式,方法是选择“显示/追加方式”命令。在“追加”方式中,文件底部显示了一组空字段,可以在其中填入内容来建立新记录。每完成一条记录,在文件底端会出现该记录,此方式适于批量数据的录入。若只需添加一条记录,可以选择“表/追加新记录”菜单。在表中输入记录时,需要注意的一点是,通用型字段的输入方式和普通字段的输入方式在操作上有所不同。输入通用型字段的步骤如下:(1)遇到通用型字段录入时,双击该字段,进入如图2-14所示的输入通用型字段窗口。图2-14输入通用型字段(2)选择“编辑”菜单中的“插入对象”命令,弹出“插入对象”对话框,插入的对象可以是各种格式的图片文件。(3)如果文件不存在,则选中“新建”,并在“对象类型”中选择一种文件格式后单击“确定”。这时VisualFoxPro6.0就会启动相应的应用程序,用户可以在此使用这些应用程序创建对象。(4)如果文件已经存在,则选中“由文件创建”,系统将进入文件选择窗口,选中所需文件后,单击“确定”返回录入窗口。(5)在录入窗口中点击“确定”,这样就把图片输入到了数据表中。如图2-15所示。图2-15数据表中的通用型字段2.5.5设置记录验证规则除了对字段设置验证规则,还可以对记录设定验证规则。记录的验证规则可以控制输入到记录中的数据,通常用来比较同一记录中两个或多个字段的值,以确保它们遵守一定的规则。例如若“学生情况表”有“入学日期”这一字段,那么,“入学日期”的值肯定大于“出生日期”,在数据录入时有可能不小心把这两个日期搞颠倒而发生输入错误,这时,可以设置记录级的验证规则,避免这种错误的发生。与字段验证规则不同,记录验证规则是当记录的值被改变后,记录指针准备离开该记录时被激活的。记录验证规则的设定比较简单,在“学生情况表”的表设计器中,选择“表”选项卡,在“规则”框中,输入如下一行代码:入学日期>=出生日期。以后,在输入数据时,假设输入了错误的数据,当记录指针要移动到另一条记录时,系统就会给出警告。修改“出生日期”或“入学日期”,使之符合“记录验证规则”后,就可以将记录指针移到其他记录上了。2.5.6查看表的内容查看表的内容的最快方法是使用“浏览”窗口。“浏览”窗口中显示的内容是由一系列可以滚动的行和列组成的。打开“浏览”窗口后,可以定制“浏览”窗口及其功能,这些功能包括改变外观、筛选表和限制字段访问等。“浏览”窗口使用起来非常方便,使用滚动条、箭头键和“Tab”键可以来回移动表,显示表中不同的字段和记录;浏览器的外观还可以通过改变行高、改变列宽、移动列等操作来改变,其操作如下:(1)改变行高。在行标头处,将鼠标移至第一、二条记录之间的分隔线处,直到鼠标变成上下形状的箭头,这时可按住鼠标左键拖动改变整个浏览器的记录的行高。(2)改变列宽。在列标头处,将鼠标移至两个字段之间的分隔线处,直到鼠标变成左右形状的箭头,这时可按住鼠标左键拖动改变左边字段的列宽,注意这里改变的是字段的显示宽度,不影响字段结构的长度。(3)移动列。将鼠标指向要移动列的列头,这时鼠标变为向下的箭头,可以通过拖动列头将列移动到新的位置上,从而改变字段的显示顺序,但不影响字段在表结构中的顺序。(4)打开和关闭网格线。在VisualFoxPro6.0的“浏览”窗口中,显示的表是用网格线将每个记录和字段分隔开来的,网格线的实现与取消可以通过“显示”菜单的“网格线”命令来设置。此外,“浏览”窗口还有其他的一些功能,如拖动窗口底部的分割条可以将窗口分为用“编辑”和“浏览”两种不同方式显示的两部分;可以直接用鼠标单击删除标记区给记录打上删除标记;通过菜单还可以对窗口进行更多的控制,当有表被打开并在“浏览”窗口显示时,系统的“显示”菜单条自动增添了一些新的菜单项,并在菜单栏上出现“表”菜单条,这些菜单条集中了对表和“浏览”窗口的操作。2.5.7修改记录中的字段值表中字段值的修改是非常简单的,在“浏览”窗口或“编辑”窗口中,找到欲修改的字段值所在的单元格,直接把光标移到单元格中并编辑信息,或者选定整个单元格并键入新的信息。若要编辑“备注型”字段,可以在“浏览”窗口中双击该字段或按下“Ctrl+PgDn”键,这时会打开一个“编辑”窗口,可在其中修改、添加“备注型”字段的内容。在编辑任意字段后,如果光标退出该字段,则VisualFoxPro6.0会自动保存所作的更改。在光标退出之前,还可以单击工具栏上的“撤销”按钮来撤销本次操作。2.5.8删除和还原记录1.删除记录删除操作是表的常见操作之一,对于过时或者错误的记录可以将它删除,从而保证数据表的正确性和有效性。删除表中的记录有两种方法,一种是直接在表中删除,另外一种是利用删除对话框来删除。直接在表中删除比较简单,在“浏览”窗口中,每条记录前的小方块就是记录的删除标记,在“浏览”窗口中单击每个要删除记录左边的删除标记,当标记变黑后,表示系统不能对这些记录进行操作了,但是,被标记过的记录并未从磁盘上消失,用户还可以将其还原。要想真正删除记录,应选择“表/彻底删除”命令,这将删除所有标记过的记录,并关闭“浏览”窗口。这种方式用于简单的删除个别记录,对于多条记录的删除和根据条件来删除记录是很难实现的,这时就要采用“删除”对话框来删除记录。用“删除”对话框来删除记录的步骤如下:(1)在“浏览”窗口中打开要删除记录的表。(2)在“表”菜单中选择“删除记录”命令,出现如图2-16所示的“删除”对话框。(3)在“删除”对话框中,设置要删除的记录。在“作用范围”下拉列表中可以选择“All”、“Next”、“Record”和“Rest”,分别代表全部记录、下几条记录、第几条记录和其余记录几种删除范围。当选择“Next”、“Record”时,还需输入数字来明确作用范围。“Rest”是指当前光标所在位置后的记录,即当前记录后的其余记录。图2-16(4)在“For”框中输入逻辑表达式来定义删除的条件,可以直接在此输入表达式,还可以单击右边的“...”按钮来生成逻辑表达式,以确定要删除的记录应满足的条件。“表达式生成器”对话框如图2-17所示。图2-17“表达式生成器”对话框(5)利用生成器构造表达式。在函数框中可以选择使用相应的函数,图2-17使用了日期函数中的YEAR()和DATE()函数,构造了年龄大于21岁的学生的条件表达式。单击“确定”后,可以看到,满足删除条件的记录已经在浏览器中被打上了删除标记。无论是直接从表中删除记录还是设置删除条件删除记录,都只是给要删除的记录打上了删除标记;彻底删除表中的记录,要选择“表”菜单中的“彻底删除”,这时,会弹出一个菜单询问是否要从表中删除记录,回答“是”就会从磁盘上彻底删除记录。删除后将自动关闭“浏览”窗口,并重新构造剩余的记录。注意,这个操作一定要慎重,因为被彻底删除的记录是无法恢复的。
2.还原记录只是打上删除标记而没有彻底删除的记录是可以随时被还原的。还原时在“浏览”窗口中用鼠标点击删除标记即可,也可以用“表”菜单中的“恢复记录”来还原满足条件的记录。恢复记录操作与删除记录类似,在此不再赘述。2.6索引的创建和使用建立索引是加快表的查询速度的有效手段。当我们需要在一本书中查找某些信息时,往往首先通过目录找到所需信息的对应页码,然后再从该页码中找出所需要的信息,这种做法比直接翻阅书的内容速度要快。如果把数据表比作一本书,则表的索引就是这本书的目录,可以通过索引大大加快表的查询速度。在基本表上可以建立一个或多个索引,以提供多种存取路径,加快查找速度。可以利用索引对其中的数据进行排序来指定记录显示的先后顺序。排序的方法有升序和降序两种。用户可以对字符型、日期型、货币型、日期和时间型、双精度型、浮点型、数值型和整型的字段进行排序,但不能对逻辑型、通用型和备注型的字段进行排序。建立索引后将改变记录的顺序,以便加快检索数据的速度。用索引可以快速显示、查询或者打印记录,还可以选择记录,控制重复字段值的输入并支持表间的关系操作。为了使用户可以快速准确地查找信息,应该根据数据表中某些字段的值,为数据表建立一个索引文件,表的索引文件是一个记录号的列表,它指向待处理的记录,并确定了记录的处理顺序,该顺序称为逻辑顺序。索引并不改变表中所存储记录的物理顺序,它只改变了VFP读取每条记录的顺序。在建立索引的时候,可以按一个字段建立索引,也可以指定一个索引表达式,还可以为一个表建立多个索引,每一索引代表一种处理记录的顺序,以便在需要的时候使用不同的顺序来访问表。索引保存在一个复合结构的索引文件中,在使用表时,该文件被打开并更新,索引文件名与相关的表同名,并具有.CDX扩展名。索引文件中存储的是按照某字段或者表达式排列的一组记录号,每个记录号指向表中的一条记录,可以理解为按照某一字段或者表达式进行逻辑排列的一组指针,如图2-18就是在“学生情况表”中建立的几个索引。在按照索引重新排列数据表中显示的记录时,系统将按照指针的顺序来读取记录,但这些记录在数据表中的存储位置并未改变。由于建立索引的方法很简单,用户也许想为每个字段建立一个索引。但是,不常用的索引会降低程序的执行速度,所以应该只给那些经常使用的字段建立索引。在VisualFoxPro6.0中可以建立以下四种类型的索引:(1)主索引(也称为聚簇索引)。可确保字段中输入值的唯一性,并决定了记录的处理顺序,在主索引中字段值不能重复。在创建数据库时,除了纽带表以外,一般应根据主关键字给每一个表建立主索引(注意不能给自由表建立主索引)。图2-18“学生情况表”中建立的索引(2)候选索引。与主索引类似,也保证表中索引值的记录是唯一的。因为一个表只能建立一个主索引,所以当要建立多个不允许有重复值的索引时,可以将这些索引作为候选索引,同一个表允许建立多个候选索引。(3)普通索引。同样可以决定记录的顺序,但是允许表中有重复索引值的记录。在根据普通索引排序或查询记录时,系统将列出所有符合条件的记录。在一个表中可以加入多条普通索引。(4)唯一索引。允许表中索引值的记录不唯一,但只有第一个有相同索引关键字值的记录有效。这是为兼容旧版本而保留的一种形式。现在通过建立查询或视图也可实现同样的功能。下面以学生情况表为例来建立索引:(1)在项目管理器中打开“学生情况表”,点击右边的“修改”按钮,进入“表设计器”对话框。(2)在“表设计器”对话框中单击“索引”选项卡,出现如图2-18所示的对话框。(3)单击上下箭头可以决定排序的方式是升序还是降序,在索引名框中输入索引名“学号”,索引名只能用数字、字母和下划线,且长度不超过10个字符。(4)定义完索引名后,在“类型”列表中选择索引类型,这里选择“主索引”。“表达式”列的值可以是从数据表中选择的字段,也可以是由字段变量组成的表达式。输入表达式时可以使用表达式生成器,选择适当的函数来生成表达式,图2-18所示的索引名为“年龄”的索引,就是由YEAR(DATE())-YEAR(出生日期)作为索引表达式的。同样可以在“筛选”框处建立筛选表达式。(5)索引定义完后,单击“确定”按钮,将出现一个对话框询问是否永久地更改表结构,回答“是”,这时系统关闭“表设计器”窗口,并把设置的索引永久地保存在表结构中。表中的每一个索引代表一种排序方法,这些索引都保存在同一个索引文件中,这种索引文件称为复合结构索引文件。在“项目管理器”窗口中选中“学生情况表”,单击左侧的“+”号,就可以看到每一个索引,如图2-19所示。在表中如果建立了主索引或者候选索引,在录入数据记录时,系统会自动验证唯一性,如果出现重复,系统会提示用户。图2-19创建的索引出现在数据表中2.7建立和编辑表之间的关系2.7.1创建表间关系在“数据库设计器”中可以通过索引来方便地建立数据表之间的关系。在创建表关系之前,相互关联的表要建立一些公共字段和索引,这些字段一般为主关键字字段和外部关键字字段。其中主关键字用来标识主表中的某一特定记录,即主记录,外部关键字段用于标识相关表中的相关记录。应该搞清楚相关的表中哪个表包含主记录,哪个表包含相关记录,然后在相应的表中分别建立主索引和普通索引。在包含主记录的表中应根据主关键字建立主索引,在包含相关记录的表中根据外部关键字段建立一个普通索引。如果相关的表中没有外部关键字段,还要添加一个外部关键字段,外部关键字段通常可和主关键字段同名,其数据类型必须和主关键字字段匹配。下面以“学生选课”管理系统为例来建立一个关系。在“学生选课”管理系统数据库中,“学生情况表”与“学生选课表”具有一对多的关系,即一个学生可以选多门课。因此,“学生情况表”应包含主记录,“学生选课表”包含相关记录,两表通过“学号”保持关联。在建立表之间的永久关系之前,需要为表创建索引,按前面介绍的建立索引的方法,为“学生情况表”中的“学号”建立一个主索引,为“学生选课表”表中的“学号”建立一个普通索引。建好索引后,回到“数据库设计器”,在“学生情况表”的“学号”索引标识上按下左键不放,拖动到“学生选课表”的“学号”索引标识上,释放鼠标按钮,在数据库设计器中,可以看到两个表的索引标识之间有一条黑线相连接,表示出这两个表之间的永久关系,如果没有出现这条黑线,可以打开数据库的“属性”对话框,选择“关系”选项就可以了。这里所创建的关系的类型是由相关表中所用的索引决定的,如果相关表的索引为主索引或候选索引,则创建的关系为一对一索引;如果相关表中的索引为唯一索引或普通索引,则为一对多的关系。本例中创建的是如图2-20所示的一对多的关系。图2-20数据表间的一对多关系创建了表间的关系后,就可以用这些关系在多个数据表间进行查询、视图、表单和报表的设计。表关系使表之间既相互依赖,又相互制约,利用表关系还可以防止非法数据的输入和修改,可以避免发生重大的错误,保证系统的有效性和一致性。建立关系后也可以根据需要来进行编辑。2.7.2编辑表间关系编辑表之间的关系主要包括关系的删除、修改和编辑关系的参照完整性。编辑关系的步骤如下:(1)在“数据库设计器”中双击表关系连线,将出现如图2-21所示的“编辑关系”对话框。图2-21“编辑关系”对话框(2)在对话框中可以重新选择建立关系的主索引和普通索引,只要单击表和相关表组合框右边的箭头,从中重新选择主索引和普通索引即可,也可以点击“参照完整性”来设置关系属性。如果要删除关系,只需在“数据库设计器”中单击表的关系线,这时关系线变粗,按下键盘上的“Del”键即可。在关系型数据库中,由于表之间彼此相关,当修改和编辑任意数据表时,它们之间的关系就可能会发生变化。例如,如果在父表中删除了一条记录,则当子表中有相关的记录时,这些记录就成了孤立的记录;当在父表中修改了索引关键字的值,如在“学生情况表”中修改了“学号”值,那么还需要修改子表中相应记录的关键字值,否则就会产生错误,反过来也一样;在子表中增加记录时,如果所增加记录的关键字值是父表中没有的,则增加在子表中的记录也成了孤立的记录。这些情况的出现,都会破坏关系表的完整性。在VisualFoxpro6.0中可以通过建立参照完整性,让系统自动完成这些工作,防止这些问题的出现。所谓参照完整性,就是利用相关表之间的制约关系,互相参照,控制相关表数据的完整性。例如在“学生选课”管理系统中的“学生情况表”(学号,姓名,性别等)和“学生选课表”(学号,课程号,成绩等),在对“学生选课表”输入或编辑数据时,其“学号”字段出现的值必须是“学生情况表”中存在的学生学号,这时,我们可以利用参照完整性规则对相关的表作以下限制:(1)不能追
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业领域绿色能源技术应用
- 工业设计在产品创新中的作用与价值研究
- 工作中的情绪管理与压力缓解
- 工业设计与产品创新的策略研究
- 工作效率提升工具及方法研究
- 工作环境优化对员工满意度的影响
- 工程塑料在汽车领域的应用
- 工厂厂区绿化规划
- 工程机械动载荷下的结构强度分析
- 工程机械的维护与修理技术培训
- 苏科版初中物理知识点总结(含所有公式,绝对全~~~~)
- 《国际私法》教学全套课件
- 基建项目建设综合管理信息系统建设方案
- 一年级下册音乐教案 (简谱) (演唱)同坐小竹排(7) 湘艺版
- 砂石料加工厂劳务外包服务采购项目
- 列车网络控制技术-复习打印版
- 福建高考名著《红楼梦》填空题+答案
- 商标法期末复习
- 材料力学计算试题(库)完整
- 投资控股集团有限公司安全生产责任制暂行办法
- NGW型行星齿轮传动系统的优化设计
评论
0/150
提交评论