欢迎来到天天文库
浏览记录
ID:52120355
大小:845.50 KB
页数:28页
时间:2020-04-01
《实现数据完整性约束.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库原理与应用高等院校计算机教材系列第6章实现数据完整性约束6.1数据完整性基本概念6.2实现声明完整性6.3实现过程完整性6.1数据完整性基本概念数据的完整性是为了防止数据库中存在不符合语义的数据。这些加在数据库数据之上的语义约束条件就是数据完整性约束条件。这些约束条件作为表定义的一部分存储在数据库中。DBMS检查数据是否满足完整性条件的机制就称为完整性检查。6.1.1完整性约束条件的作用对象列级约束对数据类型的约束对数据格式的约束对取值范围或取值集合的约束对空值的约束元组约束元组中各个字段之间的联系的约束,如:开始日期小于结束日期。关系约束是若干元组之间、关系之间的联系的约束。6
2、.1.2实现数据完整性的方法一种是在定义表时声明数据完整性,称为声明完整性,另一种是在服务器端编写触发器来实现,称为过程完整性。在执行对数据的增、删、改操作时,数据库管理系统自动检查用户定义的完整性约束条件。6.2实现声明完整性1.主码约束每个表只能有一个PRIMARYKEY约束;用PRIMARYKEY约束的列取值不能有重复,而且不允许有空值;添加主码约束的语法格式:ALTERTABLE表名ADD[CONSTRAINT约束名]PRIMARYKEY(<列名>[,…n])例:对雇员表和工作表添加主码约束ALTERTABLE雇员表ADDCONSTRAINTPK_EMPPRIMARYKEY(雇
3、员编号)ALTERTABLE工作表ADDCONSTRAINTPK_JOBPRIMARYKEY(工作编号)2.UNIQUE约束用于限制在一个列中不能有重复的值。用在事实上具有惟一性的属性列上,比如每个人的身份证号码、驾驶证号码等均不能有重复值。注意:允许有一个空值;在一个表中可以定义多个UNIQUE约束;可以在一个列或多个列上定义UNIQUE约束。添加UNIQUE约束添加UNIQUE约束的语法格式为:ALTERTABLE表名ADD[CONSTRAINT约束名]UNIQUE(<列名>[,…n])例.为雇员表的“电话”列添加UNIQUE约束。ALTERTABLE雇员表ADDCONSTRAIN
4、TUK_SIDUNIQUE(电话)3.外码约束实现引用完整性。外码所引用的列必须是有PRIMARYKEY约束或UNIQUE约束的列。添加FOREIGNKEY约束的语法格式为:ALTERTABLE表名ADD[CONSTRAINT约束名]FOREIGNKEY(<列名>)REFERENCES引用表名(<列名>)示例例.为雇员表的工作编号添加外码引用约束。ALTERTABLE雇员ADDCONSTRAINTFK_job_idFOREIGNKEY(工作编号)REFERENCES工作表(工作编号)4.DEFAULT约束用于提供列的默认值。只有在向表中插入数据时才检查DEFAULT约束。添加DEFAU
5、LT约束的语法格式为:ALTERTABLE表名ADD[CONSTRAINT约束名]DEFAULT默认值FOR列名例.定义雇员表的工资的默认值为1000。ALTERTABLE雇员ADDCONSTRAINTDF_SALARYDEFAULT1000FOR工资CHECK约束用于限制列的取值在指定的范围内,使数据库中存放的值都是有意义的。系统在执行INSERT语句和UPDATE语句时自动检查CHECK约束。CHECK约束可约束同一个表中多个列之间的取值关系。添加CHECK约束的语法格式为:ALTERTABLE表名ADD[CONSTRAINT约束名]CHECK(逻辑表达式)示例例1.限制雇员的工资
6、必须大于等于200。ALTERTABLE雇员ADDCONSTRAINTCHK_SalaryCHECK(工资>=200)例2.限制工资表的最低工资小于等于最高工资。ALTERTABLE工作ADDCONSTRAINTCHK_Job_SalaryCHECK(最低工资<=最高工资)6.3实现过程完整性过程完整性是指在服务器端通过编写实现约束的一段代码来实现数据完整性约束,这段代码就称为触发器。触发器是用编程的方法实现复杂的商业规则,它可以实现一般的数据完整性约束实现不了的复杂的完整性约束。6.3.1事务基本概念事务(Transaction)是作为完整的工作单元执行的一系列操作。如果一个事务中的
7、所有操作都成功,则事务成功,其对数据库的更改都会成为永久性的更改。如果事务中的任何一个操作失败,则整个事务失败,其中所完成的操作均被取消,所有对数据的更改均无效。事务的三种类型自动提交事务每一条对数据的增、删、改语句都自动地构成了一个事务。显式事务是用户定义的事务,有显式的开始(BEGINTRANSACTION)和结束标记(COMMIT(正常结束)和ROLLBACK(异常结束))。隐式事务事务的开始是隐式的,以前一个事务结束后的第一个SQL语句
此文档下载收益归作者所有