• 沒有找到結果。

Visual FoxPro数据库程序设计教程(第二版) - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "Visual FoxPro数据库程序设计教程(第二版) - 万水书苑-出版资源网"

Copied!
22
0
0

加載中.... (立即查看全文)

全文

(1)第 4 章 数据库的设计与操作 本章要点: 数据库的建立及基本操作、设置数据库表、永久关系及参照完整性。创建数据 库,在数据库中添加、移去表,建立表间关系等;设置数据库表的属性,即设置有 效性规则、触发器、参照完整性,设置字段的显示属性、字段的输入默认值等;操 作数据库,即打开、关闭数据库,维护数据库。 Visual FoxPro 作为一个关系数据库管理系统,提供了在多个表文件间定义关系的功能。 在 Visual FoxPro 中,可以通过使用数据库来完成关系功能,并取得其他好处。数据库是指存 储在外存上的有结构的数据集合。在 Visual FoxPro 数据库中,不存储数据,而是存储数据库 表的属性,以及组织、表关联和视图等,并可在其中创建存储过程。数据库可以单独使用, 也可以将它们合并成一个项目,用项目管理器进行管理。. 4.1. 数据库的基本操作. 数据库的基本操作包括创建数据库、打开数据库、向数据库中添加表、显示数据库中的 表、从数据库中移去表、引用多个数据库以及关闭数据库和删除数据库等。 4.1.1 数据库设计的一般步骤 在创建数据库之前,首先应对数据库进行设计。这里将介绍如何设计一个高效、合理的 数据库。 数据库设计过程的关键在于明确 Visual FoxPro 存储数据的方式与关联方式。在各种类型 的数据库管理系统中。为了能够更有效、更准确地为用户提供信息,往往需要将关于不同对 象的信息存放在不同的表中,Visual FoxPro 也是如此。例如,一个成绩管理数据库包含有以 下两个表:一个表用来存放学生基本情况;另一个表用来存放成绩情况。现在要查看某一个 课程及该课程成绩的学生情况,就需要在两个表之间建立一个联系。所以在设计数据库时, 首先要把信息分解成不同相关内容的组合,分别存放在不同的表中,然后再告诉 Visual FoxPro 这些表相互之间是如何进行关联的。 尽管可以使用一个表同时存储学生信息和成绩信息,但这样数据的冗余度太高。而且无 论对设计者还是对使用者来说,在数据库的创建和管理上都将非常麻烦。 下面是设计数据库的一般步骤如下: (1)分析数据需求。确定数据库要存储哪些信息。 (2)确定需要的表文件。一旦明确了数据库所要实现的功能,就可以将必需的信息分解 为不同的相关主题,在数据库中为每个主题建立一个表。 (3)确定需要的字段。这实际上就是确定在表中存储信息的内容,即确立各表的结构。.

(2) 96. Visual FoxPro 数据库程序设计教程(第二版). (4)确定各表之间的关系。仔细研究各表字段之间的关系,确定各表之间的数据应该如 何进行连接。 (5)改进整个设计。可以在各表中加入一些数据作为例子,然后对这些例子进行操作, 看是否能得到希望的结果。如果发现设计不完备,可以对设计做一些调整。 在数据库设计的初始阶段,不要担心发生错误或遗漏。这只是一个初步方案,可在以后对设 计方案进一步完善,Visual FoxPro 很容易在创建数据库时对原设计方案进行修改。一旦数据库中 已拥有大量的数据,并且被用到报表、表单或是应用程序之后,再要进行修改就非常困难了。所 以在确定数据库设计之前一定要做适当的测试、分析工作,排除其中的错误和不合理的设计。也 正因为如此,在连编数据库应用程序之前,应确保数据库设计方案已经考虑得比较周全。 4.1.2 创建新数据库 数据库设计完成后,就可以创建数据库了。Visual FoxPro 数据库文件的扩展名是.DBC。 数据库可以单独使用,也可以合并到一个项目中,用项目管理器进行管理。在进行数据库的 创建时,首先需要创建一个空的数据库,然后向该数据库中添加相应的数据,即创建数据库 表或添加已经存在的数据表,此外还要建立表与表之间的联系、设置参照完整性等。 1.命令方式 命令格式:CREATE DATABASE <数据库名> 功能:创建一个新的数据库。 说明:数据库创建之后便是当前数据库,其名字会显示在工具栏的下拉列表框中。 【例 4-1】用命令方式创建“成绩管理”数据库。 CREATE DATABASE 成绩管理. 2.菜单操作 通过菜单操作创建数据库的步骤如下: (1)单击主窗口菜单中的“文件”→“新建”命令,或单击常用工具栏上的“新建”按钮。 (2)在随后出现的“新建”对话框中选择“文件类型”中的“数据库”单选按钮,然后 单击右侧的“新建文件”按钮或“向导”按钮,如图 4-1 所示。 (3)单击“新建文件”按钮后,将会出现一个“创建”对话框。在该对话框中为新建的 数据库定义一个名字,如成绩管理,并指定其保存的文件夹,然后单击“保存”按钮即可。 在随后出现的数据库设计器中,可以对该数据库进行相关的操作,如图 4-2 所示。. 图 4-1. “新建”对话框. 图 4-2. “数据库设计器”窗口.

(3) 第 4 章 数据库的设计与操作. (4)如果在“新建”对话框中,单击“向导”按钮,将会出现“数据库向导”对话框, 然后按照向导对话框的提示进行操作即可。 4.1.3 在数据库中加入表和移去表 前面所创建的数据库,不管使用什么方式,都是没有任何数据的空数据库。在数据库创 建好之后,还需要向数据库中添加相应的数据,数据库中的数据是通过数据表体现出来的。 在 Visual FoxPro 中,存在两种数据表,即数据库表和自由表。数据库表是与数据库相关联的 表;自由表是与数据库无关联的表。相比之下,数据库表具有以下优点:长表名和表中的长 字段名;可为表中字段添加标题和注释;提供默认值、输入掩码和表中字段格式化;具有表 字段的默认控件类;能确保唯一性和设置的字段级规则以及记录级规则;支持参照完整性的 主关键字索引和表间关系以及插入、更新或删除事件的触发器。 数据库中的表既可以是与数据库无任何联系的自由表,也可以是在数据库中建立的表。 当将自由表添加到数据库中时,自由表就变成了数据库表。当将数据库表从数据库中移去时, 数据库表将变成自由表。在 Visual FoxPro 中,任何一个数据表都只能被一个数据库所拥有, 而不能同时添加到多个数据库中。 当数据库建立好之后,既可以通过新建表的方式新建数据表,也可以向数据库中添加已 建好的自由表。 1.在数据库中创建数据库表 使用 Visual FoxPro 的主菜单也可以在数据库中建立新表,方法是在“数据库设计器”窗 口中,选择菜单“数据库”→“新建表”命令,弹出“新建表”对话框,如图 4-3 所示,单 击“表向导”或“新建表”按钮,将会分别出现“表向导”或“表设计器”对话框,如图 4-4 所示。在“表向导”对话框中,按照对话框的提示进行操作即可。在“表设计器”对话框中, 会发现它与前面使用的创建自由表的表设计器有些不同,但相同部分的操作是一样的,有关 数据库表设计器的具体使用将在后面章节详细介绍。. 图 4-3. “新建表”对话框. 图 4-4. “表设计器”对话框. 2.向数据库中添加数据表 在 Visual FoxPro 中有以下两种向当前数据库添加表的方法。 (1)使用命令向数据库添加表 命令格式:ADD TABLE <数据表名> 功能:向已打开的数据库中添加指定名字的数据表。. 97.

