实训7 工作区的使用

跟我做

实训要求

  • 掌握多工作区使用的方法
  • 掌握建立表间临时关系的方法
  • 掌握建立表间永久关系的方法
  • 学会设置参照完整性规则

实例1 分别在1、2、3工作区打开“图书”表、“读者”表和“借阅”表,并选择第1工作区为当前工作区。

打开数据库表可以在“数据工作期”按顺序打开。下面介绍使用命令方式打开上述数据库表。

键入命令:

OPEN DATABASE Books   &&打开“Books”数据库
SELECT 1
USE 图书
SELECT 2
USE 读者
SELECT 3
USE 借阅

选择1号工作区:

SELECT 1

SELECT 图书

两个命令是等价的。

也可以使用USE命令直接指定在哪个工作区打开表。例如:

OPEN DATABASE Books   &&打开“Books”数据库
USE 图书 IN 1
USE 读者 IN 2
USE 借阅 IN 3

当前的工作区是1区。在USE命令中使用ALIAS短语可以指定别名。

实例2 在实例1打开3个表的基础上,访问表中的数据。

键入命令:

? 书名,B->姓名,借阅.图书ID   &&当前工作区是1区

屏幕显示:

Windows 7应用基础 东邪 T0002

实例3 使用SET RELATION命令建立“读者”表和“借阅”表之间的关系。

对于“读者”表,前面已经按“借书证号”建立了主索引,索引名为“借书证号”;对于“借阅”表,已经按“借书证号”建立了普通索引,索引名为“借书证号”。因此,在两个表之间可以通过“借书证号”建立关系。

键入命令:

CLOSE DATABASE
OPEN DATABASE Books     &&打开“Books”数据库
CLEAR ALL
USE 读者 IN 0 ORDER 借书证号
USE 借阅 IN 0 ORDER 借书证号
SELECT 1
SET RELATION TO 借书证号 INTO 借阅
&&以“借书证号”为关键字与“借阅”表建立关系

分别打开“读者”表和“借阅”表的浏览窗口,将鼠标指针指向“读者”表中不同的记录,可以观察到“借阅”表中记录的变化,如图2-22所示。

图2-22 “读者”表和“借阅”表记录关联

实例4 以“图书”表和“借阅”表的“图书ID”字段为关键字,建立两表之间的一对多关系。

在“表设计器”中检查“图书”表已按“图书ID”建立了主索引,索引名为“图书编号”,“借阅”表已按“图书ID”建立了普通索引。

操作步骤:

(1)在项目管理器窗口中,选择“Books”数据库,单击“修改”按钮,打开“数据库设计器”窗口。

(2)选择“图书”表中的索引名“图书编号”,将其拖到“借阅”表中对应的索引“图书id”上。此时,可以看到它们之间出现一条连线,表示在两个表之间建立了一对多关系,如图2-23所示。

图2-23 建立的一对多关系

建立表间关系后,如果要编辑已建立的关系,在“数据库设计器”窗口,用鼠标右键单击表之间的连线,此时弹出快捷菜单,选择“删除关系”、“编辑关系”或“编辑参照完整性”命令等,删除或编辑对应的关系。

实例5 设置“图书”表和“借阅”表的参照完整性:当在“借阅”表插入记录时,如果“图书”表(父表)中不存在对应的图书ID关键字的记录,则禁止插入记录。

在实例4两表建立一对多关系的基础上,根据要求,设置参照完整性的“插入规则”。

操作步骤:

(1)如果两个表没有建立关系,首先建立两表间的一对多关系。

(2)执行清理数据库操作。

(3)打开“参照完整性生成器”对话框,在“插入规则”选项卡中选择“限制”选项,即在插入记录时检查相关的“图书”表记录是否存在,如果不存在则禁止插入借阅记录。

练一练

1.填空题

(1)在Visual FoxPro 6.0中,最多同时能打开______个数据库表或自由表。

(2)使用USE命令在不同工作区打开已经打开的表,应选择短语______。

