news 2026/4/18 3:59:59

数据库和表(2)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据库和表(2)

第二部分:VFP的数据库

VFP与它的前面版本相区别的强大的新功能之一就是它使用了数据库。单独使用表,可以为用户存储和查看信息提供很多帮助,但是,如果把若干表组织到一个数据库中,用户就可以充分利用VFP提供的如下强大功能:存储一系列的表或视图;设置属性和数据验证规则;在表间建立关系;使相关联的表协同工作等第。在后面的学习中我们会逐步熟悉它并体会到它的优越性。

一.建立数据库文件

选择系统“文件/新建…”菜单项,打开“新建”对话框,在该对话框的文件类型选项按钮中选中“数据库”,单击“新建”命令按纽,系统将弹出一个“创建”对话框,在“创建”对话框中,输入数据库文件的路径和名称(如student),单击“创建”命令按纽关闭“创建”对话框,就出现了如图3.1所示的“数据库设计器”窗口,同时“数据库”菜单条也自动增加到系统菜单中,这时就能通过工具栏和“数据库”菜单对数据库进行操作了。

我们在上一讲中,创建了一个与数据库无关联的“学生情况”表,这样的表称为自由表。在VFP中,还可以将表存放于数据库中,这样的表称为数据库表。相比之下,数据库表增加了许多新功能,下面我们将上一讲创建的“学生情况”表加入到数据库中,并另建两个数据库表。

单击“数据库设计器”工具栏中的“添加表”按钮,弹出一个“打开”对话框,在对话框中选择上一讲中建好的“学生情况表”,单击“确定”命令按钮关闭对话框,则“学生情况表”被添加到Student数据库中。

此外,我们再新建两个数据库表,表的结构如表3.1和表3.2所示。接着,单击“数据库设计器”工具栏中的“新建表”命令按钮,在“新建表”对话框中选取“新表”命令按钮,在“创建”对话框中输入表名“学习成绩”,单击“保存”命令按钮,出现如图3.2所示的“表设计器”窗口,按照表3.1中列出的内容,输入“学习成绩”表的字段名、类型、宽度,输入完成后,单击“确定”命令按钮。按照同样的步骤,输入表3.2中“系代码”的内容。

表3.1 学习成绩表

字段名

字段含义

数据类型

宽度

Xh

学号

字符型

5

Km

科目

字符型

20

Cj

成绩

数值型

4.1

表3.2 代码表

字段名

字段含义

数据类型

宽度

Xm

系名

字符型

20

Dm

代码

字符型

2

二.使用数据库表的新功能

细心的读者也许已经发现图3.2所示的数据库表的表设计器比上一讲中自由表的表设计器又多了许多新属性,这些属性会作为数据库的一部分保存起来,并且一直为表所拥有,直到表从这个数据库中移去为止。下面我们就来体验一下数据库表的新属性。

1.为字段设置新的显示标题

在“数据库设计器”中选定学生情况表,然后选择工具栏中的“修改表”命令按钮。选定需要指定标题的字段(如“xm”),在“标题”框中,输入为字段选定的标题(如“姓名”)。请按照下表给所有字段加上标题。

字段

Xh

Xm

Xb

Csrq

Rxrq

Xdm

Zzmm

jl

标题

学号

姓名

性别

出生日期

入学日期

系代码

政治面貌

简历

输入完毕后,选择“确定”命令按钮,退出“表设计器”对话框。在“数据库设计器”中选定“学生情况”表,单击工具栏中“浏览表”命令按钮,可以发现“浏览”窗口中列头上的拼音简写已被替换为刚才输入的标题了。

2.为字段设置默认值

如果某个表的字段在大部分记录中都有相同的值,则可以为该字段预先设定一个默认值,以减少数据输入,加快数据的录入速度,当然用户也能够随时修改设定的默认值。

为字段指定的默认值可以是一个具体的值或是一个VFP表达式,无论是在表单或浏览窗口中输入数据,还是以编程方式输入数据,默认值都起作用。

在“学生情况表”中有一个“XB”字段,一般情况下,一个学校的学生不是男性居多就是女性居多,因此可以为“XB”字段设置一个默认值,在此设置为“男”。在表设计器中,选定“XB”字段,在“默认值”文本框中输入“男”。

