数据库课件5db数据库性.ppt
- 文档编号:18851510
- 上传时间:2024-01-30
- 格式:PPT
- 页数:27
- 大小:88KB
数据库课件5db数据库性.ppt
《数据库课件5db数据库性.ppt》由会员分享,可在线阅读,更多相关《数据库课件5db数据库性.ppt(27页珍藏版)》请在冰点文库上搜索。
第五章数据库完整性,第5章数据库完整性,数据库的完整性是指数据的正确性和相容性。
为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。
这些加在数据库数据之上的语义约束条件称为数据库完整性约束条件,它们作为模式的一部分存入数据库中。
DBMS中检查数据是否满足完整性条件的机制称为完整性检查。
完整性控制,DBMS的完整性控制机制应具有三方面的功能:
定义功能:
提供定义完整性约束条件的机制。
检查功能:
检查用户发出的操作请求是否违背了完整性约束条件。
处理违约:
如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
5.1实体完整性,实体完整性的定义例:
将Student表中的Sno属性定义为码CREATETABLEstudent(snochar(10)PRIMARYKEY,snamenvarchar(50)NOTNULL,ssexnchar(10),sagesmallint,sdeptchar(20),实体完整性,实体完整性检查和违约处理检查主码值是否唯一,如果不唯一则拒绝插入或修改。
检查主码的各个属性是否为空,只要有一个为空则拒绝插入或修改。
RDBMS核心一般都在主码上自动建立一个索引。
通过索引查找基本表中是否已经存在新的主码值,以提高效率。
5.2参照完整性,参照完整性的定义例:
定义SC表中的参照完整性CREATETABLEsc(snochar(10)NOTNULL,cnochar(4)NOTNULL,gradeSMALLINT,PRIMARYKEY(sno,cno),FOREIGNKEY(sno)REFERENCESStudent(Sno),FOREIGNKEY(cno)REFERENCESCourse(Cno),参照完整性,参照完整性检查和违约处理,参照完整性,违约处理拒绝执行:
默认策略级连操作:
删除或修改参照表中的所有造成不一致的元组。
设置空值:
将参照表中的所有造成不一致的元组的对应属性设置为空值。
(MYSQL支持,SQLSERVER不支持),CREATETABLECourse(CnoCHAR(4)PRIMARYKEY,CnameCHAR(40),CpnoCHAR(4),CcreditSMALLINT,TeachNamechar(10),FOREIGNKEY(Cpno)REFERENCESCourse(Cno)ONDELETESETNULL);,参照完整性,例:
显式说明参照完整性的违约处理CREATETABLEsc(snochar(10)NOTNULL,cnochar(4)NOTNULL,gradeSMALLINT,PRIMARYKEY(sno,cno),FOREIGNKEY(sno)REFERENCESStudent(Sno)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(cno)REFERENCESCourse(Cno)ONDELETENOACTIONONUPDATECASCADE),5.3用户定义的完整性,属性上的约束条件的定义列值非空(NOTNULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK)属性上的约束条件检查和违约处理当往表中插入元组或修改属性的值时,RDMBS就检查属性上的约束条件是否被满足,如果不满足则操作被拒绝执行。
用户定义的完整性,元组上的约束条件的定义CREATETABLETEACHER(enoNUMERIC(4)PRIMARYKEY,enameCHAR(10),salNUMERIC(7,2),deductNUMERIC(7,2),CONSTRAINTC_TEA1CHECK(sal+deduct=3000);,5.4完整性约束命名子句,完整性约束命名子句CONSTRAINTPRIMARYKEY短语|FOREIGNKEY短语|CHECK短语,完整性约束命名子句,例1:
CREATETABLEstudent(snochar(10),snamevarchar(50)CONSTRAINTCstu2NOTNULL,ssexnchar(10)CONSTRAINTCstu3CHECK(ssexIN(男,女),sagesmallintCONSTRAINTCstu4CHECK(sageisNULL)OR(sageBETWEEN15AND60),sdeptchar(20)CONSTRAINTC_studentkeyPRIMARYKEY(SNO),完整性约束命名子句,例2:
CREATETABLETEACHER(enoNUMERIC(4)PRIMARYKEY,enameCHAR(10),jobCHAR(8),salNUMERIC(7,2),deductNUMERIC(7,2),deptnoNUMERIC
(2),CONSTRAINTC_TEA1CHECK(sal+deduct=3000),完整性约束命名子句,修改表中的完整性限制altertablescaddconstraintc_sc1check(gradebetween0and100)Altertablescdropconstraintc_sc1(SQLSERVER)AltertablescdropFOREIGNKEYc_sc1(MYSQL),这些完整性规则足够吗?
5.6触发器,触发器是用户定义在关系表上的一类由事件驱动的特殊过程。
触发器可以看作是一类特殊的存储过程,它在满足某个特定条件时自动触发执行。
触发器是为表上的更新、插入、删除操作定义的,也就是说当表上发生更新、插入或删除操作时触发器将执行。
触发器的作用,*安全性。
可以基于数据库的值使用户具有操作数据库的某种权利。
#可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据。
#可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%。
*审计。
可以跟踪用户对数据库的操作。
*实现复杂的数据完整性规则。
#如,触发器可回退任何企图吃进超过自己保证金的期货。
#在修改或删除时级联修改或删除其它表中的与之匹配的行。
触发器的作用,#在修改或删除时把其它表中的与之匹配的行设成NULL值。
#在修改或删除时把其它表中的与之匹配的行级联设成缺省值。
*同步实时地复制表中的数据。
*自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。
例如,如果公司的帐号上的资金低于5万元则立即给财务人员发送警告数据。
SQLServer中触发器的使用,1)AFTER触发器:
将在数据变动(INSERT、UPDATE和DELETE操作)完成后才被激发。
对变动数据进行检查,如果发现错误,将拒绝或回滚变动的数据。
(2)INSTEADOF触发器:
将在数据变动以前被激发。
并取代变动数据(INSERT、UPDATE和DELETE操作)的操作,转而去执行触发器定义的操作,触发器,CREATETRIGGERtrigger_nameONtable|viewWITHENCRYPTIONFOR|AFTER|INSTEADOFINSERT,UPDATEWITHAPPENDNOTFORREPLICATIONASIFUPDATE(column)AND|ORUPDATE(column).n|IF(COLUMNS_UPDATED()bitwise_operatorupdated_bitmask)comparison_operatorcolumn_bitmask.nsql_statement.n,两个特殊的表:
Inserted表和Deleted表Deleted表:
存放被删除的记录,存储在高速缓存中,不能修改里面的数据Inserted表:
存放增加的记录,存储在高速缓存中,不能修改里面的数据,SQLServer中触发器的使用,Inserted逻辑表,在学生表中建立插入触发器tr_InsertS,该触发器在往学生表中增加记录时触发,将往成绩表中增加该同学选修课程的记录,每位学生必修两门课程:
数学
(2)、英语(9)CREATETRIGGERtr_InsertSONstudentFORINSERTASdeclaresnochar(10)selectsno=snofromInsertedInsertintoSC(sno,cno)values(sno,2);InsertintoScore(sno,cno)values(sno,9);,Deleted逻辑表,在学生表中建立删除触发器tr_deleteS,该触发器在删除学生表中的记录时触发,将从与选课表中相应学生记录删除。
createtriggertr_deleteSonstudentafterdeleteasdeletefromscwheresnoin(selectsnofromdeleted),Mysql中触发器的使用,CREATETRIGGERBEFORE|AFTERINSERT|UPDATE|DELETEONFOREACHROW,触发器自动激活一个表上只能建一个Insert、Delete触发器删除了触发器不会对表有影响,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课件 db