实验3Visual FoxPro数据库设计
一、实验目的
掌握数据库的建立与使用,多工作区的使用,表间的永久关联和临时关联;掌握SQL语句的基本用法,运用SELECT语句进行数据库信息的查询。
二、实验准备
准备好职工、销售、商品三张表,并建立相应的复合索引。启动Visual FoxPro,并将默认的目录路径设置为三张表所在的目录。
复习教材有关内容,重点掌握数据库建立、打开、修改,多工作区操作,表间永久关联和临时关联建立及参照完整性实现,SQL语句的使用。
三、实验内容
1.建立一个“营销”数据库。
要求如下:
(1)新建一个名为“营销”的数据库。在数据库中加入我们已经作为自由表反复使用过的三张表:职工.DBF,销售.DBF,商品.DBF。
(2)清理三张表的数据,使它们满足数据库的实体完整性和参照完整性(即:职工表中职工号、商品表中的商品号不能重复,销售表中职工号、商品号必须是职工表、商品表中的对应数据的子集),并对各表分别建立相应索引,其中职工表的职工号索引和商品表的商品号索引都为主索引(注:在每张表的表设计器中建立相应索引)。
(3)在建好的数据库中分别建立职工表、商品表与销售表之间的永久关联。
2.多工作区及表间临时关联。
要求如下:
(1)使用命令方式:通过SELECT语句选择不同工作区分别打开职工表、商品表、销售表,分别移动各工作区的表中记录指针,观察各表指针之间是否相互关联(参见教材中工作区操作示例)。
(2)建立表间临时关联
方法如下:
(1)试用“数据工作期”建立职工表与销售表间的临时关联,观察两表间记录指针关联情况。
(2)使用SET RELATION TO … INTO 命令建立职工表与销售表间、销售表与商品表间临时关联。通过三表关联,输出某职工的职工号、姓名、商品号、商品名称、销售数量等数据。
3.设置表间参照完整性规则。
分别建立“职工”表和“销售”表间的永久关联和“商品”表和“销售”表间的永久关联,并建立参照完整性规则为“级联”。
4.SQL语句的基本用法。
(1)在命令窗口中输入以下语句:
SELECT * FROM 销售 WHERE 职工号=\"199701\"
屏幕上出现什么结果?
回答:
______________________________________________________________
(2)在命令窗口中输入以下语句:
SELECT 职工号, 姓名, 性别, MAX(基本工资) FROM 职工
屏幕上出现什么结果?
回答:
______________________________________________________________
(3)在命令窗口中输入以下语句:
SELECT DISTINCT 职工号FROM 销售
屏幕上出现什么结果?
回答:
______________________________________________________________
(4)在命令窗口中输入以下语句:
SELECT 职工号, AVG(数量) FROM 销售 GROUP BY 职工号 ORDER BY 职工号 屏幕上出现什么结果?
回答:
______________________________________________________________
(5)要求出男、女职工的平均基本工资,请写出相应的SQL语句。
回答:
______________________________________________________________
命令窗口中输入以下语句:
SELECT 职工.职工号, AVG(销售.数量) FROM 职工, 销售 ;
WHERE 职工.职工号 = 销售.职工号 GROUP BY 职工.职工号
屏幕上出现什么结果?
回答:
______________________________________________________________
5.设置数据库表字段有效性规则、记录有效性规则,规则如下:
(1)出生年月介于1948-1-1和1988-1-1之间;
(2)基本工资大于1000元;
(3)库存量、单价和数量大于0;
四、实验报告
1.实验过程报告
(1)写出第2实验题使用SET RELATION TO … INTO…命令建立职工表与销售表间临时关联,销售表与商品表间临时关联,通过三表关联,输出某职工的职工号、姓名、商品号、商品名、数量等数据的具体命令。
(2)在第2实验题中,如何在当前工作区引用其他工作区的字段,写出相应命令。
(3)试写出按部门统计职工销售商品总量的SQL -SELECT语句。
2.简答题
(1)数据库永久关联的作用?
(2)表间临时关联可用哪些方法实现?临时关联的作用?
(3)数据库中一对多表建立永久关联的条件是什么?
(4)结构化查询语言SQL是一种什么语言?
(5)用SQL-SELECT语句查询“职工”表中所有职工的职工号、姓名和出生日期,写出SQL命令。
(6)用SQL-SELECT语句查询“职工”、“销售”表中金额小于1000的职工号、姓名、金额,并将结果存放在“不合格”表中,写出SQL命令。
3.实验完成情况及存在问题