(4) 98. Visual FoxPro 数据库程序设计教程(第二版). 【例 4-2】向“成绩管理”数据库中添加“xsdb”表。 OPEN DATABASE 成绩管理 ADD TABLE xsdb. 这里应注意不能把同一个表添加到多个数据库中,否则会产生有关不能加入这个表的错 误信息。 (2)使用“数据库设计器”向数据库添加表 在“数据库设计器”中,选择菜单“数据库”→“添加表”命令,进入“打开”窗口。 在“打开”窗口,选择要添加到数据库中的数据表,单击“确定”按钮,选定的数据表就被 添加到了打开的数据库中。 3.从数据库中移去表 数据库中的数据表只能属于某一个数据库,如果向当前数据库中添加一个已被添加到其 他数据库中的数据表,需要先从其他数据库中移去该数据表,然后再添加到当前数据库。移 去表的步骤如下: (1)打开项目管理器,并选择“数据”选 项卡。 (2)选择要移去的数据库表。 (3)单击“移去”按钮,弹出移去表提示 框,若从数据库中移去,单击“移去”按钮, 若从磁盘中删除,单击“删除”按钮,如图 4-5 图 4-5 从数据库中移去表 所示。 实际上使用命令方式也很方便。 【例 4-3】以下语句用于从“成绩管理”数据库中移去“xsdb”表。 OPEN DATABASE 成绩管理 REMOVE TABLE xsdb. 如果将一个数据库删除,则该库下属所有表皆变成自由表。例如: DELETE DATABASE 成绩管理. 则数据库“学生管理”下属的 xsdb 等表都变成了自由表。如果删去数据库“成绩管理” 时,欲将所有数据库下属的表一起删除,则可利用下述命令: DELETE DATABASE 成绩管理 DELETE TABLES. 当一个表从数据库中移去后,它变成一个自由表,也能够加入到其他数据库中。在执行 REMOVE TABLE 命令后,所有与该表相连的候选索引、约束、默认值说明、有效性规则也 被删除。 4.1.4 多表间关联 前面所有的操作都是有关一个表的,但在实际工作中常常需要同时使用几个表中的数据, 这就要用到多表间的关联。 表之间的关联是指建立关联的两个表的记录指针同步移动。这种关联仅在两个表之间建 立一种逻辑关系,即建立记录指针之间的联系,而不产生一个新的表文件,这种操作也称为 表间的逻辑连接。在多个表中,必须有一个表为关联表,此表常称为父表,而其他的表则称.

(5) 第 4 章 数据库的设计与操作. 为被关联表,常称为子表。在建立表间的临时关联后,会使得一个表(从表)的记录指针自 动随另一个表(主表)的记录指针移动。这样,便允许当在关系中“一”方(或主表)选择 一个记录时,会自动去访问表关系中“多”方(或从表)的相关记录。例如,可以关联 xsdb 表和 jsj 表,此后当把 xsdb 表的记录指针移到一个特定学生时,jsj 表的记录指针也移到有相 同的学号的记录上去。在两个表之间建立关联,必须以某一个字段为标准,该字段称为关键 字段。表文件的关联可分为一对一关联、一对多关联和多对多关联。 1.一对一关联的建立 命令格式:SET RELATION TO [<关键字表达式 1>/<数值表达式 1> INTO <工作区号>/< 别名>[,<关键字表达式 2>/<数值表达式 2> INTO <工作区号>/<别名>…][ADDITIVE]] 功能:当前工作区中的表文件与其他工作区中的表文件通过关键字建立关联 说明: (1)<关键字表达式>的值必须是相关联的两个表文件共同具有的字段,并且<别名>表 文件必须已经按关键字表达式建立了索引文件并处于打开状态。 (2)[ADDITIVE] 选项表示用本命令建立关联时仍然保留该工作区与其他工作区已经建 立的关联。如果要建立多个关联,则必须使用 ADDITIVE 选项。 (3)当两个表文件建立关联后,表文件的记录指针移到某一记录时,被关联的表文件的 记录指针也自动指向关键字值相同的记录上。如果被关联的表文件具有多个关键字值相同的 记录,则指针只指向关键字值相同的第一条记录,如果被关联的表文件中没有找到匹配的记 录指针指向文件尾,即函数 EOF()的值为.T.。 (4)如果命令中使用了<数值表达式>,则两个表文件按照记录号进行关联,这时<别名 >表文件可以不用建立相关的索引文件。 (5)当<别名>表文件中有多个关键字值相同的记录时,<别名>表文件的指针只能指向 关键值相同的第一条记录上,如果需要找到关键字值相同的多个记录,可以使用下面的命令: SET SKIP TO [<别名 1>[,<别名 2>]…]. (6)执行不带参数的 SET RELATION TO 命令,删除当前工作区中的所有关联。 (7)如果需要切断当前数据表与特定数据表之间的关联,可以使用命令: SET RELATION OFF INTO <工作区号>/<别名>. 【例 4-4】将表文件 xsdb.dbf 与 jsj.dbf 以学号为关键字段建立关联。 操作命令如下: SELECT 2 USE XSDB INDEX ON 学号 TAG 学号 SET ORDER TO TAG 学号 SELECT 1 USE JSJ SET RELATION TO 学号 INTO 2. && && && && && && &&. 选择工作区 2 打开表文件 XSDB.DBF 建立学号标识 指定学号为主索引 选择工作区 1 打开表文件 JSJ.DBF 建立一对一关联. 菜单方式: (1)选择菜单“窗口”→“数据工作期”命令,弹出“数据工作期”窗口。 (2)单击“打开”按钮,将需要用到的表在不同的工作区打开。 (3)在别名列表中选择主表,再单击“关系”按钮,再在别名列表中选择子表。. 99.

