完整性的要求数据库中数据的正确性相容性约束的实现.ppt
《完整性的要求数据库中数据的正确性相容性约束的实现.ppt》由会员分享,可在线阅读,更多相关《完整性的要求数据库中数据的正确性相容性约束的实现.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、完整性的要求数据库中数据的正确性相容性约束的实现 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望约束是基于数据变化的约束是基于数据变化的Trigger则是基于对表的操作(动作)的则是基于对表的操作(动作)的当指定的表上发生特定的操作,系统便激活当指定的表上发生特定的操作,系统便激活当指定的表上发生特定的操作,系统便激活当指定的表上发生特定的操作,系统便激活TriggerTrigger程序程序程序程序大部分大部分大部分大部分DBMSDBMS产品均支持产品均支持产品均
2、支持产品均支持TriggerTrigger触发器类型触发器类型Insert/Update/DeleteInsert/Update/DeleteBefore/AfterBefore/After举例:举例:CREATETRIGGERreminderCREATETRIGGERreminderONtitlesONtitlesFORINSERT,UPDATE,DELETEFORINSERT,UPDATE,DELETEASASEXECmaster.xp_sendmailMaryM,EXECmaster.xp_sendmailMaryM,Dontforgettoprintareportforthedistr
3、ibutors.Dontforgettoprintareportforthedistributors.GOGO触发器可以强制比用触发器可以强制比用触发器可以强制比用触发器可以强制比用 CHECKCHECK约束定义的约束更为复杂的约束定义的约束更为复杂的约束定义的约束更为复杂的约束定义的约束更为复杂的约束。约束。约束。约束。与与与与 CHECKCHECK约束不同,触发器可以引用其它表中约束不同,触发器可以引用其它表中约束不同,触发器可以引用其它表中约束不同,触发器可以引用其它表中的列。的列。的列。的列。触发器可通过数据库中的相关表实现级联更改;不过,通触发器可通过数据库中的相关表实现级联更改;不
4、过,通触发器可通过数据库中的相关表实现级联更改;不过,通触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。过级联引用完整性约束可以更有效地执行这些更改。过级联引用完整性约束可以更有效地执行这些更改。过级联引用完整性约束可以更有效地执行这些更改。触发器也可以评估数据修改前后的表状态,并根据其差异触发器也可以评估数据修改前后的表状态,并根据其差异触发器也可以评估数据修改前后的表状态,并根据其差异触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。采取对策。采取对策。采取对策。一个表中的多个同类触发器(一个表中的多个同类触发器(一个表中的多个同类
5、触发器(一个表中的多个同类触发器(INSERTINSERT、UPDATEUPDATE或或或或 DELETEDELETE)允许采取多个不同的对策以响应同一个修改语)允许采取多个不同的对策以响应同一个修改语)允许采取多个不同的对策以响应同一个修改语)允许采取多个不同的对策以响应同一个修改语句。句。句。句。激发一个外部动作激发一个外部动作激发一个外部动作激发一个外部动作触发器的用途触发器的用途 存储过程存储过程存储过程存储过程是一组为了完成特定功能的是一组为了完成特定功能的是一组为了完成特定功能的是一组为了完成特定功能的SQLSQL语语语语句集,经编译后存储在数据库中。用户通过指定句集,经编译后存储
6、在数据库中。用户通过指定句集,经编译后存储在数据库中。用户通过指定句集,经编译后存储在数据库中。用户通过指定存储过程的名称并给出参数(如果该存储过程带存储过程的名称并给出参数(如果该存储过程带存储过程的名称并给出参数(如果该存储过程带存储过程的名称并给出参数(如果该存储过程带有参数)来执行它。有参数)来执行它。有参数)来执行它。有参数)来执行它。存储过程存储过程(StoredProcedure)允许模块化程序设计允许模块化程序设计允许模块化程序设计允许模块化程序设计,含有控制语句,含有控制语句,含有控制语句,含有控制语句存储过程能够实现较快的执行速度存储过程能够实现较快的执行速度存储过程能够实
7、现较快的执行速度存储过程能够实现较快的执行速度存储过程能够减少网络流量存储过程能够减少网络流量存储过程能够减少网络流量存储过程能够减少网络流量存储过程可被作为一种安全机制来充分利用存储过程可被作为一种安全机制来充分利用存储过程可被作为一种安全机制来充分利用存储过程可被作为一种安全机制来充分利用存储过程存储过程-示例示例CreateProcedureCreateProcedureupdate_deptupdate_dept(ININold_dept_numINT,old_dept_numINT,ININnew_dept_numINT,new_dept_numINT,ININnew_dept_na
8、meChar(20),new_dept_nameChar(20),ININnew_dept_head_idINT)new_dept_head_idINT)BEGINATOMICBEGINATOMICInsertIntoDepartmentInsertIntoDepartment(dept_id,dept_name,(dept_id,dept_name,dept_head_id)dept_head_id)Values(new_dept_num,Values(new_dept_num,new_dept_name,new_dept_name,new_dept_head_id);new_dept_he
9、ad_id);UpdateemployeeUpdateemployeeSetdept_id=new_dept_numSetdept_id=new_dept_numWhereWheredept_id=old_dept_num;dept_id=old_dept_num;DeleteFromdepartmentDeleteFromdepartmentWhereWheredept_id=old_dept_num;dept_id=old_dept_num;ENDENDExecuteupdate_deptExecuteupdate_dept123,212,cs,98001123,212,cs,98001数
10、据访问接口数据访问接口交互式交互式SQL嵌入的嵌入的SQLCLI和和ODBC、JDBCOLEDB嵌入式嵌入式SQL宿主语言宿主语言宿主语言宿主语言处理复杂运算,执行复杂过程处理复杂运算,执行复杂过程处理复杂运算,执行复杂过程处理复杂运算,执行复杂过程丰富的库函数丰富的库函数丰富的库函数丰富的库函数数据库访问的困难数据库访问的困难数据库访问的困难数据库访问的困难嵌入的嵌入的嵌入的嵌入的SQLSQL方便的数据库访问方便的数据库访问方便的数据库访问方便的数据库访问事务处理能力事务处理能力事务处理能力事务处理能力上下文无关,无法处理复杂过程上下文无关,无法处理复杂过程上下文无关,无法处理复杂过程上下文
11、无关,无法处理复杂过程嵌入式嵌入式SQL处理复杂过程处理复杂过程处理复杂过程处理复杂过程宿主语言宿主语言宿主语言宿主语言访问数据库访问数据库访问数据库访问数据库嵌入的嵌入的嵌入的嵌入的SQLSQL语句语句语句语句嵌入式嵌入式SQL宿主语言与嵌入的宿主语言与嵌入的宿主语言与嵌入的宿主语言与嵌入的SQLSQL语句语句语句语句不同的体系不同的体系不同的体系不同的体系DBDB厂商提供库函数厂商提供库函数厂商提供库函数厂商提供库函数需对需对需对需对SQLSQL语句进行语句进行语句进行语句进行预编译预编译预编译预编译宿主语言的体系宿主语言的体系宿主语言的体系宿主语言的体系SQLSQL语句语句语句语句宿主语
12、言的函数调用(参数)宿主语言的函数调用(参数)宿主语言的函数调用(参数)宿主语言的函数调用(参数)统一编译统一编译统一编译统一编译目标程序目标程序目标程序目标程序嵌入式嵌入式嵌入式嵌入式SQLSQL语句语句语句语句由由由由EXECSQLEXECSQL引导、以引导、以引导、以引导、以;结尾结尾结尾结尾EXECSQLDeleteFromEXECSQLDeleteFrom学生学生学生学生;匹配失衡问题匹配失衡问题数据模型之间的匹配数据模型之间的匹配数据模型之间的匹配数据模型之间的匹配SQLSQL关系数据模型关系数据模型关系数据模型关系数据模型宿主语言宿主语言宿主语言宿主语言传统数据模型传统数据模型传
13、统数据模型传统数据模型整数、实数、指针整数、实数、指针整数、实数、指针整数、实数、指针寻找两者之间的平衡点寻找两者之间的平衡点寻找两者之间的平衡点寻找两者之间的平衡点SQLSQL数据以数据以数据以数据以单个单个单个单个元组出现元组出现元组出现元组出现避免元组的集合(组合)避免元组的集合(组合)避免元组的集合(组合)避免元组的集合(组合)SQL/宿主语言的接口变量变量变量变量储存数据的单元储存数据的单元储存数据的单元储存数据的单元SQL/SQL/宿主语言通过变量传递信息宿主语言通过变量传递信息宿主语言通过变量传递信息宿主语言通过变量传递信息共同的变量集合共同的变量集合共同的变量集合共同的变量集合
14、共享变量共享变量共享变量共享变量以传统的方式在宿主语言中使用以传统的方式在宿主语言中使用以传统的方式在宿主语言中使用以传统的方式在宿主语言中使用在在在在SQLSQL语句中使用(以语句中使用(以语句中使用(以语句中使用(以:作前缀)作前缀)作前缀)作前缀)变量的声明变量的声明宿主变量宿主变量宿主变量宿主变量仅用于宿主语言的语句中仅用于宿主语言的语句中仅用于宿主语言的语句中仅用于宿主语言的语句中共享变量共享变量共享变量共享变量可在宿主语言、嵌入的可在宿主语言、嵌入的可在宿主语言、嵌入的可在宿主语言、嵌入的SQLSQL语句中使用语句中使用语句中使用语句中使用共享变量声明段共享变量声明段共享变量声明段
15、共享变量声明段变量的声明变量的声明inti=2,j=3;inti=2,j=3;EXECSQLBEGINDECLARESECTION;EXECSQLBEGINDECLARESECTION;charchar学号学号学号学号8,8,姓名姓名姓名姓名20;20;charchar所在系所在系所在系所在系6;6;EXECSQLENDDECLARESECTION;EXECSQLENDDECLARESECTION;使用共享变量使用共享变量嵌入式嵌入式嵌入式嵌入式SQLSQL中,以共享变量替代具体的值中,以共享变量替代具体的值中,以共享变量替代具体的值中,以共享变量替代具体的值在运行时获得变量的值在运行时获得变
16、量的值在运行时获得变量的值在运行时获得变量的值使用共享变量使用共享变量UpdateUpdate、InsertInsert中直接使用,替代值中直接使用,替代值中直接使用,替代值中直接使用,替代值EXECSQLUpdateEXECSQLUpdate学生学生学生学生 SetSet所在系所在系所在系所在系=:=:所在系所在系所在系所在系WhereWhere姓名姓名姓名姓名=:=:姓名姓名姓名姓名;在在在在Select-From-WhereSelect-From-Where中需注意中需注意中需注意中需注意单元组单元组单元组单元组多元组:引入多元组:引入多元组:引入多元组:引入游标游标游标游标(Curso
17、r)Cursor),逐行处理逐行处理逐行处理逐行处理单元组查询语句单元组查询语句只返回一个元组的只返回一个元组的只返回一个元组的只返回一个元组的Select-From-WhereSelect-From-Where语句语句语句语句Select-Into-From-WhereSelect-Into-From-WhereEXECSQLSelectEXECSQLSelect学号学号学号学号Into:Into:学号学号学号学号FromFrom学生学生学生学生WhereWhere姓名姓名姓名姓名=:=:姓名姓名姓名姓名;注意返回值的状态判定注意返回值的状态判定注意返回值的状态判定注意返回值的状态判定游标游
18、标CursorCursorCursor是系统为用户开设的一个数据缓冲区,是系统为用户开设的一个数据缓冲区,是系统为用户开设的一个数据缓冲区,是系统为用户开设的一个数据缓冲区,存放存放存放存放SQLSQL语句的执行结果语句的执行结果语句的执行结果语句的执行结果用户可以逐行读取(处理)用户可以逐行读取(处理)用户可以逐行读取(处理)用户可以逐行读取(处理)SelectSelect结果集中的结果集中的结果集中的结果集中的数据数据数据数据CursorresultSetCursorresultSetCursorPositionCursorPosition动态动态SQL语句可变语句可变条件可变条件可变数据
19、库对象、查询条件均可变数据库对象、查询条件均可变SQL中的事务中的事务是构成单一逻辑工作单元的操作集合是构成单一逻辑工作单元的操作集合事务管理器事务管理器事务恢复机制事务恢复机制并发调度机制并发调度机制事务的性质事务的性质ACID原子性:原子性:事务是原子的,要么都做,要么都不做事务是原子的,要么都做,要么都不做一致性:一致性:保证数据库的一致性保证数据库的一致性从一个一致状态从一个一致状态另一个一致状态另一个一致状态隔离性:隔离性:事务相互隔离事务相互隔离持久性持久性一旦事务提交成功,更新则将永久有效一旦事务提交成功,更新则将永久有效SQL中的事务中的事务事务的结束事务的结束提交提交提交提交
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整性 要求 数据库 数据 正确性 相容性 约束 实现
限制150内