使用VFP表达式还可以动态设置字段的默认值,例如在图书馆的图书管理数据库中,需要保存读者的借书、还书日期,这个日期也是当天的微机系统日期,所以如果为借书日期和还书日期设置默认值为DATE(),则就不需要图书管理员手工输入日期了。

3.设置字段验证规则

字段验证规则能够控制用户输入到字段中的信息类型,在学生情况表中,还以“XB”字段为例,因为性别只有“男”或“女”两种情况,输入其它的任何值都是非法的,也不能允许。通过设置该字段的验证规则可以防止输入非法值。

在表设计器中选择“XB”字段为当前字段,在“规则”文本框中输入:

XB = “男” or XB = “女”

为了在输入错误时给用户一个提示,在“信息”文本框中输入:

“性别字段只能为男或女两者之一。”

4.设置记录验证规则

使用记录验证规则可以控制输入到记录中的数据,通常是比较同一记录中两个或多个字段的值,以确保它们遵守一定的规则。与字段验证规则不同,记录验证规则是当记录的值被改变后,记录指针准备离开该记录时被激活的。

在“学生情况”表中,每个记录的出生日期肯定小于入学日期,在数据录入时,操作员有可能不小心把这两个日期搞颠倒而发生输入错误,为此可以设置记录级的验证规则,避免这种错误的发生。

在打开的“学生情况”表的表设计器中,选择“表”选项卡,在“规则”框中,输入如下一行代码:

rxrq >= csrq

再在“信息”框中输入说明信息“入学日期或出生日期输入错误。”

单击“确定”命令按钮保存2—4步的设置。在继续设置其它的属性之前,我们先来检验一下刚才的设置。在“数据库设计器”中,选定“学生情况”表,单击工具栏上的“浏览表”命令按钮,出现“学生情况”表的浏览窗口后,在系统菜单上选择“显示/追加方式”菜单项,窗口中显示一个空记录,等待输入记录数据,而“性别”字段已具有默认值“男”,将其改为“南”,则当回车准备离开该字段时,系统会给出警告,显示的内容正是我们输入的说明信息。单击“还原”命令按钮关闭警告框并恢复原值。接着输入“入学日期”和“出生日期”,使“出生日期”>“入学日期”,然后将记录指针移动到另一条记录,则系统又会给出警告,修改“出生日期”或“入学日期”,使之符合“记录验证规则”,就可以将记录指针移到其它记录上了。完成上述检验后关闭“浏览”窗口,回到“数据库设计器”,我们继续体验数据库的强大功能。

5.建立表之间的永久关系

通过链接不同表的索引,“数据库设计器”可以很方便地建立表之间的关系。因为这种在数据库中建立的关系被作为数据库的一部分而保存起来,所以称为永久关系。每当用户在“查询设计器”或“视图设计器”中使用表,或者在创建表单时所用的“数据环境设计器”中使用表时,这些永久关系将作为表之间的默认链接。

在Student数据库中,“学生情况”表与“学习成绩”表具有一对多的关系,即一个学生可以有多门功课的成绩。因此,学生情况表应包含主记录,学习成绩表包含相关记录,两表通过“学号”保持关联。

在建立表之间的永久关系之前,需要为表创建索引,按上一讲中建立索引的方法,为“学生情况”表中的“XH”建立一个主索引,为“学习成绩”表中的“XH”建立一个普通索引。建好索引后,回到“数据库设计器”,在主表(学生情况表)的“XH”索引标识上按下左键不放,拖动到子表(学习成绩表)的“XH”索引标识上,释放鼠标按钮,在数据库设计器中,我们可以看到两个表的索引标识之间有一条黑线相连接,表示出这两个表之间的永久关系,如图3.3所示。双击此线还能够打开“编辑关系”对话框来编辑关系。

6.建立参考完整性

在具有关联关系的父子表之间编辑修改记录时可能出现以下问题:

如果在父表中删除了一条记录,则当子表中有相关的记录时,这些记录就成了孤立的记录;