(6) 100. Visual FoxPro 数据库程序设计教程(第二版). (4)如果子表文件未指定主索引,系统会打开“设置索引顺序”对话框,以指定子表文 件的主索引,如图 4-6 所示。 (5)主索引建立后,系统弹出“表达式生成器” (Expression Builder)对话框,如图 4-7 所示,在“字段”列表框中选择关联关键字段,然后单击“确定”按钮,返回“数据工作期” 窗口。. 图 4-6. “设置索引顺序”对话框. 图 4-7. “表达式生成器”对话框. (6)此时在“数据工作期”窗口的右侧列表框中出现了子表,在父表和子表之间有一单 线相连,说明在两表之间已建立了一对一关联,如图 4-8 所示。 2.一对多关联的建立 命令格式:SET SKIP TO [<别名 1>[, <别名 2>] ...] 功能:将当前表文件与其他工作区中的表文件建 立一对多关联。 说明:先要用 SET RELATION 命令建立一对一 的关联,然后才能将一对一的关联进一步定义成一对 图 4-8 “数据工作期”窗口 多的关联。 当前工作区表记录指针移动时,别名库文件的记录指针指向第一个与关键字表达式值相 匹配的记录,若找不到相匹配的记录,则记录指针指向文件尾部,EOF()为.T.。 当父表中的一个记录与子库的多个记录匹配时,在父表中使用 SKIP 命令,并不使父表的 指针移动,而子表的指针却向前移动,指向下一个与父表相匹配的记录;重复使用 SKIP 命令, 直至在子表中没有与父表当前记录相匹配的记录后,父表的指针才真正向前移动。 无任何选择项的 SET SKIP TO 命令将取消一对多的关联(一对一的关联仍然存在)。 菜单方式: (1)选择菜单“窗口”→“数据工作期”命令,弹出“数据工作期”窗口。 (2)按前面所述的步骤,建立一对一关联。 (3)单击“一对多”按钮,系统弹出“创建一对多关系”对话框。 (4)在“创建一对多关系”对话框的“子表别名”列表框选择子表别名,单击“移动” 按钮,子表别名将出现在“选定别名”列表框中,单击“确定”按钮,完成子表别名的指定, 并返回到“数据工作期”窗口。.

(7) 第 4 章 数据库的设计与操作. 101. (5)如果子表文件未指定主索引,系统显示“指定索引顺序”对话框,以便用户指定主 索引。 (6)完成上述工作后,在“数据工作期”窗口的右侧列表框中出现了子表文件名,在父 表和子表之间有一双线相连,说明在两表之间已建立了一对多关联。 3.一个表对多个表关联的建立 命令格式:SET RELATION TO [<关联表达式 1> INTO <别名 1>| <工作区 1>[,<关联表达 式 2> INTO <别名 2>|<工作区 2> ...][ADDITIVE]] 功能:将主工作区中的表与多个其他工作区中的表建立关联。 说明:<关联表达式 1>表示与别名 1 表文件建立关联时的关键字段表达式,<关联表达式 2>表示与别名 2 表文件建立关联时的关键字段表达式,建立关联时,关键字段必须是两个表 文件共有字段,且别名表文件已按关键字段建立了索引文件,并已指定为主索引。 当父表文件的记录指针移动时,多个子表文件的记录指针根据各自的主索引文件指向关 键字段值与父表文件相同的记录。其他有关参数均同前述。 菜单方式:多次利用上节介绍的菜单步骤,只要每次选择的子表不同,就可以分别建立 一个表文件同多个表文件之间的关联。 4.取消表的关联 (1)在建立关联的命令中,如果不选用 ADDITIVE 选项,则在建立新关联的同时,取 消了当前表原来建立的关联。 (2)使用命令 SET RELATION TO,取消当前表与其他表之间的关联。 (3)使用命令 SET RELATION OFF INTO <别名>|<工作区号>,取消当前表与指定别名 表之间的关联。 (4)关闭表文件,关联都被取消,下次打开时,必须重新建立。 【例 4-5】设有一个单科计算机成绩表 jsj.dbf(学号(C,10),上机(N,3),笔试(N,3) ), 试用 jsj.dbf 中的成绩(上机+笔试)来修改 xsdb.dbf 中的相应成绩(计算机)。 相应的命令如下: USE xsdb in 1 USE jsj in 2 SELECT 2 INDEX ON 学号 TAG 学号 SELECT 1 USE xsdb SET RELATION TO 学号 INTO b REPL ALL 计算机 WITH b->上机+b->笔试. 4.1.5 表的连接 表之间的连接也称为表之间的物理连接,是指将两个表文件连接生成一个新的表文件。 新表文件中的字段是从不同的两个表中选取的。使用此命令时应注意此项操作前后共有 3 个 表文件。 命令格式:JOIN WITH <工作区号>/<别名> TO <新表文件名>[FIELDS <字段名表>] FOR <连接条件>.

(8) 102. Visual FoxPro 数据库程序设计教程(第二版). 功能:将不同工作区中的两个表文件进行连接生成一个新的表文件。 说明: 新的表文件生成后,扩展名仍为.DBF,并且处于关闭状态。 FIELDS <字段名表>:指定新表文件中所包含的字段,但该表中的字段必须是原来两个 表文件中所包含的内容。如果无此选项,新表文件中的字段将是原来两个表中的所有字段, 字段名相同的只保留一项。 FOR <连接条件>:指定两个表文件连接的条件,只有满足条件的记录才能实现连接。 连接过程:当前表文件自第一条记录开始,每条记录与被连接表的全部记录逐个比较, 连接条件为真时,就把这两条记录连接起来,作为一条记录存放到新表文件中;如果条件为 假则进行下一条记录的比较,然后当前表文件的记录指针下移一条记录。重复上述过程,直 到当前表文件全部记录处理完毕。连接过程中,如果当前表文件的某一条记录在被连接表中 找不到相匹配的记录,则不在新表文件中生成记录。 【例 4-6】把已存在的计算机成绩表和学生登记表通过学号连接起来,生成新的表文件。 学生成绩新表文件中包含以下字段:学号、姓名、院系、笔试及上机。 SELE A USE xsdb SELE B USE jsj JOIN WITH A FOR 学号=A.学号 TO xscj FIELDS 学号,A.姓名,A.院系,上机,笔试 USE xscj LIST. 4.2. 设置数据库. 在数据库表设计器中,除了可以定义字段名称、类型和宽度等操作外,还可以为各个字 段设置标题、定义字段的默认值、输入掩码、显示格式、长表名、长字段名、字段级规则、 记录级规则、触发器和表的注释等内容。 4.2.1 设置字段显示属性 字段的显示属性是用来指定输入和显示字段 的格式属性,包括格式、输入掩码和标题的属性。 打开“表设计器”对话框,如图 4-9 所示。 在“字段”选项卡的“显示”区域中,有下面 3 个相关的属性需要设置。 1.格式 一个格式实质上是一个输出掩码,它决定了字 图 4-9 字段有效性 段在表单、浏览窗口或报表中的显示风格,如表 4-1 所示,如确定字段显示时的大小写和样式。如果需要定义格式,则在“格式”文本框中输 入掩码。.

