欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第7章_数据库安全保护.ppt

    • 资源ID:67337812       资源大小:4.08MB        全文页数:180页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第7章_数据库安全保护.ppt

    第第7章章 数据库安全保护数据库安全保护第第7 7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7 7章章 数据库安全保护数据库安全保护第第7章章 数据库的安全保护数据库的安全保护 第第7章章 数据库安全保护数据库安全保护 第第7 7章章 数据库安全保护数据库安全保护7.1数据库的数据库的安全性控制安全性控制7.2数据库的数据库的完整性控制完整性控制7.3并发控制并发控制与封锁与封锁7.4数据库的数据库的恢复恢复 第第7章章 数据库安全保护数据库安全保护 第第7 7章章 数据库安全保护数据库安全保护7.17.1.1数据库安全性的含义数据库安全性的含义&7.1.2安全性控制的一般方法安全性控制的一般方法&7.1.1数据库安全性的含义数据库安全性的含义 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护7.1.2 安全性控制的一般方法安全性控制的一般方法7.1.2 安全性控制的一般方法安全性控制的一般方法 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护7.1.2 安全性控制的一般方法安全性控制的一般方法 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7 7章章 数据库安全保护数据库安全保护系统提供系统提供的的最外层最外层安全保护措施安全保护措施 系统系统提供提供一定的方式一定的方式让用户让用户标识标识自己的名字或身份自己的名字或身份;系统内部系统内部记录记录着所有合法用户的标识;着所有合法用户的标识;每次每次用户用户要求要求进入系统时进入系统时,由,由系统系统核对核对用户提供的身份标识;用户提供的身份标识;通过通过鉴定后鉴定后才提供才提供机器使用权机器使用权。用户标识和鉴定可以重复多次用户标识和鉴定可以重复多次基本方法基本方法:用户标识自己的名字或身份的方法用户标识自己的名字或身份的方法:用一个用一个用户名用户名或或用户标识符用户标识符来标明用户的身份来标明用户的身份 用户名用户名与与口令口令 通过通过回答回答对对随机数的随机数的运算结果运算结果表明用户身份表明用户身份 第第7章章 数据库安全保护数据库安全保护 DBMS规定规定用户想要操作用户想要操作DB中的数据,中的数据,必须拥有必须拥有相应的存取权限相应的存取权限。存存 取权限取权限由由数据对象和操作类型两个要素数据对象和操作类型两个要素组成组成。定义一个用户的存取权限定义一个用户的存取权限 就是就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数在数 据库系统中,定义用户存取权限据库系统中,定义用户存取权限称为称为授权授权。&DBMS将将授权结果授权结果以一以一张授权张授权表表(授权表主要有三个属性,授权表主要有三个属性,用户标识用户标识、数数 据对象据对象和和操作类型操作类型)的形式的形式存放在数据字典存放在数据字典中中。当用户当用户提出操作请求时提出操作请求时,DBMS会根据会根据数据字典数据字典中保存的授权信息,判中保存的授权信息,判 断用户是否有权对相应对象进行操作,若无权则断用户是否有权对相应对象进行操作,若无权则拒绝执行拒绝执行操作。操作。是数据库是数据库系统最主要的系统最主要的安全保护措施安全保护措施 第第7章章 数据库安全保护数据库安全保护n授权授权(Authorization)类型类型nDB对象权限:对象权限:由由DBA或对象创建者授予。或对象创建者授予。n角色权限:角色权限:由由DBA授予授予n数据库数据库对象对象授授/撤权撤权n授权授权:GRANT,.ON对象名对象名TO,.WITHGRANTOPTIONn撤权撤权:REVOKE,.ON对象名对象名FROM,.;对对象象对象类型对象类型操作权限操作权限列列TABLESelect,Insert,Update,DeleteAllPRIVILEGES(四种权限的总和)(四种权限的总和)视图视图TABLESelect,Insert,Update,DeleteAllPRIVILEGES(四种权限的总和)(四种权限的总和)基本表基本表TABLESelect,Insert,Update,Delete,Alter,Index,AllPRIVILEGES(六种权限的总和)(六种权限的总和)数据库数据库DATABASECREATETAB建立表的权限,可由建立表的权限,可由DBA授予普通用户授予普通用户不同的操作对象不同的操作对象有有不同的操作权限不同的操作权限例:例:把对把对SC表和表和Course表的全部权限授予用户表的全部权限授予用户U2和和U3GRANTALLPRIVILIGESONTABLESC,CourseTOU2,U3;例:例:把对表把对表SC的查询权限授予所有用户的查询权限授予所有用户GRANTSELECTONTABLESCTOPUBLIC;例:例:把查询把查询Student表和修改学生学号的权限授给用户表和修改学生学号的权限授给用户U4GRANTUPDATE(Sno),SELECTONTABLEStudentTOU4;例:例:DBA把数据库把数据库SPJ中建立表的权限赋给用户中建立表的权限赋给用户User1GRANTCREATETABONDATABASESPJTOUser1;例:例:把用户把用户U6修改学生学号的权限收回修改学生学号的权限收回REVOKEUPDATE(Sno)ONTABLEStudentFROMU6;第第7章章 数据库安全保护数据库安全保护n角色角色创建创建:CREATEROLE角色名角色名角色角色是是权限的集合权限的集合,可以为一组具有相同权限的用户创建一个,可以为一组具有相同权限的用户创建一个角色,用角色来管理数据库权限可以简化授权的过程角色,用角色来管理数据库权限可以简化授权的过程n将将一角色一角色授予授予其它其它用户用户或或角色角色:GRANT,.TO,.WITHADMINOPTIONn角色角色授授/撤撤权权n授权授权:GRANT,.ONTO,.n撤权撤权:REVOKE,.ON对象名对象名FROM,.;例:例:将表将表S的查询、修改、插入、删除的权限授予用户张平、李梅、的查询、修改、插入、删除的权限授予用户张平、李梅、王灵、黄海王灵、黄海CREATEROLER1;GRANTSelect,Insert,Update,DeleteONTABLESTOR1;GRANTR1TO张平、李梅、王灵、黄海张平、李梅、王灵、黄海;例:例:将上例将上例R1角色修改为只有查询的权力角色修改为只有查询的权力REVOKEInsert,Update,DeleteONTABLESFROMR1;第第7章章 数据库安全保护数据库安全保护用户名用户名数据对象名数据对象名允许的操作类型允许的操作类型刘勇刘勇关系关系BookSelect张伟张伟关系关系BookAll张伟张伟关系关系ReaderAll张伟张伟关系关系BorrowUpdate丁钰丁钰关系关系BorrowSelect丁钰丁钰关系关系BorrowInsert表表7-1 一个授权表的实例一个授权表的实例 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护 第第7 7章章 数据库安全保护数据库安全保护7.2 完整性控制完整性控制7.2.1数据完整性含义数据完整性含义&7.2.2数据库完整性的实现数据库完整性的实现&7.2.触发器触发器&第第7章章 数据库安全保护数据库安全保护7.2.1 数据完整性含义数据完整性含义 第第7章章 数据库安全保护数据库安全保护 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则为了为了维护维护数据库数据库数据数据的完整性的完整性,DBMSDBMS必须能够必须能够:提供提供定义定义完整性约束条件完整性约束条件的机制的机制提供提供完整性检查完整性检查的方法的方法违约处理违约处理 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则7.2.2数据的完整性的实现:数据的完整性的实现:提供定义完整性约束条件提供定义完整性约束条件提供完整性检查的方法提供完整性检查的方法违约处理违约处理 完整性约束条件完整性约束条件也称也称完整性规则,完整性规则,它是它是数据库数据库中数据必须满足的语意约束条件中数据必须满足的语意约束条件 SQL中中主要用定义主要用定义实体实体完整性完整性、参照参照完整性完整性、用户用户定义完整性定义完整性、触发器触发器来来维护数据库中维护数据库中的的数据数据完整性完整性的。的。实体实体完整性完整性:PRIMARYKEY 参照参照完整性完整性:FOREIGNKEYREFERENCES 用户定义用户定义完整性完整性:NOTNULLUNIQUEDEFAULTCHECK 触发器触发器:用户定义用户定义的的SQLSQL事务事务命令命令的的集合集合,当对当对一个表一个表进行插入、更改、删除时这组命进行插入、更改、删除时这组命令就自动执行的程序令就自动执行的程序 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则提供定义完整性约束条件提供定义完整性约束条件提供完整性检查的方法提供完整性检查的方法违约处理违约处理 完整性检擦的完整性检擦的方法是方法是:在:在对表对表进行进行如下操作时如下操作时开始检查开始检查INSERTUPDATEDELETE也可以也可以在在事务结束后事务结束后检查检查,检,检查这些查这些操作执行后操作执行后数据数据是否是否违违背了背了完整性约束条件,结果真完整性约束条件,结果真确才提交确才提交7.2.2数据的完整性的实现:数据的完整性的实现:第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则提供定义完整性约束条件提供定义完整性约束条件提供完整性检查的方法提供完整性检查的方法违约处理违约处理 违约处理违约处理:指指若发现操作违背了完整性若发现操作违背了完整性约束,所进行的处理约束,所进行的处理 违约处理的违约处理的方法:方法:违背约束,违背约束,拒绝执行(拒绝执行(其是系统默认的其是系统默认的违约处理方法违约处理方法)若若破坏破坏参照完整性参照完整性,可采用可采用处理方法处理方法:拒绝拒绝级联删除级联删除级联修改级联修改设置为空设置为空 因此定义参照完整性时除了定义外码外还要因此定义参照完整性时除了定义外码外还要 定义外码是否为空定义外码是否为空7.2.2数据的完整性的实现:数据的完整性的实现:第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则 为为完整性约束完整性约束命名命名语句语句格式格式:CONSTRAINT约束名约束名 约束类型约束类型 增加增加约束约束语句格式语句格式:ALTER TABLE 表名表名ADD CONSTRAINT约束名约束类型约束名约束类型 删除删除约束语句格式约束语句格式:ALTER TABLE 表名表名DROP CONSTRAINT约束名约束名例例:ALTER TABLE S ADD CONSTRAINTs_p(check(sex in(男男,女女)例例:DROP CONSTRAINT s_p 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则 实体实体完整性完整性定义定义格式格式:第一种方法:第一种方法:在在列定义列定义后跟后跟:CONSTRAINT约束名约束名PRIMARYKEY;第二种方法:第二种方法:在在表表级级定义定义:CONSTRAINT约束名约束名PRIMARYKEY(属性列表属性列表)其中其中:候选码候选码有有多个时多个时只能在表上定义只能在表上定义 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则 参照完整性参照完整性定义格式:定义格式:CONSTRAINT 约束名约束名 FOREIGNKEY(属性列表属性列表)REFERENCES表名表名(列名列名)ONDELETEONUPDATE第一种方法:在第一种方法:在列定义列定义后跟后跟CONSTRAINT约束名约束名FOREIGNKEYREFERENCES表名表名(列名列名)第二种方法:在第二种方法:在表级定义表级定义:其中:其中:ONDELETE:说明当被参照关系某元组被删除说明当被参照关系某元组被删除时,参照关系中相应元组应级联删除或限制删除时,参照关系中相应元组应级联删除或限制删除ONUPDATE:说明当被参照关系某元组被更新说明当被参照关系某元组被更新时,参照关系中相应元组应级联时,参照关系中相应元组应级联更新更新或限制删除或限制删除 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则 用户定义完整性用户定义完整性定义格式:定义格式:第一种方法:第一种方法:在在列定义列定义后跟:后跟:CONSTRAINT 约束名约束名 约束类型;约束类型;第二种方法:第二种方法:在在表级定义表级定义:CONSTRAINT约束名约束名 约束类型及相应的约束约束类型及相应的约束 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则例:实体完整性检查举例:例:实体完整性检查举例:CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20),SsexCHAR(2),SageSMALLINT,SdeptCHAR(20);定义定义:实体完整性实体完整性检查检查的的违约处理违约处理:当对当对表表插入插入或或更新更新时,时,RDBMS将将按照实体完整规则按照实体完整规则自动检查自动检查 检查检查主码主码是否为空是否为空,只要有一个为空就拒绝插入或修改,只要有一个为空就拒绝插入或修改 检查主码检查主码是否唯一是否唯一,如果不唯一则,如果不唯一则拒绝修改拒绝修改:CONSTRAINTS_PPRIMARY KEY(SNO)第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则例:参照完整性检查举例:例:参照完整性检查举例:定义:定义:参照完整性检查的违约处理:参照完整性检查的违约处理:CREATETABLESC(SnoCHAR(9)FOREIGNKEYREFERENCESS(Sno),CnoCHAR(4),GradeINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(Cno)REFERENCESC(Cno);被参照表(例如:被参照表(例如:student)参照表(例如:参照表(例如:SC)违约处违约处理理可能可能破坏破坏参照完整性参照完整性插入插入元元组组拒拒绝绝可能破坏可能破坏参照完整性参照完整性修改修改外外码值码值拒拒绝绝删删除除元元组组可能可能破坏参照完整性破坏参照完整性拒拒绝绝级联删级联删除除设设置置为为空空修改修改主主码值码值可能破坏参照完整性可能破坏参照完整性拒拒绝绝级联级联修改修改设设置置为为空空 第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeINT,PRIMARYKEY(Sno,Cno),FOREIGNKEY(SNO)REFERENCESS(Sno)ONDELETECASECADE/*当删除当删除student表中元组时,级联删除表中元组时,级联删除SC中的元组中的元组*/ONUPDATECASECADE/*当更新当更新student表中元组时,级联更新表中元组时,级联更新SC中的元组中的元组*/FOREIGNKEY(CNO)REFERENCESC(Cno),ONDELETENOACTION/*当删除当删除Course中元组造成与中元组造成与SC不一致时拒绝删除不一致时拒绝删除*/ONUPDATECASECADE/*当更新当更新Course中元组时级联更新中元组时级联更新SC中的元组中的元组*/);第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则例:用户例:用户(在属性)(在属性)定义的完整性检查举例:定义的完整性检查举例:定义:定义:用户定义完整性检查的违约处理:用户定义完整性检查的违约处理:当对当对表表插入插入或或更新更新时,时,RDBMS将将按照按照用户定义用户定义完整规则完整规则自动检查自动检查 检查如果不满足则拒绝执行检查如果不满足则拒绝执行:CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeINTCHECK(GRADEBETWEEN0AND100),PRIMARYKEY(Sno,Cno),FOREIGNKEY(sno)REFERENCESS(Sno),FOREIGNKEY(Cno)REFERENCESC(Cno);第第7章章 数据库安全保护数据库安全保护7.2.2 完整性规则完整性规则例:当性别为男时,其名字不能以例:当性别为男时,其名字不能以MS.打头:打头:CREATETABLEStudent(SnoCHAR(9)PRIMARYKEYSnameCHAR(20)NOTNULLUNIQUE,SsexCHAR(2)CHECK(Ssexin(女女OR男男),SageSMALLINTCHECK(Sage0ANDSage40),SdeptCHAR(20),);CHECK(Ssex=女女ORSnameNOTLIKEMS.%)/*定义了元组中定义了元组中Ssex和和Sname两个属性值之间的约束条件两个属性值之间的约束条件*/第第7章章 数据库安全保护数据库安全保护7.2.3触发器触发器触发器触发器是是一种特殊一种特殊的的存储过程存储过程,它是它是在对表在对表中数据中数据进行进行增、删、增、删、改(改(INSERTINSERT、UPDATEUPDATE、DELETEDELETE)操作)操作时时被被自动触发自动触发而而执行执行的的一段一段程序程序(即即SQLSQL语句语句)。触发器触发器主要作用主要作用:实现由:实现由主键主键和和外键外键所不能保证所不能保证的参照的参照完整性完整性和数据的和数据的一致性一致性;还能完成还能完成普通约束普通约束难以实现的难以实现的更为复杂更为复杂的数据的数据完完整性约束整性约束 第第7章章 数据库安全保护数据库安全保护触发器是触发器是在表在表上上建立建立的的触发器在触发器在触发执行触发执行之之前前,系统系统首先首先在在内存中内存中自动自动建立两个建立两个临时表临时表:DeletedDeleted表表与与InsertedInserted表表。当当插入插入一行时:一行时:INSERTED表表保存了保存了一份一份插入行插入行的拷贝。的拷贝。当当删除删除一行时:一行时:DELETED表表保存保存了了删除行删除行的拷贝。的拷贝。当当更新更新一行时:一行时:INSERTED表中表中保存保存了一份了一份新行新行的拷贝,的拷贝,DELETED表中表中保存保存了一份了一份旧行旧行的拷贝。的拷贝。一旦触发器一旦触发器执行完毕执行完毕,两两个个表表也随之消失也随之消失总之总之:Deleted表:表:用于用于临时保存要临时保存要删除的行删除的行或或旧行旧行(指指更新前的行更新前的行)Inserted表:表:用于用于临时临时保存要保存要插入的行插入的行或更新时的或更新时的新行新行 第第7章章 数据库安全保护数据库安全保护触发器触发器的种类的种类AFTER触发器触发器:只有只有对表对表执行某一操作执行某一操作后后,才才能能被被触发触发。可以为可以为表表的的同一操作同一操作定义多个定义多个触发器触发器INSTEADOF触发器:触发器:并不并不执行执行其所其所定义的操作定义的操作而而仅仅是是执行执行触发器触发器本身本身,对,对同一操作同一操作只只能能定义一个定义一个insteadof触发器触发器 第第7章章 数据库安全保护数据库安全保护触发器触发器的创建的创建在查询分析器中创建在查询分析器中创建:在企业管理器中创建在企业管理器中创建:第第7章章 数据库安全保护数据库安全保护1.用用Transact-SQL语句语句定义定义触发器触发器的的格式:格式:CREATETRIGGER触发器名触发器名ON|FOR|AFTER|INSTEADOFINSERT,UPDATE,DELETEAS;其中其中:AFTER触发器:触发器:又称又称后触发器后触发器,这种类型的触发器将在数据,这种类型的触发器将在数据变动(变动(UPDATE、INSERT和和DELETE操作)完成后才被触发,操作)完成后才被触发,AFTER与与指定指定FOR相同相同INSTEADOF:又称又称前触发器前触发器,在数据变动以前被触发,并取代,在数据变动以前被触发,并取代变动数据的操作(变动数据的操作(UPDATE、INSERT和和DELETE操作),而去操作),而去执行触发器定义的操作执行触发器定义的操作 第第7章章 数据库安全保护数据库安全保护例例:创建触发器:创建触发器trigger_1,实现当修改学生课程表,实现当修改学生课程表Course中的数据中的数据时,显示提示信息时,显示提示信息“学生课程表被修改了学生课程表被修改了”USE学生课程数据库学生课程数据库GOCREATETRIGGERtrigger_1ONCourseFORUPDATEASPRINT学生课程表被修改了学生课程表被修改了GO 第第7章章 数据库安全保护数据库安全保护例例:创建触发器创建触发器trigger_2,实现当删除学生课程表中某门课程的记,实现当删除学生课程表中某门课程的记录时,对应学生选课表中所有有关此课程的选课记录均删除录时,对应学生选课表中所有有关此课程的选课记录均删除GOUSE学生课程数据库学生课程数据库GOCREATETRIGGERtrigger_2ONCourseFORDELETEASDELETESCFROMSC,deletedWHERESC.课程号课程号=deleted.课程号课程号 第第7章章 数据库安全保护数据库安全保护例例:创建触发器创建触发器trigger_3,实现当修改学生课程表,实现当修改学生课程表Course中的某门中的某门课的课程号时,对应学生的选课表课的课程号时,对应学生的选课表SC中的课程号也作修改中的课程号也作修改USE学生课程数据库学生课程数据库GOCREATETRIGGERtrigger_3ONCourseFORUPDATEASIFupdate(课程号)(课程号)/*判定该列是否被修改判定该列是否被修改*/BEGINUPDATESCSET课程号课程号=(SELECT课程号课程号FROMinserted)FROMSC,deletedWHERESC.课程号课程号=deleted.课程号课程号ENDGO 第第7章章 数据库安全保护数据库安全保护2.用用Transact-SQL语句语句修改修改触发器触发器的的格式:格式:ALTERTRIGGERON|FOR|INSTEADOF|AFTERUPDATE,INSERT,DELETEAS3.用用Transact-SQL语句语句删除删除触发器触发器的的格式:格式:DROP TRIGGER 修改修改触发器触发器的的名字名字:sp_rename触发器触发器原原名,名,新新名名 第第7章章 数据库安全保护数据库安全保护例例:如果已创建了触发器如果已创建了触发器trigger_1,现要对它进行修改,要求将显示,现要对它进行修改,要求将显示的提示信息的提示信息(“学生课程表被修改了学生课程表被修改了”)改为改为“学生课程表中学生课程表中课课程号为程号为XXX的记录被修改了的记录被修改了”。USE学生课程数据库学生课程数据库GOALTERTRIGGERtrigger_1ONCourseFORUPDATEASDECLAREkchchar(3)SELECTkch=课程号课程号FROMdeletedPRINT学生课程表中课程号为学生课程表中课程号为+kch+的记录被修改了的记录被修改了GO 第第7章章 数据库安全保护数据库安全保护用企业管理器用企业管理器创建触发器创建触发器 第第7章章 数据库安全保护数据库安全保护用企业管理器创建触发器(续)用企业管理器创建触发器(续)第第7章章 数据库安全保护数据库安全保护用企业管理器创建触发器(续)用企业管理器创建触发器(续)7.3 并发控制并发控制7.3.17.3.1并发控制概述并发控制概述并发控制概述并发控制概述7.3.27.3.2封锁封锁封锁封锁7.3.37.3.3封锁协议封锁协议封锁协议封锁协议7.3.47.3.4活锁和死锁活锁和死锁活锁和死锁活锁和死锁7.3.57.3.5并发调度的可串行性并发调度的可串行性并发调度的可串行性并发调度的可串行性7.3.67.3.6两段锁协议两段锁协议两段锁协议两段锁协议7.3.1 并发控制概述并发控制概述n完整性完整性只保证只保证各个事务本身能得到正确的数据,各个事务本身能得到正确的数据,只考只考虑虑一个用户使用数据库一个用户使用数据库的情况,但实际上数据库中有的情况,但实际上数据库中有许多用户许多用户。n每个用户每个用户在存取在存取数据库中的数据时数据库中的数据时,可能是可能是串行串行执行,执行,也可能是也可能是多个用户并行地存取多个用户并行地存取数据库。数据库。7.3.1 并发控制概述并发控制概述n串行执行串行执行意味着意味着一个用户在运行程序时,一个用户在运行程序时,其他用户其他用户程序程序必须等到必须等到这个用户程序结束才能对数据库进行存取,这样这个用户程序结束才能对数据库进行存取,这样如果如果一个用户程一个用户程序序涉及大量数据涉及大量数据的输入的输入/输出交换,输出交换,则则数据库数据库系统的系统的大部分时间大部分时间将将处于闲置状态处于闲置状态。n因此,为了充分利用数据库资源,很多时候因此,为了充分利用数据库资源,很多时候数据库用户数据库用户都是对数都是对数据库系统据库系统并行存取数据并行存取数据,这样,这样就会发生就会发生多个用户并发存取同一数多个用户并发存取同一数据块的情况据块的情况,如果对并发操作如果对并发操作不加控制不加控制可能会产生不正确的数据可能会产生不正确的数据,破坏数据的完整性,破坏数据的完整性,并发控制并发控制就是解决就是解决这类问题这类问题,以保持数据库,以保持数据库中数据的一致性。中数据的一致性。7.3.1 并发控制概述并发控制概述1.事务事务概念概念:是是用户定义的用户定义的一个一个数据库数据库操作序列操作序列,这个操作,这个操作要么要么全做全做要要么么全不做全不做,是一个,是一个不可分割的不可分割的工作单位工作单位事务与程序事务与程序事务和程序事务和程序是是两个概念两个概念,一般地,一个,一般地,一个程序程序包含包含许多事务许多事务一个一个事务事务可以是可以是一条一条SQL语句、语句、一组一组SQL或或整个程序整个程序事务事务是是恢复恢复和和并发控制并发控制的的基本单位基本单位7.3.1 并发控制概述并发控制概述定义事务定义事务的语句的语句n显式定义方式显式定义方式BEGINTRANSACTIONBEGINTRANSACTIONSQL语句语句1SQL语句语句1SQL语句语句2SQL语句语句2COMMITROLLBACKnCOMMITn事务事务正常正常结束结束n提交提交事务的事务的所有操作所有操作(读读+更新更新)n事务中所有对数据库的更新事务中所有对数据库的更新永久永久生效生效其中:其中:nROLLBACKn事务事务异常异常终止终止n事务事务运行运行的过程中的过程中发生了发生了故障故障,不能继续执行,不能继续执行n回滚事务的所有回滚事务的所有更新更新操作操作n事务滚回到事务滚回到开始开始时的状态时的状态 第第7章章 数据库安全保护数据库安全保护事务的特性事务的特性(事务的事务的ACID准则准则)第第7章章 数据库安全保护数据库安全保护事务的特性事务的特性(事务的事务的ACID准则准则)第第7章章 数据库安全保护数据库安全保护事务的特性事务的特性(事务的事务的ACID准则准则)事务事务执行的结果执行的结果必须使必须使数数据据 库库从一个一致性状态从一个一致性状态变到另变到另 一个一致性状态一个一致性状态。因此当因此当数据库数据库只包含只包含成功事成功事 务提交务提交的结果时,就说数据的结果时,就说数据 库库处于一致性状态处于一致性状态。如果数据库系统运行中如果数据库系统运行中发生发生 故障故障,有些事务有些事务尚未完成尚未完成就就 被迫中断,被迫中断,系统将系统将事务中事务中对对 数据库的所有数据库的所有已完成的操作已完成的操作 全部撤消全部撤消,滚回到事务开始滚回到事务开始 时的一致状态时的一致状态 第第7章章 数据库安全保护数据库安全保护事务的特性事务的特性(事务的事务的ACID准则准则)第第7章章 数据库安全保护数据库安全保护事务的特性事务的特性(事务的事务的ACID准则准则)7.3.1 并发控制概述并发控制概述例例:银行中,银行中,“从帐号从帐号A A转移资金额转移资金额R R到帐号到帐号B”B”是一个典型的事务,这个事务包是一个典型的事务,这个事务包 括两个操作,从帐号括两个操作,从帐号A A中减去资金额中减去资金额R R和在帐号和在帐号B B中增加资金额中增加资金额R R,如果只执行其中,如果只执行其中一个操作,则数据库处于不一致状态,帐务会出现问题。也就是说,两个操作要一个操作,则数据库处于不一致状态,帐务会出现问题。也就是说,两个操作要么全做,要么全不做,否则就不能成为事务。用么全做,要么全不做,否则就不能成为事务。用事务的完整的描述出来如下:事务的完整的描述出来如下:BEGINTRANSACTIONREADAAA-RIFA0/*A款不足款不足*/BEGINDISPLAY“A款不足款不足”ROLLBACKENDELSE/*拨款拨款*/BEGINBB+RDISPLAY“拨款完成拨款完成”COMMITEND7.3.1 并发控制概述并发控制概述事务的执行事务的执行串行执行串行执行:事务可以事务可以一个一个的一个一个的串行执行串行执行,即即每个时刻每个时刻只有一个事务只有一个事务运行运行,其它事务必须等到该事务结束后方可运行,其它事务必须等到该事务结束后方可运行若串行若串行执行执行使使系统许多资源将系统许多资源将处于空闲状态处于空闲状态。为了为了充分利用充分利用系统系统资源资源发挥数据库发挥数据库共享的特点,共享的特点,应应允许多个事务允许多个事务并行的执行并行的执行同时同时并发执行并发执行:单处理机单处理机系统:事务的并发执行实际就是这些系统:事务的并发执行实际就是这些事务事务并行操作并行操作轮流交轮流交叉执行叉执行,即即交叉并发方式交叉并发方式能够减少处理机的空闲能够减少处理机的空闲能够减少处理机的空闲能够减少处理机的空闲时间,提高系统的效率时间,提高系统的效率时间,提高系统的效率时间,提高系统的效率多处理机多处理机系统:每个处理机可以运行一个事务,系统:每个处理机可以运行一个事务,多个处理机多个处理机可以同可以同时运行多个事务时运行多个事务,实现了多个事务真正的并行运,实现了多个事务真正的并行运行,它称为行,它称为同时并发执行同时并发执行事务的执行事务的执行串行执行串行执行:事务可以事务可以一个一个的一个一个的串行执行串行执行,即即每个时刻每个时刻只有一个事务只有一个事务运行运行,其它事务必须等到该事务结束后方可运行,其它事务必须等到该事务结束后方可运行若串行若串行执行执行使使系统许多资源将系统许多资源将处于空闲状态处于空闲状态。为了为了充分利用充分利用系统系统资源资源发挥数据库发挥数据库共享的特点,共享的特点,应应允许多个事务允许多个事务并行的执行并行的执行同时同时并发执行并发执行:单处理机单处理机系统:事务的并发执行实际就是这些系统:事务的并发执行实际就是这些事务事务并行操作并行操作轮流交轮流交叉执行叉执行,即即交叉并发方式交叉并发方式能够减少处理机的空闲能够减少处理机的空闲能够减少处理机的空闲能够减少处理机的空闲时间,提高系统的效率时间,提高系统的效率时间,提高系统的效率时间,提高系统的效率多处理机多处理机系统:每个处理机可以运行一个事务,系统:每个处理机可以运行一个事务,多个处理机多个处理机可以同可以同时运行多个事务时运行多个事务,实现了多个事务真正的并行运,实现了多个事务真正的并行运行,它称为行,它称为同时并发执行同时并发执行T1T2T3T1T2T3T1T2T17.3.1 并发控制概述并发控制概述事务事务事务事务并发执行并发执行并发执行并发执行若不加以控制若不加以控制若不加以控制若不加以控制,可能可能可能可能会会会会带来带来数据库中数据库中数据的不一致性数据的不一致性:1.丢失丢失修改修改n并发事务并发事务T1和和T2都要读入同一数据都要读入同一数据X的值并进行更新,但是事务的值并进行更新,但是事务T1先提交,先提交,T2后提交,后提交,T2提交的结果破坏了提交的结果破坏了T1提交的结果,致使提交的结果,致使T1对对X的修改被丢失了。的修改被丢失了。例例:7.3.1 并发控制概述并发控制概述2.不可不可重读重读n事务事务T1T1和和T2T2在并发执行的过程中,事务在并发执行的过程中,事务T1T1先读取数据,事务先读取数据,事务T2T2随即对随即对数据执行了更新操作,于是数据执行了更新操作,于是T1T1原来读取的数据就是一个过时的数据。原来读取的数据就是一个过时的数据。例例:时刻 事务T1事务T2数据库X的值t0read(X)X=30t1read(X)X=30t2X:X+10t3write(X)X=40t4read(X)7.3.1 并发控制概述并发控制概述3.读读脏脏数据数据n事务事务T1T1、T2T2在并发运行的过程中,事务在并发运行的过程中,事务T1T1先修改了某一数据,而后事先修改了某一数据,而后事务务T2T2读取该数据,但此后由于某种原因读取该数据,但此后由于某种原因T1T1被撤消了,被被撤消了,被T1T1修改过的数修改过的数据又恢复了原来的值,这样据又恢复了原来的值,这样T2T2读到的就是读到的就是一个未提交的数据一个未提交的数据(“脏脏”数据数据)。例例:n产生产生上述上述数据不一致数据不一致的的主要原因主要原因:是是并发操作破坏了事务的隔离性并发操作破坏了事务的隔离性n为为保证保证并发并发操作的操作的正确性正确性,DBMSDBMS必须提供必须提供并发控制机制并发控制机制来来正确调度正确调度并并发操作发操作,使使一个用户事务一个用户事务的执行的执行不受其它不受其它事务事务的的干扰干扰,从而避免造成,从而避免造成数据的不一致性数据的不一致性n并发控制并发控制:就是就是要求要求DBMSDBMS提供并发控制功能以正确的方式高度并发事提供并发控制功能以正确的方式高度并发事务,避免并发事务之间的相互干扰造成数据的不一致性,保证数据库务,避免并发事务之间的相互干扰造成数据的不一致性,保证数据库的完整性。的完整性。n并发控制的并发控制的主要技术有主要技术有:封锁封锁(LockLock)技术)技术、时标时标(TimestampingTimestamping)技术及技术及乐观控制乐观控制法法7.3.1并发控制概述并发控制概述7.3.2封锁封锁一、什么是封锁一、什么是封锁二、基本封锁类型二、基本封锁类型三、基本锁的相容矩阵三、基本锁的相容矩阵一、什么是封锁一、什么是封锁n n封锁封锁封锁封锁就是就是就是就是事务事务事务事务T T在对

    注意事项

    本文(第7章_数据库安全保护.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开