1第4章数据库及表的基本操作——多个表的操作电气信息学院计算机系教学内容工作区表的关联(临时关系)创建表之间的永久关系教学目的了解表的关系及关系的种类掌握永久关系的建立和编辑方法掌握工作区的概念与多表操作方法掌握表间临时关系的建立和使用方法重点:工作区的概念、多表操作、表间的关联难点:多工作区中表的使用34.8多个表文件的操作表的关联表的连接表间数据更新数据库表的永久关系设置参照完整性44.8.1工作区工作区的概念用USE命令打开一个表时,同时也就关闭了之前打开的表。为建立多个表之间的联系,必须同时打开这些表,VFP引入了“工作区”概念。每个工作区只允许打开一个表。电气信息学院计算机系工作区的编号与别名工作区的编号:数字,从1到32767工作区的别名:字母,前10个工作区的别名是字母A到J,10号工作区以后的别名是W11到W32767电气信息学院计算机系表别名每一个打开的表文件都有一个文件别名当用USE表文件名打开表时,系统默认表文件名就是它的别名为表文件另起别名(别名的命名同字段名)USE表文件名ALIAS别名电气信息学院计算机系选择工作区(SELECT命令)格式:SELECT区号|别名|0功能:把工作区号或别名所指定的工作区转变为当前工作区。说明:用SELECT0选择一个区号最小的空闲工作区用USE命令直接指定在那个工作区打开表,只要带上“IN区号”子句即可。如:USE学生成绩表IN2ALIASxscjb8工作区的互访在对表文件进行操作时,当前工作区的字段可以直接引用。如果在当前工作区要使用另一个工作区的表字段,则采用如下形式进行引用:别名-字段名别名.字段名9举例:在成绩管理数据库中,显示学生的学号、姓名、语文、数学、英语成绩104.8.2表的关联(临时关系)不同工作区中分别打开的两个表之间是彼此独立的,用户可通过临时关系来使两个表之间发生关联。临时关系使用时临时建立的表间联系。在任何表之间建立。建立关系的两个表中,当前表叫父表,被关联的表叫子表。实现多个数据表之间记录指针的联动,即当一个表的记录指针移动时另一表的记录指针能随之移动。通过“数据工作期”或命令建立。11当在学生表中选择了某一个学号,与之关联的表就显示该学号相同的记录,指针联动电气信息学院计算机系数据工作期数据工作期是VFP的一个独立工作状态和操作环境(指程序、表单或报表使用的当前动态工作环境)。每个数据工作期包含了它自己的一组工作区,显示工作区中打开的表、表索引以及表之间的关系。该窗口设置的工作环境可作为视图文件保存起来。电气信息学院计算机系打开数据工作期单击常用工具栏中“数据工作期”按钮“窗口”菜单/“数据工作期”命令数据工作期窗口各子窗口的意义当前工作期:显示当前工作期名称。“别名”列表框:显示已打开的表。关系:显示表或视图之间的临时关系。电气信息学院计算机系15建立表之间临时关系的前提条件:(1)父表和子表必须具有某一个相同的关联字段,并且值相等。(2)子表必须按关联的关键字建立索引,并把它设置为主控索引;表之间的临时关系建立16在“数据工作期”窗口建立临时关系(1)在“数据工作期”窗口打开需要建立关联的表;(2)选定父表工作区为当前工作区,使用“关系”按钮与一个子表建立关联;(3)关联关系可以是一对一关系、一对多、多对一(4)选定父表工作区为当前工作区,使用“一对多”按钮可与一个子表建立一对多关联;171、先打开所用的表(学生,选修)2、选定父表(学生),再选择“关系”3、如果要设定一对多关系,再选择“一对多”按钮,建立关联。注意:setrelationexpression填充“学号”,含义同命令的表达式18当在学生表中选择了某一个学号,与之关联的表就显示该学号相同的记录,指针联动19格式:SETRELATIONTO表达式1INTO工作区1|别名1[,表达式2INTO工作区2|别名2…][ADDITIVE]用命令来建立关联功能:以当前表为父表与其它一个或多个子表建立临时关联。20建立“一对多”的关联命令格式:SETSKIPTO工作区号1|别名1功能:在父表的每条记录与子表中所对应记录之间建立“一对多”的关联。说明:执行SETSKIPTO命令,可取消父子之间“一对多”的关联,但父子关联仍然存在。213.取消表的关联命令格式1:SETRELATIONTO功能:解除全部父子关联。命令格式2:SETRELATIONOFFINTO工作区号|别名功能:解除父表与工作区号或别名所指定的子表之间的关联。说明:两条命令都必须在父表所在的工作区执行电气信息学院计算机系数据库表的永久关系(掌握)临时关系:使用时临时建立的表间联系永久关系:是被存放在数据库表间的联系,它随数据库长期保存,随数据库的打开而打开、关闭而关闭。它只能在数据库表之间建立。永久关系解决数据库表之间的数据完整性问题,临时关系解决表之间的记录指针联动问题。电气信息学院计算机系建立永久关系的前提条件父表与子表具有某一相同的关键字,且对应值相等;每个表按该关键字建立了索引。在一对一关系表中,父表和子表均应按相同的关键字建立主索引或候选索引一对多关系表中,父表应建立主索引或候选索引,子表建立普通索引。电气信息学院计算机系永久关系的建立和删除建立:在“数据库设计器”中,将主关键字索引(有钥匙标记,如“学号”)或者候选索引,拖放到相关表的索引名上。这时两表的索引间出现一条直线,这根线称为“关系线”。修改:双击关系线,在随后弹出的“编辑关系”对话框中进行或“数据库”/“编辑关系”删除:单击两表间的关系线,关系线变粗,表明已选择了该关系,按下Del键,就可以删除该关系线。25例:建立school表与student表之间的一对多关联,并显示学校表的学校编号、校名和学生表的学号、姓名。26电气信息学院计算机系永久关系的作用——设置参照完整性参照完整性的意义(必须事先设置关系)打开“参照完整性生成器”“数据库设计器”/数据库/“编辑参照完整性”“数据库设计器”空白处单击右键,选择“编辑参照完整性”双击两表之间连线,在弹出的“编辑关系”对话框中,单击“参照完整性”右击两表之间连线,在弹出的对话框中选择“编辑参照完整性”28电气信息学院计算机系参照完整性的内容更新规则级联:对父表中关键字的修改,会自动更新子表中相关记录中的关键字。限制:若子表中有相关记录,则禁止更改父表中关键字段的值。忽略:不做参照完整性检查,可以任意更新父、子表中的记录。电气信息学院计算机系删除规则级联:对父表中的记录做删除,会自动删除子表中的相关记录。限制:若子表中有相关记录,则禁止删除父表中的相关记录。忽略:不做参照完整性检查,可以任意删除父、子表中的记录。电气信息学院计算机系插入规则限制:若父表中没有相关记录,则禁止在子表中插入。忽略:不做参照完整性检查,可以在父、子表中任意插入记录。32上机练习VFP上机实验指导书上的《实验5索引及建立表之间的永久关系》中的“练习建立表之间的永久关系”这部分。《实验6多工作区操作》说明:将实验6练习中的(1)~(12)小题要使用的命令按顺序保存在sy6.prg程序文件中。