(9) 第 4 章 数据库的设计与操作 表 4-1 字段的部分格式 设置. 说明. A. 只允许字母字符(不允许空格或标点符号). D. 使用当前的 SET DATE 格式. E. 以英国日期格式编辑日期型数据. K. 当光标移动到文本框上时,选定整个文本框. L. 在文本框中显示前导零而不是空格。此设置只用于数值型数据,且只用于文本框. T. 禁止输入字段的首、尾空格. !. 将输入的小写字母转换为大写字母. 2.输入掩码 指定输入掩码就是定义字段中的值必须遵守的标点、空格和其他格式要求,以便使字段 中的值具有统一的风格,从而减少数据输入错误,提高输入效率,如表 4-2 所示。 表 4-2 字段的部分输入掩码 设置. 说明. X. 可输入任何值. 9. 可输入数字和正负符号. #. 可输入数字、空格和正负符号. *. 在值的左侧显示星号. .. 句点分隔符指定小数点的位置. ,. 逗号可以用来分隔小数点左边的整数部分. 3.标题 在浏览窗口、表单和报表中,可以利用“标题”字段属性值代替字段名的显示。若表结 构中字段名用的是英文,则可以在标题中输入汉字,这样显示该字段值时会比较直观。若没 有设置标题,则将表结构中的字段名作为字段的标题。 4.2.2 设置字段输入默认值 在“表设计器”中利用字段属性的设置,可以使系统在建立新记录后自动给字段赋默认 值。默认值是指字段在没有输入数据的情况下系统给定的值。例如,在输入成绩字段时可以 设定默认值为 60,即当增加了一条新记录时,如果对保存成绩的字段没有输入数值,则系统 自动在该字段中填入 60。 4.2.3 定义字段有效性规则 通过在定义表结构时输入字段的有效性规则,可以控制输入该字段的数据类型。字段级 规则将把所输入的值与所定义的规则表达式进行比较,如果输入的值不满足规则要求,则拒 绝该值。有效性规则只在数据库表中存在。如果从数据库中移去或删除一个表,则所有属于 该表的字段级规则都会从数据库中删除。 要为字段设置有效性规则和有效性说明,可以按照以下步骤进行:. 103.

(10) 104. Visual FoxPro 数据库程序设计教程(第二版). (1)在“数据库设计器”中右击,在出现的快捷菜单中选择“修改”命令,进入“表设 计器”对话框。 (2)在“字段”选项卡中选定要建立规则的字段。 (3)单击“规则”选项右边的按钮,进入“表达式生成器”界面。 (4)在“表达式生成器”中,建立有效性表达式。 (5)在“信息”文本框中输入由引号括起的错误信息,如图 4-10 所示,单击“确定” 按钮。 完成有效性规则的设定后,当追加记录不满足有效性规则时,有效性说明中指定的信息 就会显示出来。对“成绩管理”数据库中的“xsdb”表,如果设定有效性表达式为“学号 < =" 99499999" AND 学号 > ="97400000"”,并在“信息”选项中输入“输入学号必须在 97400000 至 99499999 之间”,则当向该表追加数据超出这一界限时,将显示如图 4-11 所示的 警告框。. 图 4-10. 设置有效性规则. 图 4-11 输入数据非法时显示有效性说明. 4.2.4 设置永久关系与参照完整性 1.创建永久关系 永久关系是存储在数据库中的数据表之间的关系,是相对于用命令 SET RELATION TO 建立的临时关系而言的。它们存储在数据库文件中,不需要每次使用时都重建。在“数据库 设计器”中显示为联系数据表索引的线。但是永久关系并不控制各表内记录指针间的关系, 因此在开发应用程序时,既要用到临时关系,又要创建永久关系。 在创建永久关系之前,首先需要在数据库表中建立必要的索引。对于数据库表而言,主 要有以下 4 种索引,即主索引、候选索引、普通索引与唯一索引。 在数据库表中,通过主关键字值可以建立主索引,主关键字值只能建立在数据库表中, 并且该字段值不能有重复的数据,不能为空值(NULL),数据库中的任何一个数据表只能建 立一个主索引;通过候选关键字值可以建立候选索引,并且该关键字值可以成为主关键字值, 和主关键字值一样,该字段值也不能为空值和有重复的数据,但它既可设置在自由表中,也 可设置在数据库表中,而且每一个表中可针对需求设置多个候选索引;普通索引与前面介绍 的自由表中的索引相同,对关键字没有要求;通过唯一性键值可以建立唯一索引,唯一性键 值不限制数据表中该字段值的唯一性,但在建立的索引文件中,只保留同值记录的第一条。 数据库表中的主索引、候选索引、普通索引和唯一索引,既可以使用命令方式,也可以 通过“表设计器”进行创建。主索引可以使用 CREATE TABLE 和 ALTER TABLE 命令来创建; 候选索引、普通索引和唯一索引可以使用前面介绍的 INDEX 命令进行创建,这里主要给出如 何使用表设计器进行创建。 在如图 4-4 所示的数据库表设计器中,单击“索引”选项卡,然后在“索引名”中为创.

(11) 第 4 章 数据库的设计与操作. 建的索引进行命名;在“类型”中选择创建的索引类型;在“表达式”中给出索引的关键字 表达式,作好相应的设置之后,单击“确定”按钮。 索引创建好之后,就可以定义数据表之间的永久关系了。创建数据表间的永久关系既可 通过命令实现,也可在“数据库设计器”中进行。 (1)命令方式。 命令格式一:ALTER TABLE <数据表名 1> ADD PRIMARY KEY <表达式> TAG <标识名> 功能:建立数据表 1 的主索引。 命令格式二:ALTER TABLE <数据表名 2> ADD FOREIGN KEY <表达式> TAG <标识名 > REFERENCES <数据表名 1> 功能:建立数据表之间的永久关系。 说明: ① <数据表名 1>:指定要创建永久关系的数据表。建立 PRIMARY KEY 主索引。 ② FOREIGN KEY <表达式> TAG <标识名>:表示创建一个非主关键字索引,<表达式> 指定非主关键字的索引表达式,TAG <标识名>指定非主关键索引的标识名。 ③ REFERENCES <数据表名 1>:表明数据表名 2 指定的表和<数据表名 1>指定的表在 主关键字上建立永久关系。 【例 4-7】对“成绩管理”数据库中的两个数据表“xsdb”和“jsj”建立永久关系。 OPEN DATABASE 成绩管理 USE xsdb ALTER TABLE xsdb ADD PRIMARY KEY 学号 TAG 学号 ALTER TABLE jsj ADD FOREIGN KEY 学号 TAG 学号 REFERENCES xsdb MODIFY DATABASE. 结果如图 4-12 所示,在两个数据表之间有一条线连接,表示已经建立了永久关系。. 图 4-12. 创建数据表之间的永久关系. 在一对多关系中,“一”方必须用主关键字建立主索引,“多”方则可使用普通索引关键 字建立普通索引。 (2)通过“数据库设计器”建立永久关系。 在“数据库设计器”中,选择想要关联的索引名,然后把它拖到相关数据表的索引名上 即可。 如果想删除数据表之间的永久关系,可以在“数据库设计器”中单击两数据表之间的关. 105.