(3)假设当前工作区是1区,执行命令“USE 读者 IN 3”后,则当前工作区是______区。

(4)建立表间临时关系的命令是____________。

(5)数据库表之间的一对多关系通过父表的______索引和子表的______索引实现。

(6)在2号工作区打开数据表xs.dbf,并设置别名为student,应输入的命令是:

USE xs______2______student

(7)在Visual FoxPro中,要设置参照完整性规则,必须事先建立表之间的______关系。

2.选择题

(1)如果在2号工作区打开了“图书”表后,又进入了另一工作区,当要从别的工作区返回到2号工作区时,可以使用命令( )。

A.SELECT 2 B.SELECT B C.SELECT 图书 D.以上都可以

(2)执行下列命令序列后,FILE3所在的工作区是( )。

CLOSE DATABASE
   SELECT 0
   USE FILE1
   SELECT 0
   USE FILE2
   SELECT 0
   USE FILE3

A.第1区 B.第2区 C.第3区 D.第4区

(3)在Visual FoxPro的数据工作期窗口,使用SET RELATION命令可以建立两个表之间的关联,这种关联是( )。

A.永久性关联 B.永久性关联或临时性关联

C.临时性关联 D.永久性关联和临时性关联

(4)在数据库设计器中,建立两个表之间的一对多关系是通过以下索引实现的( )。

A.“一方”表的主索引或候选索引,“多方”表的普通索引

B.“一方”表的主索引,“多方”表的普通索引或候选索引

C.“一方”表的普通索引,“多方”表的主索引或候选索引

D.“一方”表的普通索引,“多方”表的候选索引或普通索引

(5)参照完整性的更新规则中不包括的选项是( )。

A.级联 B.限制 C.忽略 D.更新

(6)Visual FoxPro 6.0中的参照完整性规则不包括( )。

A.更新规则 B.删除规则 C.约束规则 D.插入规则

(7)在Visual FoxPro中设置参照完整性时,要设置成:当更改父表中的主关键字段或候选关键字段时,自动更新相关子表中的对应值,应在“更新规则”选项卡中选择( )。

A.忽略 B.限制 C.级联 D.忽略或限制

(8)如果指定参照完整性的删除规则为“级联”,则当删除父表中的记录时( )。

A.系统自动备份父表中被删除记录到一个新表中

B.若子表中有相关记录,则禁止删除父表中记录

C.会自动删除子表中所有相关记录

D.不做参照完整性检查,删除父表记录与子表无关

(9)表之间的临时关系是在两个打开的表之间建立的,如果两个表有一个关闭后,则该临时关系( )。

A.转化为永久关系 B.永久保留

C.临时保留 D.消失

(10)参照完整性的作用是 ( )。

A.字段数据的输入控制 B.记录中相关字段之间的数据有效性控制

C.表中数据的完整性控制 D.相关表之间的数据一致性控制

(11)如已在学生表和成绩表之间按学号建立永久关系,现要设置参照完整性:当在成绩表中添加记录时,凡是学生表中不存在的学号不允许添加,则该参照完整性应设置为( )。

A.更新级联 B.更新限制

C.插入级联 D.插入限制

动手做

1.在B工作区打开“读者”表,在F工作区打开“借阅”表。

2.分别在“数据工作期”和使用SET RELATION命令以“借书证号”为关键字建立“读者”表和“借阅”表的关联,并浏览每个读者的“借书证号”、“姓名”、“出生日期”、“借书日期”和“图书ID”字段的内容。

3.在E工作区打开“图书”表,使用SET RELATION命令与F工作区的“借阅”表以“图书ID”为关键字建立关联。

4.在数据库设计器中设置:“图书”表与“借阅”表的“图书ID”建立一对多关系,“读者”表与“借阅”表的“借书证号”建立一对多关系。

5.编辑“图书”表与“借阅”表间关系的参照完整性规则,设置“删除规则”中的“级联”。