
关联、查询和数据库.doc
13页实验课程名称 VF及其应用系统开发 实验项目名称 关联、查询和数据库 专 业 班 级 电子科学与技术09级1班 学 生 姓 名 学 号 指 导 教 师 实 验 时 间 2011年10月 第3章 关联、查询和数据库 实验 3-1 多表关联与查询1.实验目的 (1)理解关联的概念,掌握在数据工作期窗口中建立关联的方法 (2)掌握 SELECT-SQL 查询命令 (3)掌握用查询设计器建立查询的方法 2.实验要求 (1)在数据工作期窗口上建立以"订单"为父表, "订单明细"为子表的一多关系;再 建立以"订单明细"为父表, "货物"为子表的多一关系的二级关联然后查看关联后的效 果 (2)用 SELECT-SQL 命令对上述 5 个表作多表查询练习 ①查询联系"东南实业"公司的员工姓名及联系 ②查询订购麻油的订单份数 (3)用查询设计器查询公司订货情况 3.实验准备 (1)阅读主教材 3.1.2 节、3.2.3 节、3.3 节、3.5.1 节和 3.5.2 节。
(2)创建好订单、订单明细、员工、客户和货物表(见实验 2-2) 4.实验步骤 (1)为"关联"建立索引:为订单表的订单号字段建立索引,再为货物表的货号字段 建立索引订单明细的订单号建立索引如下:货物表的货物号建立的索引如下:(2)建立关联:打开数据工作期窗口→分别用"打开"按钮打开订单表、订单明细表 和货物表→在"别名"列表框中选定"订单" ,单击"关系"按钮→在"别名"列表框中选 定"订单明细"→随即弹出"设置索引顺序"对话框,其列表框中显示"订单明细.订单号" (参阅主教材图 3.7) 选定"确定"按钮→随即弹出"表达式生成器"对话框,其 SET RELATION 框中显示"订单号" (参阅主教材图 3.8) 选定"确定"按钮,多一关系建立完 成→选定"一对多"按钮→在随即弹出的"创建一对多关系"对话框中→选定"确定"按钮, 一多关系建立完成一对多关系如下:在"别名"列表框中选定"订单明细"→为确定以订单明细表为父表建立下一级关 联,在"关系"列表框中也选定"订单明细"→单击"关系"按钮→在"别名"列表框中选 定"货物"→在随即弹出的"设置索引顺序"对话框中选定"确定"按钮→在"表达式生成 器"对话中选定"确定"按钮,多一关系(第 2 级)建立完成,如下图所示 (3)查看关联效果:分别打开"订单""订单明细"和"货物"浏览窗口,并按左中 、 右顺序排列→选定"订单"表的某个记录, "订单明细"和"货物"浏览窗口的内容即会关 联变化,如图 2.3.2 所示。
图 2.3.2 二级关联的 3 个浏览窗口 (4)查询联系"东南实业"公司的员工姓名及联系:根据"东南实业"分司的客 户编号, 可在订单表中找到与其联系的员工工号, 据此就可在员工表中查出该员工的姓名及 号码SELECT-SQL 命令如下: SELECT 客户.公司名称,员工.姓名,员工.; FROM 客户,订单,员工; WHERE 客户.客户编号=订单.客户编号 AND 订单.工号=员工.工号; AND 客户.公司名称="东南实业"(5)查询订购麻油的订单份数:先通过货物表与订单明细表联接生成两表货号相同的 记录,再用 WHERE 子句在这些记录中筛选出货名是"麻油"的记录,此时就可用 COUNT 函数对两表的任何字段(例如订单明细.订单号)进行计数下面是写出的一种命令 SELECT 货物.货名,COUNT(订单明细.订单号) AS 订单份数; FROM 货物 INNER JOIN 订单明细 ON 货物.货号=订单明细.货号; WHERE 货物.货名="麻油" GROUP BY 货物.货名(6)用查询设计器查询订货情况:根据客户表中的客户编号,可在订单表中查出该客 户的订单号, 然后在订单明细表中查出所订货物的货号及数量, 并通过货物表查出相应的货名和库存量。
选定菜单命令"文件|新建" ,或单击"常用"工具栏的"新建"按钮,即显示"新 建"对话框(见主教材图 2.2)→文件类型选定为"查询" ,单击"新建文件"按钮,即出现 查询设计器和"打开"对话框→在"打开"对话框的列表中双击"客户.DBF"→选定"添 加表或视图"对话框的"其他"按钮,然后在"打开"对话框的列表框中双击"订单.DBF" →在随即出现的"联接条件"对话框中选定"确定"按钮→类似地再通过"其他"按钮分别 添加订单明细和货物表,然后关闭"添加表或视图"对话框,此时查询设计器的上窗格如图 2.2.3 所示→在查询设计器的"字段"选项卡中,将"可用字段"列表框中的客户.公司名称、 客户.联系人、订单.订单号、订单明细.货号、货物.货名、订单明细.数量及货物.库存量移到 "选定字段"列表框→选定"排序依据"选项卡,将"选定字段"列表框中的"客户.公司 名称"移到"排序条件"列表框→单击"常用"工具栏中的"运行"按钮运行查询,结果如 图 2.3.4 所示图 2.3.3 "查询订货情况"的查询设计器5.思考与操作 (1)在图 2.3.2 的"订单"浏览窗口中,第 2、5 行是用星号填充的,试解释原因。
答;因为"订单"与"订单明细"之间是"一对多"的关系,每一条"订单明细"都有一条 "订单"的信息与之对应,对于"订单明细"中出现的重复订单号等信息,在"订单"表中 则以"*"号填充,以示区别2)用 SELECT-SQL 命令查询国皓电器公司的订单号及订购日期SELECT-SQL 命令如下; SELECT 客户.公司名称,订单.订单号,订单.订购日期;FROM 客户,订单; WHERE 客户.客户编号=订单.客户编号 AND 客户.公司名称="国皓电器公司" 实验 3-2 数据库的基本操作1.实验目的 (1)掌握数据库的建立和维护方法 (2)熟练掌握设置数据库表字段级验证和记录级验证的方法 (3)掌握为数据库表建立永久关系和设置参照完整性的方法 2.实验要求 (1)创建"订货"数据库,要求包含订单、订单明细、货物、客户和员工 5 个表 (2)建立上述数据库表间的永久关系(见图 2.3.5) 图 2.3.5 建立数据库表间的永久关系 (3)以"货物"表为例设置数据库表属性 (4)练习设置数据库表之间的参照完整性 3.实验准备 (1)阅读主教材 3.6 节 (2)准备好实验 2-2 创建的 5 个自由表。
4.实验步骤 (1)创建"订货"数据库:执行如下命令创建并打开一个空的"订货"数据库 MODIFY DATABASE 订货 然后选定"数据库"菜单(或快捷菜单)的"添加表"命令,双击"打开"对话框中的 "订单.DBF""订单"字段窗口就出现在数据库设计器窗口中用同样方法添加订单明细、 货物、客户和员工表2)在建立数据库表间的永久关系:参阅主教材例 3-26,按表 2.3.1 分别为订单等 5 个表创建主索引和普通索引然后,单击"客户"字段窗口中的"客户编号"主索引(其左 侧有一个钥匙图标) ,按住鼠标左键,手拖曳到"订单"窗口的"客户编号"索引位置,松 开鼠标后即可画出表间关系线、货物表和订单明细表的永久关系,如下图 (3)设置"货物"表的字段级验证:打开表设计器,选定"字段"选项卡→选定列表 框中的"货号"字段→在"显示"区的"格式"文本框中输入格式符"! "使浏览窗口输入 /输出时将字母都转为大写→在"输入掩码"文本框中输入掩码"A9999" ,限制输入的货号 必须第 1 位是字母,后 4 位是数字字符→在"字段有效性"区的"规则"文本框中输入表达 式"LEN(ALLTRIM(货号))=5" ,要求货号必须有 5 个字符,不能空缺→在"信息"文本框 输入提示信息""请输入 5 位货号:字母开头,后跟 4 位数字字符。
"" ,以便 在出错时给出明确的提示信息→在"默认值"文本框输入默认值"A",可提高输 入不哭亦足矣,减少输入错误;同时,还提示货号的第 1 位应输入字母→在"字段注释"编 辑框中输入该字段的说明性文字(该字段用于对货物编号同一品种不同规格的货物用货号 区分货号由字母开头,后跟 4 位数字字符),如图 2.3.6 所示 (4)设置"货物"表的记录级验证:选定"表"选项卡→在"记录有效性"区的"规 则"文本框中输入表达式"NOT LEN(ALLTRIM(货名))=0" ,确保"货名"字段必须输入数据 →在"信息"文本框中输入""请输入货名!"" ,以便在货名字段为空的情况下离开被编 辑记录时给出提示→在"触发器"区的"删除触发器"文本框中输入表达式"LEFT(货 号,1)#"S"" ,指定货号以 S 开头的记录不能删除参阅图 2.3.7 (5)练习设置"参照完整性" :打开"订货"数据库,执行菜单命令"数据库|清理数据库" →选定"编辑参照完整性"命令,随即弹出如图 2.3.8 所示的"参照完整性生成器" 窗口,此时已选定"更新规则"选项卡→单击表格第 2 行行首的按钮,选定货物表与订单明 细时打开货物表和订单明细表的浏览窗口→将货物表的"货号"字段值 A1052 改为 A1055→ 单击订单明细表的浏览航空器,逾期成为当前窗口,可见其"货号"字段中的 A1052 也变成 了 A1055。
按上述步骤,现将货物表与订单明细表的更新规则设置为"限制" ,将货物表的货号字 段值 A1055 重新改为 A1052,观察其结果对删除规则和插入规则,读者可作相应练习 设置"订货"数据库表间的参照完整性5.思考与操作 (1)设置货物表的字段级验证和记录级验证规则后,在浏览窗口已打开的情况下,不 能使用"表"菜单中的"追加新记录"命令,也不能使用命令 APPEND BLANK 为货物表添加 记录;但可用"显示"菜单中的"追加方式"命令,或用命令 APPEND 添加记录试解释原 因 这是因为"追加新记录"和 APPEND BLANK 都是追加空白的记录,而设置货物表的 字段级验证和记录级验证规则后,这样空白的记录是不被允许添加的,而"显示"菜单中的 "追加方式" 则不同, 它是按前一个记录的规则进行追加, 也就是无论设置了什么样的规则, 它都可以按照相同的规则进行追加 (2)设置订单明细表的字段级验证和记录级验证,要求所有记录的"订单号"和"货 号"二字段都不能为空 对"订单号"和"货号"进行字段级验证 .--。