(12) 106. Visual FoxPro 数据库程序设计教程(第二版). 系线。如果关系线变粗,表明已经选择了该关系,然后按“Delete”键,就可以实现删除操作。 也可以使用 ALTER TABLE 命令删除数据表之间的永久关系。 命令格式:ALTER TABLE <数据表名> DROP FOREIGN KEY TAG <标识名>[SAVE] 功能:删除数据表之间建立的永久关系,并保留所建的索引标识。 说明:如果省略[SAVE]选项,该索引标识从结构化索引中删除;如果不省略,在结构化 索引中保留该标识。 2.设置参照完整性 (1)参照完整性的概念。 参照完整性(Referential Integrity,RI)是指建立一组规则,当用户插入、更新或删除记 录时保护数据表之间已定义的关系。 参照完整性应满足以下 3 个规则: 1)在关联的数据表间,子表中的每一个记录在对应的父表中都必须有一个父记录。 2)对子表作插入记录操作时,必须确保父表中存在一个父记录。 3)对父表作删除记录操作时,其对应的子表中必须没有子记录存在。 (2)设计参照完整性。 在 Visual FoxPro 中,可使用“参照完整性设计器”来设置规则,控制如何在关系表中插 入、更新或删除记录。若要打开“参照完整性设计器”,首先打开“数据库设计器”,从“数 据库”菜单里选择“编辑参照完整性”命令。 【例 4-8】将“xsdb”和“jsj”表设置成级联性更新。 (1)打开“成绩管理”数据库,进入“数据库设计器”窗口。 (2)首先单击关系线,此时关系线将变成粗黑线,然后选择菜单“数据库”→“编辑关 系”命令,或者在关系线上右击,并在弹出的快捷菜单中选择“编辑关系”命令,或者双击 关系线,打开“编辑关系”对话框,如图 4-13 所示。 (3)单击“参照完整性”按钮,打开“参照完整性生成器”对话框,如图 4-14 所示。. 图 4-13. “编辑关系”对话框. 图 4-14. “参照完整性生成器”对话框. (4)选择“更新规则”选项卡,并在关系列表框中选择“学生—成绩”关系,然后在“更 新”列选择“级联”项。 (5)单击“确定”按钮,然后单击“是”按钮保存所做的修改,生成参照完整性代码, 并退出“参照完整性生成器”对话框。 注意:在建立参照完整性之前必须首先清理数据库,所谓清理数据库是物理删除数据库.

(13) 第 4 章 数据库的设计与操作. 107. 各个表中所有带有删除标记的记录。只要数据库设计器为当前窗口,主菜单栏上就会出现“数 据库”菜单,这时可以选择菜单“数据库”→“清理数据库”命令,该操作与命令 PACK DATABASE 功能相同。 在“参照完整性生成器”对话框中,用户可以对更新、删除或插入父表与子表记录时所 遵循的规则进行以下设置: (1)更新规则。 级联:当修改父表中的某一记录关键字值时,子表中相应的记录将会改变。 限制:当修改父表中的某一记录关键字值时,若子表中有相应的记录,则禁止该操作。 忽略:两表更新操作将互不影响。 (2)删除规则。 级联:当删除父表中的某一记录时,将删除子表中相应的记录。 限制:当删除父表中某一记录时,若子表中有相应的记录,则禁止该操作。 忽略:两表删除操作将互不影响。 (3)插入规则。 限制:当在子表中插入某一记录时,若父表中没有相应的记录,则禁止该操作。 忽略:两表插入操作将互不影响。 注意:当更改数据库的设计之后(如修改了数据库表或改变了在永久关系中使用的索引), 那么应该在使用数据库之前,重新运行“参照完整性生成器”,这样将修改存储过程代码和那 些实施参照完整性的表触发器,从而反映新设计的变化情况。如果不重新运行“参照完整性 生成器”,可能会得到意想不到的结果。因为存储过程和触发器并没有重写,因而不能反映设 计上的更改。. 4.3. 数据库的操作. 4.3.1 打开/关闭数据库 1.打开数据库 如果想打开一个已经存在的数据库,则可以使用 OPEN 命令,也可以通过菜单进行操作。 (1)命令方式。 命令格式:OPEN DATABASE <数据库名> 功能:打开指定的数据库文件。 说明:可以打开多个数据库,所有打开的数据库名字都列在主工具栏的下拉列表中,可 通过下拉列表选择其中的一个数据库为当前数据库。也可以使用 SET 命令将某一打开的数据 库指定为当前数据库。 SET DATABASE TO <数据库名>. 【例 4-9】用命令方式打开“成绩管理”数据库。 OPEN DATABASE 成绩管理. (2)菜单操作。 选择菜单“文件”→“打开”命令,或单击常用工具栏中的“打开”按钮,将会出现一.

(14) 108. Visual FoxPro 数据库程序设计教程(第二版). 个“打开”对话框。在该对话框中,选定文件类型下拉列表框中的“数据库(*.DBC)”选项, 然后选定需要打开的数据库文件名,单击“确定”按钮,就可以将选定的数据库打开。 在“打开”对话框中,还有以下两个复选项。 1)以只读方式打开:如果选定该复选框,表示不能对打开的数据库进行修改。 2)独占:如果选定该复选框,表示不允许其他用户在同一时刻使用该数据库。 2.关闭数据库 如果想关闭一个已经打开的数据库,可以使用 CLOSE 命令。 命令格式:CLOSE DATABASE 或 CLOSE ALL 功能:关闭所有打开的数据库和表。 说明:CLOSE ALL 还可以关闭某些窗口,如表单设计器、标签设计器、查询设计器和报 表设计器等。也可使用“文件”菜单、项目管理器来关闭已经打开的数据库文件。 3.修改数据库 如果需要对数据库中的数据进行修改,可以在数据库设计器中进行。使用以下几种方式 可以打开数据库设计器。 (1)命令方式。 命令格式:MODIFY DATABASE [<数据库名>] 说明:<数据库名>指定要在“数据库设计器”中进行修改的数据库的名字,如果没有该 选项,表示将当前数据库中的数据在“数据库设计器”中显示出来。 (2)菜单操作。 选择菜单“文件”→“打开”命令或单击常用工具栏中的“打开”按钮,在随后出现的 “打开”对话框中,选择需要打开的数据库文件名,则在打开数据库的同时,将会显示数据 库设计器。 4.3.2 在项目中添加/移去数据库 数据库创建后,若还不是项目的一部分,可以把它加入到项目中;若该数据库已是项目 的一部分,可将它从项目中移走;若不再需要此数据库,也可将它从磁盘上删除。 1.添加数据库 当使用命令创建数据库时,即使“项目管理器”是打开的,该数据库也不会自动成为项 目的一部分。可以把数据库添加到一个项目中,这样能通过交互式用户界面方便地组织、查 看和操作数据库对象,同时还能简化连编应用程序的过程。要把数据库添加到项目中,只能 通过“项目管理器”来实现,具体的操作步骤如下: (1)在“项目管理器”对话框中选择要添加项目的类型,此处添加数据库,可单击“数 据”选项前的加号,在出现的列表中再选择“数据库”选项,如图 4-15 所示。 (2)单击“添加”按钮。 (3)在“打开”对话框中,选择要添加的数据库文件名,然后单击“确定”按钮即可。 2.移去或删除数据库 在项目中移去数据库的具体操作步骤如下: (1)在“项目管理器”对话框中选定要移去的内容,如图 4-15 所示。 (2)单击“移去”按钮,打开如图 4-16 所示的对话框,询问是移去还是删除:单击“移.

