收藏 分享(赏)

第八章参照完整性 p37.ppt

上传人:无敌 文档编号:1072002 上传时间:2018-06-09 格式:PPT 页数:37 大小:396.02KB
下载 相关 举报
第八章参照完整性 p37.ppt_第1页
第1页 / 共37页
第八章参照完整性 p37.ppt_第2页
第2页 / 共37页
第八章参照完整性 p37.ppt_第3页
第3页 / 共37页
第八章参照完整性 p37.ppt_第4页
第4页 / 共37页
第八章参照完整性 p37.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、第八章 参照完整性,数据完整性包括三个方面:实体完整性:即在一个表中不允许出现重复的 记录。域完整性:即属性的取值范围。参照完整性:即对一个表中的记录,不一定能随意增加、修改和删除,还必须参照别的表中的相关数据才行。8.1表之间的关系实体之间的联系类型有三种:一对一、一对多、多对多。在Visual FoxPro中,表与表之间的联系方式通常称为“关系”,只有一对一和一对多关系。8.1.1建立表之间的关系【例1】数据库设计器如图8.1所示。,图8.1student数据库设计器,。,8.1.2修改表之间的关系如图8.3所示。利用此快捷菜单,可以删除关系、编辑关系,还可以编辑参照完整性。其中,“编辑关

2、系”、“编辑参照完整性”命令也列在主菜单中的“数据库”项的下拉菜单中。,图8.3关系的快捷菜单,1、删除关系2、编辑关系“编辑关系”对话框如图8.4所示,图8.4“编辑关系”对话框,8.2参照完整性如果执行关系快捷菜单中的“编辑参照完整性”命令,系统经常会首先弹出图8.5所示的信息窗口,提示用户首先要“清理数据库”,以确保数据库包含的表和索引都处于正确状态。,图8.5设置参照完整性必须先清理数据库,清理数据库之后,重新执行关系快捷菜单上的“编辑参照完整性”命令,系统将弹射出“参照完整性生成器”,如图8.6所示。,图8.6“参照完整性生成器”,触发器(Trigger),是一段在插入、更新或删除操

3、作之后运行的记录级代码,常用于检查表间的数据约束。,图8.7“更新”下拉列表,在“参照完整性生成器”下面,有一个参照完整性表格,包括以下列:“父表”:显示数据库关系中的父表名。“子表”:显示数据库关系中的子表名。图8.7“更新”下拉列表“更新”:显示参照完整性的更新规则,取值为“级联”、“限制”或“忽略”。要想修改它,可以单击此字段,此时会出现一个下拉列表,如图8.7所示。实际上,当更改更新规则时,相当于选中了“更新规则”选项卡中的相应选项。“删除”:显示参照完整性的删除规则,取值为“级联”、“限制”或“忽略”。要想修改它,也可以单击此字段,相当于选中了“删除规则”选项卡中的相应选项。“插入”

4、:显示关系中参照完整性的插入规则。取值为“限制”或“忽略”。要想修改它,也可以单击此字段,相当于选中了“插入规则”选项卡中的相应选项。“父标记”:显示父表中主关键字段或候选关键字段中索引的标识名。“子标记”:显示子表的索引标识名。,如果做了修改并希望保存设置,在单击“确定”按钮后,系统会弹出图8.8所示的提示信息。如果选择“是”,系统会继续弹出图8.9所示的提示信息,继续选择“是”,系统就会生成新的参照完整性代码。,图8.8提示信息,图8.9提示信息,8.2.1“更新规则”选项卡“更新规则”选项卡用于指定修改父表中关键字时所用的规则当父表中的关键字或候选关键字被修改时,如何更改子表中的相应数据

5、,有以下选项:“级联”:用父表中新的关键字值更新子表中的所有相关记录。如果选择了该选项,不论何时更改父表中的某个字段,Visual FoxPro自动更改所有相关子表记录中的对应值。“限制”:如果子表中有相关记录,则禁止更改父表中的关键字或候选关键字中的值。这样在子表中就不会出现孤立的记录。“忽略”:即使在子表中有相关记录,仍允许更新父表中的记录。,【例2】如图8.10所示,图8.11更新的数据没有通过触发器检查,8.2.2“删除规则”和“插入规则”选项卡“删除规则”选项卡用于指定删除父表中的记录时的规则,有以下选项:“级联”:如果删除父表中的记录,则删除在子表中的相关记录。“限制”:当子表中有

6、相关记录时,不允许删除父表中的记录。“忽略”:允许删除父表中的记录,不管子表中是否有相关记录。“插入规则”选项卡用于指定在子表中插入新记录、或更新已存在的记录时所用的规则,有以下选项:“限制”:如果父表中不存在匹配的关键字或候选关键字值,则禁止在子表中插入记录。“忽略”:允许在子表中插入记录,而不管父表中是否有匹配的记录。,【例3】图8.13所示,图8.14所示,图8.14所示,8.3利用关系浏览数据 单击主菜单“窗口”下的“数据工作期”命令,或者单击“常用”工具栏上的“数据工作期”按钮,就会打开“数据工作期”窗口,如图8.15所示。,图8.15“数据工作期”窗口,8.3.1数据工作期数据工作

