好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

实现数据完整性约束.pptx

36页
  • 卖家[上传人]:桔****
  • 文档编号:604630897
  • 上传时间:2025-05-19
  • 文档格式:PPTX
  • 文档大小:235.41KB
  • / 36 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2013-11-19,#,数据库技术与应用,袁宝库,实现数据完整性约束,数据完整性基本概念,实现声明完整性,实现过程完整性,数据完整性基本概念,数据的完整性是为了防止数据库中存在不符合语义的数据这些加在数据库数据之上的语义约束条件就是数据完整性约束条件这些约束条件作为表定义的一部分存储在数据库中DBMS,检查数据是否满足完整性条件的机制就称为完整性检查完整性约束条件的作用对象,列级约束,对数据类型的约束,对数据格式的约束,对取值范围或取值集合的约束,对空值的约束,元组约束,元组中各个字段之间的联系的约束,如:开始日期小于结束日期关系约束,是若干元组之间、关系之间的联系的约束实现数据完整性的方法,一种是在定义表时声明数据完整性,称为声明完整性,,另一种是在服务器端编写触发器来实现,称为过程完整性在执行对数据的增、删、改操作时,数据库管理系统自动检查用户定义的完整性约束条件实现声明完整性,主码约束,每个表只能有一个,PRIMARY KEY,约束;,用,PRIMARY KEY,约束的列取值不能有重复,而且不允许有空值;,添加主码约束的语法格式:,ALTER TABLE,表名,ADD CONSTRAINT,约束名,PRIMARY KEY,(,n,),实现声明完整性,例:对雇员表和工作表添加主码约束,ALTER TABLE,雇员表,ADD CONSTRAINT PK_EMP,PRIMARY KEY,(雇员编号),ALTER TABLE,工作表,ADD CONSTRAINT PK_JOB,PRIMARY KEY,(工作编号),UNIQUE,约束,用于限制在一个列中不能有重复的值。

      用在事实上具有惟一性的属性列上,比如每个人的身份证号码、驾驶证号码等均不能有重复值注意:,允许有一个空值;,在一个表中可以定义多个,UNIQUE,约束;,可以在一个列或多个列上定义,UNIQUE,约束添加,UNIQUE,约束,添加,UNIQUE,约束的语法格式为:,ALTER TABLE,表名,ADD CONSTRAINT,约束名,UNIQUE,(,n,),例为雇员表的“”列添加,UNIQUE,约束ALTER TABLE,雇员表,ADD CONSTRAINT UK_SID,UNIQUE,(),外码约束,实现引用完整性外码所引用的列必须是有,PRIMARY KEY,约束或,UNIQUE,约束的列添加,FOREIGN KEY,约束的语法格式为:,ALTER TABLE,表名,ADD CONSTRAINT,约束名,FOREIGN KEY,(,),REFERENCES,引用表名(,),示例,例为雇员表的工作编号添加外码引用约束ALTER TABLE,雇员,ADD CONSTRAINT FK_job_id,FOREIGN KEY,(工作编号),REFERENCES,工作表(工作编号),DEFAULT,约束,用于提供列的默认值。

      只有在向表中插入数据时才检查,DEFAULT,约束添加,DEFAULT,约束的语法格式为:,ALTER TABLE,表名,ADD CONSTRAINT,约束名,DEFAULT,默认值,FOR,列名,例定义雇员表的工资的默认值为,1000,ALTER TABLE,雇员,ADD CONSTRAINT DF_SALARY,DEFAULT 1000 FOR,工资,CHECK,约束,用于限制列的取值在指定的范围内,使数据库中存放的值都是有意义的系统在执行,INSERT,语句和,UPDATE,语句时自动检查,CHECK,约束CHECK,约束可约束同一个表中多个列之间的取值关系添加,CHECK,约束的语法格式为:,ALTER TABLE,表名,ADD CONSTRAINT,约束名,CHECK,(逻辑表达式),示例,限制雇员的工资必须大于等于,200,ALTER TABLE,雇员,ADD CONSTRAINT CHK_Salary,CHECK(,工资,=200),限制工资表的最低工资小于等于最高工资ALTER TABLE,工作,ADD CONSTRAINT CHK_Job_Salary,CHECK(,最低工资,=,最高工资,),实现过程完整性,过程完整性是指在服务器端通过编写实现约束的一段代码来实现数据完整性约束,这段代码就称为触发器。

      触发器是用编程的方法实现复杂的商业规则,它可以实现一般的数据完整性约束实现不了的复杂的完整性约束事务的基本概念,事务,事务的特征,SQL,事务处理模型,事务,事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行例如:对于一个转帐活动:,A,帐户转帐给,B,帐户,n,元钱,这个活动包含两个动作:,第一个动作:,A,帐户,n,第二个动作:,B,帐户,n,事务的特征,原子性,(,Atomicity,):指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做一致性,(,Consistency,):指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态隔离性,(,Isolation,):指数据库中一个事务的执行不能被其它事务干扰持久性,(,Durability,):也称为永久性指事务一旦提交,则其对数据库中数据的改变就是永久的事务的特征,保证事务的,ACID,特性是事务处理的重要任务事务的,ACID,特性可能遭到破坏的因素有:,多个事务并行运行时,不同事务的操作有交叉情况;,事务在运行过程中被强迫停止SQL,事务处理模型,隐式事务,:隐式事务是每一条数据操作语句都自动地成为一个事务。

      显式事务,:有显式的开始和结束标记的事务ISO,事务处理模型,T-SQL,事务处理模型,ISO,事务处理模型,明尾暗头,事务的开头是隐含的,事务的结束有明确标记,A,事务结束符,COMMIT,:事务成功结束符,,ROLLBACK,:事务失败结束符,,B,事务提交方式,自动提交:每条,SQL,语句为一个事务,指定位置提交:在事务结束符或程序正常结束处提交,ISO,事务处理模型,明尾暗头,事务的开头是隐含的,事务的结束有明确标记,C,事务起始,/,终止位置,程序的首条,SQL,语句或事务结束符后的语句在程序正常结束处或,COMMIT,语句处成功终止;,在程序出错处或或,ROLLBACK,处失败终止示例,UPDATE,支付表,SET,帐户总额 帐户总额,n,WHERE,帐户名 ,A,UPDATE,支付表,SET,帐户总额 帐户总额,n,WHERE,帐户名 ,B,COMMIT,T-SQL,事务处理模型,每个事务都有显式的开始和结束标记事务的开始标记是:,BEGIN TRANSACTION|TRAN,事务的结束标记为:,COMMIT,TRANSACTION,TRAN,ROLLBACK,TRANSACTION,TRAN,示例,例如前边的转帐例子用,Transact-SQL,事务处理模型描述为:,BEGIN TRANSACTION,UPDATE,支付表,SET,帐户总额 帐户总额,n,WHERE,帐户名 ,A,UPDATE,支付表,SET,帐户总额 帐户总额,n,WHERE,帐户名 ,B,COMMIT,触发器,是一种特殊的存储过程,,不需要由用户调用执行,而是当用户对表中的数据进行,UPDATE,、,INSERT,或,DELETE,操作时自动触发执行的。

      触发器通常用于保证业务规则和数据完整性,其主要优点是用户可以用编程的方法来实现复杂的处理逻辑和商业规则,增强了数据完整性约束的功能触发器的优点,完成比,CHECK,约束更复杂的数据约束为保证数据库性能而维护的非规范化数据可实现复杂的商业规则触发器也可以评估数据修改前后的表状态,并根据其差异采取对策创建触发器,语法格式:,CREATE TRIGGER,触发器名称,ON,表名,FOR|AFTER|INSTEAD OF,INSERT ,DELETE ,UPDATE ,AS,SQL,语句,.n,两个逻辑工作表,DELETED,表存储,DELETE,和,UPDATE,语句所影响的行的副本INSERTED,表存储,INSERT,和,UPDATE,语句所影响的行的副本示例,创建限制最低工资必须大于等于,400,的触发器CREATE TRIGGER tri_job_salary1,ON,工作表,FOR INSERT,UPDATE,AS,IF EXISTS(SELECT*FROM INSERTED,WHERE,最低工资,=,最高工资,),BEGIN,PRINT,最低工资必须小于最高工资,ROLLBACK,END,示例,创建实现限制雇员的工资必须在工作表的相应工作的最低工资和最高工资之间。

      CREATE TRIGGER tri_emp_salary,ON,雇员表,FOR INSERT,UPDATE,AS,IF EXISTS(SELECT*FROM INSERTED a,JOIN,工作表,b ON a.,工作编号,=b.,工作编号,WHERE,工资,NOT BETWEEN,最低工资,AND,最高工资,),ROLLBACK,限制更新数据的触发器,限制将,SC,表中不及格学生的成绩改为及格CREATE TRIGGER tri_grade,ON SC FOR UPDATE,AS,IF UPDATE(Grade),IF EXISTS(SELECT*FROM INSERTED JOIN,DELETED ON INSERTED.Sno=DELETED.Sno,WHERE INSERTED.Grade=60,AND DELETED.Grade 60),ROLLBACK,限制删除的触发器,限制删除,SC,表中成绩不及格学生的修课记录CREATE TRIGGER tri_del_grade,ON SC FOR DELETE,AS,IF EXISTS(SELECT*FROM DELETED,WHERE Grade 60),ROLLBACK,修改触发器定义,语法格式为:,ALTER TRIGGER,触发器名称,ON,表名,FOR|AFTER|INSTEAD OF,INSERT ,DELETE ,UPDATE ,AS,SQL,语句,.n,删除触发器,语法格式为:,DROP TRIGGER,触发器名,.,n,例:删除,tri_grade,触发器。

      DROP TRIGGER tri_grade,。

      点击阅读更多内容
      相关文档
      【全国硕士研究生入学统一考试政治】2020年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2015年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2010年考研政治真题.docx 【全国硕士研究生入学统一考试政治】1996年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2001年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2016年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2000年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(理科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2007年考研政治真题.doc 【全国硕士研究生入学统一考试政治】1997年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2004年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2003年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2019年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2009年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2001年政治考研真题(文科)及参考答案.doc 【全国硕士研究生入学统一考试政治】2021年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2014年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2018年考研政治真题.docx 【全国硕士研究生入学统一考试政治】2008年考研政治真题.doc 【全国硕士研究生入学统一考试政治】2011年考研政治真题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.