(15) 第 4 章 数据库的设计与操作. 109. 去”按钮,将数据库从项目中移去;如果要从计算机中删除该数据库,则单击“删除”按钮。. 图 4-15. “项目管理器”对话框. 图 4-16. 询问是移去还是删除. 4.3.3 建立表间关系 在一个数据库中,通常包含若干张表,如“成绩管理.DBC”数据库就包含了 3 张表:学 生登记表“XSDB.DBF”、计算机成绩表“JSJ.DBF”和英语成绩表“YY.DBF”。它们之间并 非彼此独立存在,而是相互联系的。在使用多个表时,经常希望在移动一个表中记录指针的 同时,其他相关表中的记录指针能自动调整到相应的位置上。关联是表之间的一种链接,它 使用户不仅能从当前选定表中访问数据,而且可以访问其他表中数据。 通常,表与表之间存在以下 3 种关系。 一对一关系:一个表的一条记录对应另一个表的一条记录。 一对多关系:一个表的一条记录对应另一个表的多条记录。 多对多关系:一个表的多条记录对应另一个表的多条记录。 一般最常用的是前两种关系。 为了使表间能顺序建立关联关系,需要在共同字段或者关联表达式上对表进行索引。在 数据库设计器中,通过连接不同的索引,可创建表与表之间的关系,这种关系将随着数据库 的存在而一直存在,因此又称为永久关系。当在查询设计器、视图设计器或数据环境设计器 中使用表时,这些永久关系将作为表间的默认链接出现。 创建表间关系的步骤如下: (1)打开要创建表间关系的数据库,进入数据库设计器。 (2)为各表中需建立关系的字段建立索引。 如果两张表之间是一对一或一对多关系,则对父表(主表)的相应字段所建索引类型必 须是主索引或候选索引,而对子表(从表)的相应字段所建索引类型可以是主索引、候选索 引、唯一索引或普通索引。若是主索引或候选索引,则表间关系是一对一的,否则,该关系 为一对多。 (3)创建表间关系。 在数据库设计器中,用鼠标左键按住一个表的索引,将其拖放到需要建立关系的另一个 表的相应索引上即可。建立关系后的两表之间会出现一条连线,其中不带分叉的一端表示关 系中的“一”方,而带有 3 个分叉的一端表示关系中的“多”方。.

(16) 110. Visual FoxPro 数据库程序设计教程(第二版). 4.3.4 使用多个数据库 在 Visual FoxPro 中,有两种同时使用多个数据库的方法。 1.不打开数据库而引用其中的表 要使用一个非当前数据库中的表,可使用 USE 命令和“!”。 命令格式:USE <非当前库文件名>!<表文件名> 其中<非当前库文件名>为将要打开的<表文件名>所在的数据库名。 若现有一名为“教学管理.DBC”的数据库,其中有一个“课程.DBF”表文件,若当前数 据库为“成绩管理.DBC”,要浏览“课程.DBF”表,可使用以下命令: OPEN DATABASE 成绩管理 USE 教学管理!课程 BROWSE. &&使“成绩管理.DBC”成为当前数据库 &&打开其他数据库中的表. 2.同时打开多个数据库,设置其中一个为当前数据库并在其中选择表 (1)打开多个数据库。用户可视需要使用 OPEN DATABASE 命令打开多个数据库。 (2)设置当前数据库。在 Visual FoxPro 中尽管可以同时打开多个数据库,但是只能有 一个是当前数据库。所有对打开的数据库进行操作的命令和函数,如 ADD TABLE 命令和 DBC()函数(见附录)等,都是针对当前数据库而言的。 设置当前数据库: 命令格式:SET DATABASE TO [<库文件名>] 说明:如果省略库文件名,则没有设置当前数据库。. 本章小结 Visual FoxPro 中,数据库中不存储数据,而存储数据库表的属性、表关联和视图以及存 储过程等。创建数据库之前,应进行数据库设计,即确定数据库的用途,确定数据库中的表 文件和字段以及表间关系等。 本章内容要点: (1)数据库设计。 (2)创建数据库,在数据库中添加、移去表,建立表间关系等。 (3)设置数据库表的属性,即设置有效性规则、触发器、参照完整性,设置字段的显示 属性、字段的输入默认值等。 (4)操作数据库,即打开或关闭数据库,维护数据库。 (5)使用多个数据库。. 习题 4 一、选择题 1.Visual FoxPro 数据库文件是(. ) 。.

(17) 第 4 章 数据库的设计与操作. A.存放用户数据的文件 B.管理数据库对象的系统文件 C.存放用户数据和系统数据的文件 D.前 3 种说法都对 2.对于数据库,( )说法是错误的。 A.数据库是一个容器 B.自由表和数据库表的扩展名都为.dbf C.自由表的表设计器和数据库表的表设计器是不一样的 D.数据库表的记录数据保存在数据库中 3.关于数据库和数据表之间的关系,正确的描述是( )。 A.数据表中可以包含数据库 B.数据库中只包含数据表 C.数据表和数据库没有关系 D.数据库中包含数据表、表间的关系和相关的操作 4.Visual FoxPro 的数据库扩展名为( )。 A..dbf B..dct C..dbc D..dcx 5.早期的“数据库文件”与 Visual FoxPro 中的( )对应。 A.数据库 B.数据库表 C.项目 D.自由表 6.TM_BMB 数据库表的全部备注型字段的内容存储在( )文件中。 A.TM_BMB.dbf B.TM_BMB.txt C.TM_BMB.fpt D.TM_BMB.dbc 7.在 Visual FoxPro 中数据库表字段名最长可以是( )。 A.10 个字符 B.32 个字符 C.64 个字符 D.128 个字符 8.以下关于自由表的叙述,正确的是( )。 A.全部是用以前版本的 FoxPro(FoxBASE)建立的表 B.可以用 Visual FoxPro 建立,但是不能把它添加到数据库中 C.自由表可以添加到数据库中,数据库表也可以从数据库中移出成为自由表 D.自由表可以添加到数据库中,但数据库表不可以从数据库中移出成为自由表 9.在表设计器的字段验证中有( )、信息和默认值 3 项内容需要设定。 A.格式 B.标题 C.规则 D.输入掩码 10.对于只有两种取值的字段,最好使用( )类型。 A.数值 B.字符 C.日期 D.逻辑 11.利用( )命令,可以浏览数据库中的文件。 A.LIST B.BROWSE C.MODIFY D.USE 12.使用( )来标识每一个不同实体的信息,以便于区分不同的实体。 A.主关键字 B.关键字 C.属性 D.字段 13.对于说明性的信息,长度在( )个字符以内时可以使用字符型。 A.255 B.254 C.256 D.250. 111.

