240 likes | 337 Views
授课 -6 数据库 ( 图书库 ) 管理. 本章内容大部分已在前面任务中介绍过了,这里再补充介绍表间关系的一些常用操作,然后解决图书库管理的有关操作。. 6.1 表间关系 6.2 图书库管理操作. 任务(上机 6 ): 进入文件夹 VFTS### ,打开 “ 项目 TS ” ,完成下列操作。 1. 建立数据库: 在 “ 项目 TS ” 中新建图书数据库 “ TSK.DBC ” ,保存到文件夹 VFTS### 中; 将图书表( TSB.DBF )、读者表( DZB.DBF )、借阅表( JYB.DBF )添加到数据库 TSK.DBC 中。
E N D
授课-6 数据库(图书库)管理 本章内容大部分已在前面任务中介绍过了,这里再补充介绍表间关系的一些常用操作,然后解决图书库管理的有关操作。 6.1 表间关系 6.2 图书库管理操作
任务(上机6): • 进入文件夹VFTS###,打开“项目TS”,完成下列操作。 • 1.建立数据库: • 在“项目TS”中新建图书数据库“TSK.DBC”,保存到文件夹VFTS###中; • 将图书表(TSB.DBF)、读者表(DZB.DBF)、借阅表(JYB.DBF)添加到数据库TSK.DBC中。 • 2.设置表TSB.DBF的字段属性 : • 设置“编码”字段的输入掩码为“N99999”,标题为“图书编码”,字段有效性规则为字符长度等于6,字段有效性信息为“编码必须是1个字母与5位数字组成!”;结果如T6-01所示。 • 设置“书号”字段的输入掩码为“9999999999”,字段有效性规则为字符长度等于10,字段有效性信息为“书号必须是10位数字组成!”;
3.设置表DZB.DBF的字段属性 : • 设置“证号”字段的输入掩码为“999”,标题为“借书证号”,字段有效性规则为字符长度等于3,字段有效性信息为“借书证号必须是3位数字组成!”; • 4.设置表JYB.DBF的字段属性 : • 设置“编码”字段的输入掩码为“N99999”,标题为“图书编码”,字段有效性规则为字符长度等于6,字段有效性信息为“编码必须是1个字母与5位数字组成!”; • 设置“证号”字段的输入掩码为“999”,标题为“借书证号”,字段有效性规则为字符长度等于3,字段有效性信息为“借书证号必须是3位数字组成!”。 • 5.建立字段索引、表间关系和参照完整性: • 将图书表(TSB.DBF)和读者表(DZB.DBF)中的候选索引改为主索引,索引标记分别为“BM”和“ZH”,见T6-02所示。 • 选择正确的关联字段,为表TSB.DBF 与JYB.DBF建立一对多关系,为表DZB.DBF 与JYB.DBF建立一对多关系。结果如样文T6-02所示。 • 将两个一对多关系的参照完整性的更新、删除、插入规则全部设置为“限制”。
T6-01 T6-02
6.1 表间关系 • 【学习目标】 • 如何建立表间关系 • 【关键概念】 • 工作区 • 父表和子表
6-1-1 多工作区的操作 • 在VFP中,存在着32767个工作区,每个工作区可以打开一个表,即在同一个工作区中不能同时打开多个表。如果在同一时刻需要打开多个表,则只需要在不同的工作区打开不同的表。 • 1.工作区的表示 • •数字表示:用数字1,2,3…32767表示; • •字母表示:用字母A,B,C,…J,W11,W12,…,W32767表示; • •别名表示:在某工作区打开表是指定了别名,则此别名就可以表示该工作区。 • 指定别名格式:USE 表名 [IN 工作区号][ALIAS 别名] • 例如:USE STUDENT IN 5 ALIAS ABCD • &&将表STUDENT指定别名ABCD,也表示5号工作区
2.当前工作区的选择 • 正在进行的工作区称为当前工作区,系统中同时有且仅有一个工作区,选定当前工作区的命令: • 格式:SELECT 数字区号/字母区号/别名 • 例如:以下三个命令等价 • SELE 5 • SELE E • SELE ABCD • 在当前工作区内操作时,可访问其他工作区中当前记录的数据,这时,要指出访问工作区的区号或别名。 • 格式:字母区号->字段名 字母区号.字段名 • 别名->字段名 别名.字段名 • 例如:E->学号 E.学号 ABCD->学号 ABCD.学号
【相关例题】 • 例:用GZJ表中的数据,计算GZD表中 应发工资和实发工资。 • 见P124,图4-22 • USE GZJ IN A • USE GZD IN B • SELE B • DO WHIL ! EOF() • BH = 编号 • SELE A • LOCA FOR 编号 = BH • SELE B • REPL 应发工资 WITH A.基本工资+A.附加工资+A.洗理费; • +A.交通费+A.书报费+A.工龄 • REPL 实发工资 WITH 应发工资-房费-水费-电费 • SKIP • ENDD • BROW • CLOS DATA • RETU
3.工作表的联接 • 格式:JOIN WITH 别名表 TO 新表名 FOR 条件; • [FIELDS 字段名清单] • 功能:指当前工作表(主动表)与别名表(被动表)按给定的条件进行联接。 • 例:将GZJ与GZD联接成新表GZ • USE GZJ IN A • SELE B • USE GZD • JOIN WITH A TO GZ FOR 编号=A.编号 • USE GZ • BROW • CLOS DATA • RETU
6-1-2 关系的类别 • 1.关系的类型 • (1)永久关系: • 在数据库表之间建立的一种关系,这种关系不仅在运行时存在,而且一直保留。 • 永久关系是数据库表间的关系,它们存储在数据库文件中。 • 永久关系不能控制相关表中记录指针的移动。 • (2)临时关系: • 在任意表之间建立的一种关系,自由表之间只能建立临时关系,表一旦被关闭,则临时关系不存在。 • 在建立表间的临时关系之后就会使得一个表(子表)的记录指针自动随另一个表(父表)的记录指针移动而移动。
【关键知识】 • 2.父表和子表 • 父表:一对一或一对多的表关系中的主表或主控表。 • 子表:一对一或一对多的表关系中的相关表或受控表。 • 在临时关系中,父表中记录指针的移动将导致子表中的当前记录指针也依据建立的关系而随之移动。 • 在永久关系中,由子表建立的索引类型决定两表之间是一对一还是一对多的关系。若所建索引为主索引或候选索引,则为一对一;若所建索引为惟一索引和普通索引,则为一对多。
6-1-3 建立表间临时关系 • 1.子表必须建立索引 • 在建立临时关系之前,子表必须根据建立关系的字段或字段表达式建立索引,索引的类型可根据子表的实际情况而定。 • 2.通过命令建立关系 • (1)在工作区中打开子表并使相应的索引成为主控索引; • (2)在另一工作区中打开主表; • (3)在主表工作区中使用命令: • SET RELATION TO 关联表达式 INTO 别名 [ADDITIVE] • 说明: ADDITIVE表示建立新的关系时,不取消原来建立的临时关系。
[例如]:用GZJ表中数据计算GZD表中的应发、实发工资,浏览两表记录的所有工资数据字段。[例如]:用GZJ表中数据计算GZD表中的应发、实发工资,浏览两表记录的所有工资数据字段。 • USE GZJ IN A • SELE A • INDE ON 编号 TAG BH • SET ORDE TO TAG BH • USE GZD IN B • SELE B • SET RELA TO 编号 INTO GZJ • REPL ALL 应发工资 WITH A.基本工资+A.附加工资+A.洗理费; • +A.交通费+A.书报费,实发工资 WITH 应发工资-房费-水费-电费 • BROW FIEL A.编号,A.姓名,A.基本工资,A.附加工资,A.洗理费,; • A.交通费,A.书报费,应发工资,房费,水费,电费,实发工资 • CLOS DATA • RETU
6-1-4 建立表间永久关系 • 1.在数据库表间建立永久关系必须注意的事项 • 1)只能在数据库表间建立永久关系。 • 2)两表必须就共同的字段建立索引,且父表索引类型必须为主索引或候选索引。 • 3)所建关系的类型依据子表索引类型而定。 • 2.建立表间永久关系 • 在“数据库设计器”中,用鼠标从一个表的主索引或候选索引拖到另一个表的任一索引,当出现表间关联连线时就表示关系已建立。用鼠标右键单击连线,弹出快捷菜单,可以进行删除关系、编辑关系和编辑参照完整性操作。
一对一关系连线 一对多关系连线 一对多关系连线
【相关知识】 • 6-1-5 数据完整性 • 1.实体完整性与主关键字 • 实体完整性是保证表中实体(即记录)惟一的特性,即在一个表中不允许有重复的记录。在VFP中利用主关键字或候选关键字来保证表中记录惟一。 • 2.域完整性与约束规则 • 域完整性是表中域(即字段)的特性。对字段的限定都认为是域完整性的范围,如字段的类型、字段的宽度和字段的有效性规则等。
2.参照完整性 参照完整性是控制数据库中不同表的主关键字和外部关键字之间数据一致性的关系规则。参照完整性则属于表间规则。 用户可以通过“参照完整性生成器”来进行规则设置,从而控制相关表的更新、删除和插入记录的数据完整性。 打开“参照完整性生成器”窗口 双击两表之间的连线,在“编辑关系”对话框中选定【参照完整性】按钮。 设置更新、删除、插入三个规则 • 更新规则:是指修改父表中关键字值时所使用的规则,包括级联、限制和忽略3种。 • 删除规则:是指删除父表中的记录时使用的规则,包括级联、限制和忽略3种。 • 插入规则:是指在子表中插入新的记录,或更新已存在的记录时所用的规则,包括限制和忽略2种。
在浏览bmdm表时将计算机系的代码修改为A04,则子表rsb中部门是计算机系的所有记录的部门代码字段值都被更新为“A04”。
6.2 图书库的管理操作 • 【学习目标】 • 数据库的管理操作 • 【关键概念】 • 数据字典的编辑 • 表间关系和参照完整性的操作
任务的第1点操作示范: • 在“项目TS”中新建图书数据库“TSK.DBC”,保存到文件夹VFTS###中; • 将图书表(TSB.DBF)、读者表(DZB.DBF)、借阅表(JYB.DBF)添加到数据库TSK.DBC中。 • 操作: • 先打开项目管理器“项目TS”,在[数据]选项中选择[数据库],然后点击[新建]钮,打开“新建”对话框, • 点击[新建文件]钮。 • 在建立好的数据库中,再点击[添加],添加各数据表。
任务的第2、3点操作示范: • 2.设置表TSB.DBF的字段属性: • 选TSB.DBF,进入表设计器;选“字段”选项,选“编码”字段,在“输入掩码”内输入 “N99999”,“标题”内输入“图书编码” ,在字段有效性规则内输入……, “信息”内输入字符:“编码必须是1个字母与5位数字组成!” • 选“书号”字段,在“输入掩码”内输入“9999999999”,在字段有效性规则内输入……,“信息”内输入字符“书号必须是10位数字组成!”; • 3.设置表DZB.DBF的字段属性: • 选DZB.DBF,进入表设计器;选“字段”选项,选“证号”字段,在“输入掩码”内输入“999”,“标题”内输入“借书证号”,在字段有效性规则内输入……,“信息”内输入字符“借书证号必须是3位数字组成!”。
任务的第4、5点操作示范: • 4.设置表JYB.DBF的字段属性 : • 选JYB.DBF,进入表设计器;选“字段”选项,选“编码”字段,在“输入掩码”内输入 “N99999”,“标题”内输入“图书编码” ,在字段有效性规则内输入……, “信息”内输入字符:“编码必须是1个字母与5位数字组成!” • 选“证号”字段,在“输入掩码”内输入“999”,“标题”内输入“借书证号”,字段有效性规则内输入……,“信息”内输入字符“借书证号必须是3位数字组成!”。 • 5.建立字段索引、表间关系和参照完整性: • 先打开数据库,用表设计器建立各个表的索引。 • 按照要求建立数据库表的表间关系。 • 双击任何一条表间关系线,可进入生成器对话框,设置参照完整性。
【本课小结】 • 建立永久表间关系: • 先打开(建立)数据库,在表中建立相应的索引,然后拖动鼠标,形成表间关系。 • 工作区的概念。 • 建立临时表间关系: • (1)在一工作区中打开子表并使相应的索引成为主控索引; • (2)在另一工作区中打开父表; • (3)在父表工作区中使用命令: • SET RELA TO 关联式 INTO 子表别名 [ADDI] • 【作业】 • 上机6(图书库管理) 返回本课目录