当在父表中修改了索引关键字的值(如在“学生情况”表中修改“XH”值),那么还需要修改子表中相应记录的关键字值,否则就会产生错误。反过来也一样;

在子表中增加记录时,如果所增加记录的关键字值是父表中没有的,则增加在子表中的记录也成了孤立的记录。

出现以上的任何一种情况,都会破坏关系表的完整性。在VFP中通过建立参考完整性,系统可以自动完成这些工作,防止这些问题的出现,我们所要做的只是用鼠标在对话框中做一些选择就行了。

在“数据库设计器”中的空白处,按下鼠标右键,打开快捷菜单,从快捷菜单选择“编辑参考完整性…”,打开如图3.4所示的“参考完整性生成器”对话框。

在“更新规则”选项卡和“删除规则”选项卡下,选择“级联”选项按钮。在“插入规则”选项卡下,选择“限制”选项按钮。(各选项按钮所表示的意义,在对话框中已有明确说明,这里就不再赘述了。)单击“确定”按钮后,系统回弹出一个对话框,说明要生成参考完整性的代码,单击“是”命令按钮,则参考完整性的代码被建立。

现在让我们来检验一下创建的参考完整性。先打开“学生情况”表的浏览窗口,添加一条记录,再打开“学习成绩”表的浏览窗口,在其中增加一或多条具有相同学号的记录,回到“学生情况”表浏览窗口。改变刚才增加的记录的学号,这时再激活“学习成绩”表的浏览窗口,可以看到刚才增加的记录的学号已字段被修改为与主表中一致的值了。在主表中删除记录和在子表中插入记录的参考完整性检验请聪明的读者自己来完成。

在本讲中,读者接触到了大量的数据库的概念和操作,相信您在多加操练后,一定能举一反三,熟练掌握这些内容。OK,See you late!

心铃

猫猫的心里话

加菲猫的VFP|狐友会社群接收投稿啦

加菲猫的VFP,用VFP不局限VFP,用VFP混合一切。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。

商业模式,销售技巧、需求规划、产品设计的知识通通可以发表。

暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。

如何帮助使用VFP的人?

用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。

我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。

加菲猫的vfp倡导用"VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发"

我已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。

2025年狐友会社群会员继续招募中

社群会员获取的权益有:

祺佑三层开发框架商业版(猫框),终身免费升级,终身技术支持。

开放的录播课程有:

微信小程序,微信公众号开发,H5 APP开发,Extjs BS开发,VFP面向对象进阶,VFP中间层开发。

源码类资源有:

支付组件源码,短信源码,权限组件源码,一些完整系统的源码。这个可以单独出售的,需要的可以联系我。

会员也可以实现群内资源对接,可以接分包,合作等各项商业或技术业务

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 8:03:50

抖音无水印下载神器:5分钟掌握3大高效方法终极指南

抖音无水印下载神器:5分钟掌握3大高效方法终极指南 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 想要永久收藏抖…

作者头像 李华
网站建设 2026/4/14 3:22:58

如何快速掌握FFXIV TexTools:打造个性化游戏体验的完整指南

如何快速掌握FFXIV TexTools:打造个性化游戏体验的完整指南 【免费下载链接】FFXIV_TexTools_UI 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_TexTools_UI FFXIV TexTools是一款专为《最终幻想14》玩家设计的强大模组管理工具,让您能够轻…

作者头像 李华
网站建设 2026/4/14 2:23:06

前端性能优化终极指南

优化前端代码的方法减少HTTP请求 合并CSS和JavaScript文件,使用CSS Sprites技术合并小图标,减少页面加载时的请求次数。启用浏览器缓存,利用Expires或Cache-Control头控制资源缓存时间。压缩资源文件 使用工具如UglifyJS压缩JavaScript&#…

作者头像 李华
网站建设 2026/4/17 17:12:59

突破传统:WebGL全景图查看器如何重塑数字内容体验

突破传统:WebGL全景图查看器如何重塑数字内容体验 【免费下载链接】360-image-viewer A standalone panorama viewer with WebGL 项目地址: https://gitcode.com/gh_mirrors/36/360-image-viewer 在追求极致用户体验的今天,平面图片已经无法满足用…

作者头像 李华