(18) 112. Visual FoxPro 数据库程序设计教程(第二版). 14.在创建数据库表结构时,给该表指定了主索引,这属于数据完整性中的( ) 。 A.参照完整性 B.实体完整性 C.域完整性 D.用户定义完整性 15.索引的种类包括主索引、候选索引、唯一索引和( )。 A.副索引 B.普通索引 C.子索引 D.多重索引 16.在 Visual FoxPro 中,表索引文件有两种结构:独立索引文件.idx 和复合索引文件( ) 。 A..cdx B..dbf C..frx D..mnx 17.对于数据库表的索引,( )说法是不正确的。 A.当数据库表被打开时,其对应的结构复合索引文件不能被自动打开 B.主索引和候选索引能控制表中字段重复值的输入 C.一个表可建立多个候选索引 D.主索引只适用于数据库表 18.对于表索引操作, ( )说法是正确的。 A.一个独立索引文件中可以存储一个表的多个索引 B.主索引不适用于自由表 C.表文件打开时,所有复合索引文件都自动打开 D.在 INDEX 命令中选用 CANDIDATE 子句后,建立的是候选索引 19.建立索引时,( )字段不能作为索引字段。 A.字符型 B.数值型 C.备注型 D.日期型 20.对于表索引操作, ( )说法是错误的。 A.组成主索引的关键字或表达式在表中不能有重复的值 B.候选索引可用于自由表和数据库表 C.唯一索引表示参加索引的关键字或表达式的值在表中只能出现 1 次 D.在表设计器中只能创建结构复合索引文件 21.在数据库表设计器的“显示”栏中不包括以下( )项。 A.规则 B.格式 C.输入掩码 D.标题 22.对于表的索引描述中,( )说法是错误的。 A.复合索引文件的扩展名为 cdx B.结构复合索引文件在表打开的同时自动打开 C.当前显示的顺序为主索引的大小顺序 D.每张表只能创建一个主索引和一个候选索引 23.Visual FoxPro 数据库的表之间有( )种关系。 A.1 B.2 C.3 D.4 24.在 Visual FoxPro 中建立表间临时关联操作应使用的命令关键字是( )。 A.SET RELATION B.CALL C.JOIN D.SELECT 25.参照完整性生成器的“更新规则”选项卡的( )选项是为了防止父表的主关键字 段或候选关键字段的值被修改。 A.级联 B.限制 C.忽略 D.删除.

(19) 第 4 章 数据库的设计与操作. 113. 26.Visual FoxPro 参照完整性规则不包括( )。 A.更新规则 B.删除规则 C.索引规则 D.插入规则 27.在 Visual FoxPro 中以下叙述正确的是( )。 A.关系也被称作表单 B.数据库文件不存储用户数据 C.表文件的扩展名是.DBC D.多个表存储在一个物理文件中 28.在 Visual FoxPro 中,多表操作的实质是( )。 A.把多个表物理地连接在一起 B.临时建立一个虚拟表 C.反映多个表之间的关系 D.建立一个新的表 29.默认情况下的表间连接类型是( )。 A.内部连接 B.左连接 C.右连接 D.完全连接 30.要在两个数据库表之间建立永久关系,则至少要求在父表的结构复合索引文件中创 建一个( ),在子表的结构复合索引文件中也要创建索引。 A.主索引 B.候选索引 C.主索引或候选索引 D.唯一索引 31.要在两张相关的表之间建立永久关系,这两张表应该是( )。 A.同一数据库内的两张表 B.两张自由表 C.一个自由表和一个数据库表 D.任意两个数据库表或自由表 32.表之间的“一对多”关系是指( )。 A.一个表与多个表之间的关系 B.一个表中的一个记录对应另一个表中的多个记录 C.一个表中的一个记录对应另一个表中的两个记录 D.一个表中的一个记录对应多个表中的多个记录 33.不属于表设计器的“字段有效性”规则的是( )。 A.规则 B.信息 C.格式 D.默认值 34.在 Visual FoxPro 的数据库表中只能有一个( ) 。 A.候选索引 B.普通索引 C.主索引 D.唯一索引 35.设置参照完整性的目的是( )。 A.定义表的临时连接 B.定义表的永久连接 C.定义表的外部连接 D.在插入、更新、删除记录时,确保已定义的表间关系 36.建立索引时,既不允许字段有重复值,在一个数据表中也只能建立一个索引的是( ) 。 A.主索引 B.候选索引 C.唯一索引 D.普通索引 37.在建立一对多关系时,对“多方”建立的索引应是( )。 A.主索引 B.候选索引 C.唯一索引 D.普通索引 38.在数据库中的数据表间( )建立关联关系。 A.随意 B.不可以 C.必须 D.可根据需要 39.在 Visual FoxPro 中,可以对字段设置默认值的表( )。 A.必须是数据库表 B.必须是自由表.