7、期(Data Session)是用户使用的当前动态工作环境的一种表示,可以将数据工作期看成一个小型的数据环境。在图8.15所示的“数据工作期”窗口中,可以打开或显示表或视图、建立临时关系、设置工作区属性。窗口中的选项如下:“当前工作期”:这是一个下拉列表,显示当前数据工作期的名称。“别名”:显示在工作区中打开的表别名或视图别名,不带文件扩展名。“关系”:显示表或视图之间的临时关系,这个关系是在“别名”框中的表或视图之间建立的。,“属性”:单击此命令按钮,可显示“工作区属性”对话框。如果在“别名”框中没有表或视图,就会显示“打开”对话框,可打开一个表或视图。“浏览”:可打开浏览窗口,浏览表或视图

8、中的数据,并可在浏览窗口中检查、编辑或追加数据。“打开”:显示“打开”对话框,可以选择要打开的表或视图。“关闭”:关闭已经打开的表或视图,以及任何相关文件。“关系”:单击此命令按钮,可以定义表或视图之间的关系。“一对多”:在“视图”对话框中选择两个或多个表,并建立它们之间的关系,然后单击“关系”,这时该按钮就可用了。单击此命令按钮,可显示“创建一对多关系”对话框。在该对话框中可以在子表和父表之间建立一对多的临时关系。,所谓临时关系(temporary relationship),是指使用“数据工作期”窗口或“SET RELATION”命令创建的表之间的关系。与它对应的是永久关系(persist

9、ent relationship),这种关系不仅在运行时存在,而且一直保留。拥有永久关系的表必须在数据库中。【例4】图8.16,图8.16两种风格的“打开”对话框,图8.17图8.19图8.20,图8.18选择子表,并建立和子表的关系,图8.20带关系的多表浏览,8.3.2使用命令设置表间的临时关系如果利用程序来建立表间临时关系,需要学习“SET RELATION”命令。相关较常用的命令还有“SET RELATION OFF”,较常用的函数有RELATION()、TARGET()等。1、“SET RELATION”命令命令的格式为:SET RELATION TO eExpression1 IN

10、TO nWorkArea1 | cTableAlias1, eExpression2 INTO nWorkArea2 | cTableAlias2 . IN nWorkArea | cTableAlias ADDITIVE该命令用于建立两个表之间的关系,在父表是当前表时发出此命令。其中:,“eExpression1”:指定在父表和子表之间建立关系的关系表达式,通常是子表的主控索引的表达式。“INTO nWorkArea1”:nWorkArea1是子表所在的工作区号。“INTO cTableAlias1”:指定子表的别名,用此访问子表所在的工作区。“eExpression2 INTO nWork

11、Area2 | cTableAlias2 .”:指定其他关系表达式和其他子表,建立其他表间关系。“IN nWorkArea | cTableAlias”:指定父表的工作区号或别名。加上此子句后,允许创建关系时不必首先令父表所在的工作区为当前工作区。“ADDITIVE”:在创建新关系时,保留父表工作区中所有已存在的关系。如果不加此子句,则将断开父表工作区中的所有关系,然后再创建新指定的关系。,2、RELATION()函数该函数确定为表指定的关系表达式,格式为:RELATION(nRelationNumber , nWorkArea | cTableAlias)其中:“nRelationNumbe

12、r”:关系序号。函数将返回序号指定的关系。“nWorkArea | cTableAlias”:指定表所在的工作区。如果省略,则返回当前工作区中打开的表的关系表达式。例如,在例5执行之后,命令:? RELATION(1, 1)返回第一个工作区的第一个关系,即department表的第一个关系“DEPARTMENT.ID”。,3、TARGET()函数该函数用于确定指定关系的子表的别名,格式为:TARGET(nRelationshipNumber , nWorkArea | cTableAlias)返回字符型数据。其中,“nRelationshipNumber”指定关系编号,如果超过了所建关系的个数

13、,则函数返回空字符串。“nWorkArea | cTableAlias”用于指定父表所在的工作区,如果省略,则选择当前工作区中的表作为父表。,4、“SET RELATION OFF”命令该命令可以解除当前工作区中父表与指定工作区子表之间的关系,格式为:SET RELATION OFF INTO nWorkArea | cTableAlias其中:“INTO nWorkArea | cTableAlias”:指定子表所在的工作区 *8.4存储过程和触发器本节我们不做要求详见课本,8.4.1存储过程所谓存储过程(stored procedure),就是存储在数据库中的过程,语法格式和一般过程完全一

14、样8.4.2建立和删除触发器的命令触发器的编程相当复杂,因此系统提供“参照完整性生成器”来创建触发器。,我们也可以自己定义存储过程,然后将调用代码写在“表”选项卡的“触发器”区域中,或者直接定义一个简单的逻辑表达式为触发器。在程序中,和触发器有关的命令有“CREATE TRIGGER”、“DELETE TRIGGER”命令。,1、“CREATE TRIGGER”命令该命令可以创建触发器,指定要执行的存储过程或代码。格式为:CREATE TRIGGER ON TableNameFOR DELETE | INSERT | UPDATE AS lExpression其中:“TableName”:要创建触发器的表名。“FOR DELETE | INSERT | UPDATE”:指定要创建的触发类型,是删除、插入还是更新触发器。“As lExpression”:指定触发器代码。其中,lExpression可以是调用存储过程(存储过程必须返回逻辑值)的代码,也可以是一个逻辑表达式。,2、“DELETE TRIGGER”命令该命令的格式为:DELETE TRIGGER ON TableName FOR DELETE | INSERT | UPDATE可以删除指定表上的特定类型的触发器。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报