(20) 114. Visual FoxPro 数据库程序设计教程(第二版). C.自由表或数据库表 D.不能设置字段的默认值 40.在 Visual FoxPro 中,打开数据库的命令是( ) 。 A.OPEN DATABASE <数据库名> B.USE <数据库名> C.USE DATABASE <数据库名> D.OPEN <数据库名> 41.在 Visual FoxPro 中进行参照完整性设置时,要想设置成:当更改父表中的主关键字 段或候选关键字段时,自动更改所有相关子表记录中的对应值。应选择( )。 A.限制(restrict) B.忽略(ignore) C.级联(cascade) D.级联(cascade)或限制(restrict) 42.在 Visual FoxPro 的数据工作期窗口,使用 SET RELATION 命令可以建立两个表之间 的关联,这种关联是( )。 A.永久性关联 B.永久性关联或临时性关联 C.临时性关联 D.永久性关联和临时性关联 43.在 Visual FoxPro 中,数据库表的字段或记录的有效性规则的设置可以在( ) 。 A.项目管理器中进行 B.数据库设计器中进行 C.表设计器中进行 D.表单设计器中进行 44.数据库表可以设置字段有效性规则,字段有效性规则属于( )。 A.实体完整性范畴 B.参照完整性范畴 C.数据统一致性范畴 D.域完整性范畴 45.使数据库表变为自由表的命令是( )。 A.DROP TABLE B.REMOVE TABLE C.FREE TABLE D.RELEASE TABLE 46.在 Visual FoxPro 中,建立数据库表时,将年龄字段值限制在 12~40 岁之间的这种 约束属于( )。 A.实体完整性约束 B.域完整性约束 C.参照完整性约束 D.视图完整性约束 47.在数据库设计器中,建立两个表之间的一对多联系是通过( )实现的。 A.“一方”表的主索引或候选索引, “多方”表的普通索引 B.“一方”表的主索引, “多方”表的普通索引或候选索引 C.“一方”表的普通索引,“多方”表的主索引或候选索引 D.“一方”表的普通索引, “多方”表的候选索引或普通索引 48.下面有关数据库表和自由表的叙述中,错误的是( )。 A.数据库表和自由表都可以用表设计器来建立 B.数据库表和自由表都支持表间联系和参照完整性 C.自由表可以添加到数据库中成为数据库表 D.数据库表可以从数据库中移出成为自由表 49.在数据库表上的字段有效性规则是( )。 A.逻辑表达式 B.字符表达式 C.数字表达式 D.以上 3 种都有可能 50.下列叙述中,错误的是( )。.

(21) 第 4 章 数据库的设计与操作. 115. A.在数据库系统中,数据的物理结构必须与逻辑结构一致 B.数据库技术的根本目标是要解决数据的共享问题 C.数据库设计是指在已有数据库管理系统的基础上建立数据库 D.数据库系统需要操作系统的支持 51.在 Visual FoxPro 中,下面关于索引的正确描述是( )。 A.当数据库表建立索引以后,表中的记录的物理顺序将被改变 B.索引的数据将与表的数据存储在一个物理文件中 C.建立索引是创建一个索引文件,该文件包含有指向表记录的指针 D.使用索引可以加快对表的更新操作 52.在 Visual FoxPro 中,在数据库中创建表的 CREATE TABLE 命令中定义主索引、实 现实体完整性规则的短语是( )。 A.FOREIGN KEY B.DEFAULT C.PRIMARY KEY D.CHECK 53.Visual FoxPro 的“参照完整性”中“插入规则”包括的选择是( ) 。 A.级联和忽略 B.级联和删除 C.级联和限制 D.限制和忽略 二、填空题 1.在 Visual FoxPro 中数据库文件的扩展名是________,数据库表文件的扩展名是 ________。 2.打开数据库设计器的命令是________DATABASE。 3.在 Visual FoxPro 中通过建立主索引或候选索引来实现________完整性约束。 4.在 Visual FoxPro 的中,可以在表设计器中为字段设置默认值的表是________表。 5.表设计器的字段验证中有________、信息和默认值 3 项内容需要设定。 6.在字段的“显示”栏中,包括格式、标题和________3 项。 7.在定义字段有效性规则时,在规则框中输入的表达式类型是________。 8.在 Visual FoxPro 中,最多同时允许打开________个数据库表和________自由表。 9.将数据库表中满足一定条件的记录加删除标记,使用命令________。 10.能一次性成批修改数据库中的记录值的命令是________。 11.要从磁盘上一次性彻底删除全部记录,可以使用命令________。 12.Visual FoxPro 有两种类型的表:自由表和________。 13.数据库表的索引共有________种。 14.使用________来标识每一个不同实体的信息,以便于区分不同的实体。 15.索引的种类中,一个表的主索引可以有________个。 16.数据库表之间的一对多联系通过主表的________索引和子表的________索引实现。 17.实现表之间临时联系的命令是________。 18.参照完整性是根据表间的某些规则,使得在插入、删除和________时,确保已定义 的表间关系。 19.在参照完整性的设置中,如果要求在主表中删除记录的同时删除子表中的相关记录, 则应将“删除”规则设置为________。.

(22) 116. Visual FoxPro 数据库程序设计教程(第二版). 20.在 Visual FoxPro 中数据表间的关系有________、________和________。 21.在一个数据表中只允许建立一个的索引是________。 22.数据表之间的参照完整性有________、________和________规则。 23.一个关系数据库由若干个________组成;一个数据表由若干个________组成;每一 个记录由若干个以字段属性加以分类的________组成。 24.在数据库中数据完整性是指保证数据________特性,数据完整性一般包括实体完整 性、________和参照完整性。 三、上机操作题 1.建立一个自由表“student”,表结构如下: student.DBF:学号 C(8),姓名 C(12),性别 C(2),出生日期 D,院系 C(8) 2.新建“学生管理”数据库,并将表“student”添加到该数据库中。 3.在“学生管理”数据库中建立表 course、score,表结构描述如下: course.DBF:课程编号 C(4),课程名称 C(10),开课院系 C(8) score.DBF:学号 C(8),课程编号 C(4),成绩 I(3) 4.为新建立的 student 表建立一个主索引,为 score 表建立一个普通索引,索引名和索引 表达式均是“学号”。 5.建立表 student 和 score 间的永久联系(通过“学号”字段)。 6.为以上建立的联系设置参照完整性约束:更新规则为“限制” ;删除规则为“级联”; 插入规则为“限制”。 7.打开“学生管理”数据库,并从中永久删除“course”表。 8.建立项目“学生管理系统” ;并把“学生管理”数据库加入到该项目中。 9.为 score 表增加字段:平均分 N(6,2),该字段允许出现“空”值,默认值为.NULL.。 10.为“平均分”字段设置有效性规则:平均分>=0;出错提示信息是: “平均分必须大 于等于零”。 11.打开学生管理数据库,然后为表 student 增加一个字段,字段名为 email、类型为字 符、宽度为 20。 12.为 student 表的“性别”字段定义有效性规则,规则表达式为:性别$"男女",出错 提示信息为“性别必须是男或女”,默认值为“女”。 13.将已建立“course”表从“学生”数据库中移出,使其成为自由表。.

(23)

參考文獻

相關文件

超定方程组QR分解算法 数据拟合确定常微分方程..

[r]

1.本系為全師培學系,但經本入學管道錄取者為外

學校名稱 類別 系代碼 系科名稱 名額 備

頁:http://politics.ntu.edu.tw/ 。本系教學以口試及 文獻閱讀為主,需具有相當之聽覺功能(含能以助

第二種為專門論述西方印刷字體發展史的著作,目前具代表性例如前節所 述,哈佛大學出版的 Daniel Berkeley Updike《Printing Type: Their History, Forms and

USACO 是我认为最适合初学者的题库。他的特色是题目质量高,循序渐进,还 配有不错的课文和题目分析。做完了

(A)Skype (B)MSN Messenger (C)Outlook Express (D)ICQ