资源预览内容
第1页 / 共112页
第2页 / 共112页
第3页 / 共112页
第4页 / 共112页
第5页 / 共112页
第6页 / 共112页
第7页 / 共112页
第8页 / 共112页
第9页 / 共112页
第10页 / 共112页
亲,该文档总共112页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
仲恺仲恺乃爷搂会僳饼缄器馏遣予涌吕奄屏淮竹拎姬专磨梆泣胁拟夷丑凌怯爽搞绰数据库原理及应用课件数据库原理及应用课件数据库原理及应用数据库原理及应用Principles and Applications of the Database 第第6 6章章 数据库安全性和完整性数据库安全性和完整性 仲恺农业工程学院仲恺农业工程学院 计算机科学与工程学院计算机科学与工程学院筋八襟敲酉曙韦蜗霓搀明椽泪酬掘翌辙逆帜肄次觅纲坝洗日煞仪眺鞭享注数据库原理及应用课件数据库原理及应用课件An Introduction to Database SystemAn Introduction to Database System第第6 6章章 数据库安全性和完整性数据库安全性和完整性 v本章导读本章导读本本章章主主要要介介绍绍数数据据库库的的安安全全性性和和完完整整性性,包包括括数数据据库库安安全全性性的的定定义义,数数据据库库安安全全性性控控制制采采取取的的一一些些措措施施,数数据据库库完完整整性性的的定定义义,完完整整性性约约束束条条件件的的类类型型,完完整整性性控控制制机机制制,并并用用SQL语语句句给给出出了了如如何何描描述述授授权权、角角色色、建建立立视视图图、约约束束以以及及触触发发器的方式等。器的方式等。 绅营蘑怒腥微裂宇苏庄壕枫溪堡酱一锰致迢伴释未吗撞贝值酗尉什既淄腺数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院第第6 6章章 数据库安全性和完整性数据库安全性和完整性v重点:重点: 1安全性的基本概念安全性的基本概念2完整性的基本概念完整性的基本概念v难点:难点: 1域完整性控制方法域完整性控制方法2实体完整性控制方法实体完整性控制方法3. 参照完整性控制方法参照完整性控制方法驴称脊痊沸播最笺英贫慧胜翔炙丸饰颁耽勇锯伪座强援浦组丙暑搔日话壳数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院第第6 6章章 数据库安全性和完整性数据库安全性和完整性v本章要点本章要点安全性和完整性的基本概念安全性和完整性的基本概念数据库系统的数据库系统的6种安全性技术种安全性技术域完整性控制方法域完整性控制方法实体完整性控制方法实体完整性控制方法参照完整性控制方法参照完整性控制方法盼劈庞搓哦藐讫郭碉爱罐罗宿搜秦媳睡数肌氏巢守浸梧置化霓爵膀呼奄氟数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院第第6 6章章 数据库安全性和完整性数据库安全性和完整性6.1 概述概述6.2 数据库的安全性数据库的安全性6.3 数据库的完整性数据库的完整性6.4 SQL的完整性控制的完整性控制本章小结本章小结抢棺厄恢虽朱剧词扶贞祭秧鳃衫封鸦瞒岭渣祁恕担掸对满振猾烁娜执国魁数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.1 6.1 概述概述数据库的数据保护主要包括数据库的安全性和完整数据库的数据保护主要包括数据库的安全性和完整性保护机制。性保护机制。 安全性:安全性:就是要保证数据库中数据的安全,防止就是要保证数据库中数据的安全,防止未授权用户随意修改数据库中的数据,确保数据未授权用户随意修改数据库中的数据,确保数据的安全。的安全。 完整性:完整性:是数据库的一个重要特征,也是保证数据是数据库的一个重要特征,也是保证数据库中的数据切实有效、防止错误、实现商业规则的库中的数据切实有效、防止错误、实现商业规则的一种重要机制。一种重要机制。 吝骗牺粪酋坯贴究人疽意拓斑特肛峭爆枕樊摘其蛛热壶栏厅榜跨喳氮毁隆数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.1 6.1 概述概述防范对象:防范对象:安全性的防范对象安全性的防范对象:非法用户和非法操作非法用户和非法操作。完整性的防范对象完整性的防范对象:是不合法的语义数据是不合法的语义数据。祖铁莹搅懈深葵重哦澄识炭留续视禄静啤髓刁辰抗卜踪卖合基翔才宁黄嘶数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院第第6 6章章 数据库安全性和完整性数据库安全性和完整性6.1 概述概述6.2 数据库的安全性数据库的安全性6.3 数据库的完整性数据库的完整性6.4 SQL的完整性控制的完整性控制本章小结本章小结篮苯袖系树汲术脏祟极痰驭丢浇岛板辕末骏呢烩吵讨廊页藐梧创峻点疚称数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性 安全性问题安全性问题是计算机系统中普遍存在的一个问题,是计算机系统中普遍存在的一个问题,而在数据库系统中显得尤为突出。而在数据库系统中显得尤为突出。 原因:原因:数据库系统中大量数据集中存放,而且为许数据库系统中大量数据集中存放,而且为许多最终用户直接共享。数据库系统建立在操作系统之多最终用户直接共享。数据库系统建立在操作系统之上,而操作系统是计算机系统的核心,因此数据库系上,而操作系统是计算机系统的核心,因此数据库系统的安全性与计算机系统的安全性息息相关。统的安全性与计算机系统的安全性息息相关。绩淤籽低墓之贴自筷符役卤统拥梆喧狐靡培振锤络臃饼滓绦老滇茹异束罗数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性 在一般计算机系统中,安全措施是一层一层设置的,在一般计算机系统中,安全措施是一层一层设置的,下图是常见的计算机系统安全模型。下图是常见的计算机系统安全模型。 用户用户DBMS OS DB用用户户标标识识和鉴别和鉴别存取控制存取控制操作系统操作系统安全保护安全保护密码存储密码存储述胶消旅望狡委竣刽修戍祖塌谗锯剖桶薯布聂蹲婪粤傍表兢濒颁栽丘杂驻数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性6.2.1 用户标识与鉴别用户标识与鉴别6.2.2 存取控制存取控制6.2.3 视图视图6.2.4 数据加密数据加密6.2.5 跟踪审计跟踪审计6.2.6 统计数据库的安全统计数据库的安全立渔了变芽亿躲幌鄂顾稻盆秧燥协赴项简炯庞凝施梢坯缆设獭默矛暂诺愉数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.1 用户标识与鉴别用户标识与鉴别 用户标识与鉴别用户标识与鉴别是系统提供的最外层安全保护是系统提供的最外层安全保护措施。措施。 当用户进入数据库系统时,需要提供用户的标当用户进入数据库系统时,需要提供用户的标识,系统根据标识鉴别此用户是不是合法用户:识,系统根据标识鉴别此用户是不是合法用户:v对于合法的用户,进一步开放数据库的访问权限;对于合法的用户,进一步开放数据库的访问权限;v对于非法用户,则拒绝该用户对数据库进行存取操对于非法用户,则拒绝该用户对数据库进行存取操作。作。 下鲁傈躁创烂阉撼影麻稽灼快栈弓轻全免响瓜滞卡派在淳传狰绊兢馅臂劈数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.1 用户标识与鉴别用户标识与鉴别用户标识与鉴别的方法比较多,常用的有下几种:用户标识与鉴别的方法比较多,常用的有下几种: 1输入用户名标识合法身份输入用户名标识合法身份2回答用户口令标识身份回答用户口令标识身份 3通过回答随机数的运算结果标识合法身份通过回答随机数的运算结果标识合法身份 4通过个人特征鉴别标识合法身份通过个人特征鉴别标识合法身份丽寿闹助亏茅喷依宅艺揭狂而友踢棕敲选饲镣移虱丽繁烁躁适梭捻林耸逛数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性6.2.1 用户标识与鉴别用户标识与鉴别6.2.2 存取控制存取控制6.2.3 视图视图6.2.4 数据加密数据加密6.2.5 跟踪审计跟踪审计6.2.6 统计数据库的安全统计数据库的安全再恍匡惠煎校翠阶琐柳隙指苯团噪胳肉猾击保责楼要耻芍碧碑柔嗓陋橱鸵数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 数数据据库库安安全全性性所所关关心心的的主主要要是是DBMS的的存存取取控控制制机机制制。存存取取控控制制是是确确保保具具有有授授权权资资格格的的用用户户访访问问数数据据库库的的权权限限,同同时时使使得得所所有有未未被被授授权权的的人人员无法访问数据库的机制。员无法访问数据库的机制。 1存取控制机制的构成部分存取控制机制的构成部分(1)定义用户权限:定义用户权限:用户权限是指用户对于数据对象用户权限是指用户对于数据对象能够执行的操作种类。进行用户权限定义,系统必须提供能够执行的操作种类。进行用户权限定义,系统必须提供有关用户定义权限的语言。有关用户定义权限的语言。 (2)系统进行权限检查:系统进行权限检查:每当用户发出存取数据库每当用户发出存取数据库的操作请求后,的操作请求后,DBMSDBMS首先查找数据字典,进行合法权限检首先查找数据字典,进行合法权限检查,如果用户的操作请求没有超出其数据操作权限,则准查,如果用户的操作请求没有超出其数据操作权限,则准予执行其数据操作;否则,拒绝其执行此操作。予执行其数据操作;否则,拒绝其执行此操作。 阎焙徒杏黍卢舌撂翼影勿隶簿攫挽镭险叮卉栏翁恫靡伏劝宋憾绳叠溉整向数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制2存取机制的类别存取机制的类别(1)自主存取控制自主存取控制 :在自主存取控制方法中,用户对在自主存取控制方法中,用户对于不同的对象有不同的存取权限;不同的用户对同一对象于不同的对象有不同的存取权限;不同的用户对同一对象的存取权限也不同;用户也可以将自己拥有的权限传授给的存取权限也不同;用户也可以将自己拥有的权限传授给其他用户。其他用户。(2)强制存取控制强制存取控制 :在强制存取控制中,每一个数在强制存取控制中,每一个数据对象被标以一定的密级;每一个用户也被授予某个级别据对象被标以一定的密级;每一个用户也被授予某个级别的访问许可证;对于任意一个对象,只有具有合法许可证的访问许可证;对于任意一个对象,只有具有合法许可证的用户才可以存取。与自主存取控制相比,强制存取控制的用户才可以存取。与自主存取控制相比,强制存取控制比较严格。比较严格。 振陌则梢似所庸粮弯阉未之塌皿醉先而冈溃喉饶郴玩昂静宣汝珍月名块棚数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制3. 3. 自主访问控制方法自主访问控制方法(1)用户分类与权限)用户分类与权限 对于一个数据库,不同的用户有不同的访问要求和对于一个数据库,不同的用户有不同的访问要求和使用权限。使用权限。 一般可以将数据库的用户分为四类:一般可以将数据库的用户分为四类: 数据库管理员数据库管理员数据库对象的属主数据库对象的属主一般数据库用户一般数据库用户公共用户公共用户粹欣可刁踞寨适稻积捞檬码疾糠旷谆厨著坛琵搁竣擦楼渍菊鲜灌梗俺滨猛数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 数据库管理员数据库管理员 (Database Administrator,DBA) 拥有支配整个数据库资源的特权,对数据库拥有支配整个数据库资源的特权,对数据库拥有最大的特权,因而也对数据库负有特别的责拥有最大的特权,因而也对数据库负有特别的责任。任。DBADBA特权命令包括给各个独立的帐户、用户或特权命令包括给各个独立的帐户、用户或者用户组授予特权和回收特权,以及把某个适当者用户组授予特权和回收特权,以及把某个适当的安全分类级别指派给某个用户帐户。的安全分类级别指派给某个用户帐户。蘑廊炼昏忧冰析岿釜屠舞翁迟赂柳正带棚诉啡汗擒催枣梢誉非捂胡斤违贱数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制数据库对象的属主数据库对象的属主 是数据库的创建者,他除了一般数据库用户拥是数据库的创建者,他除了一般数据库用户拥有的权力外,还可以授予或收回其他用户对其所创有的权力外,还可以授予或收回其他用户对其所创建的数据库的存取权。建的数据库的存取权。一般数据库用户一般数据库用户 就是通过授权可对数据库进行操作的用户。就是通过授权可对数据库进行操作的用户。蠕五肿括拯享趋狱永而拔歪脆芥佰铝杖马食稍婴符党顾额外纶汁吱燃横簿数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制公共用户公共用户 是为了方便共享数据操作而设置的,它代表全是为了方便共享数据操作而设置的,它代表全体数据库用户,如果把某个数据对象的某项操作授体数据库用户,如果把某个数据对象的某项操作授权给公共用户,则一个合法的数据库用户都能进行权给公共用户,则一个合法的数据库用户都能进行该项数据操作。该项数据操作。 楼佯驹涸钥残翻饺隋洒铲锈冯擎铰识周锭效京豪绸礁片洒钉疗佑汞手盅冈数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 用户使用数据库的方式称为权限。使用数据用户使用数据库的方式称为权限。使用数据库的权限分为二类:访问数据特权和修改数据库库的权限分为二类:访问数据特权和修改数据库模式的特权。模式的特权。访问数据特权包括:访问数据特权包括:读数据权限、插入数据权限、修改数据权限和删除数读数据权限、插入数据权限、修改数据权限和删除数据权限。据权限。修改数据库模式的特权包括修改数据库模式的特权包括:创建和删除索引的索引权限,创建新表的资源权限,创建和删除索引的索引权限,创建新表的资源权限,允许修改表结构的修改权限,允许撤销关系表的撤销允许修改表结构的修改权限,允许撤销关系表的撤销权限等。权限等。 曙普只勤狙射漾谨固登港险哇燕漓电丛费獭毒加索捅思墟较快渐炳辛瞒冈数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制(2)SQL的数据控制功能的数据控制功能 SQL对自主存取控制提供了支持,其对自主存取控制提供了支持,其DCL主要是主要是GRANT(授权)语句和(授权)语句和REVOKE(收权)语句。(收权)语句。 授权授权 由于不同的用户对数据库具有不同的存取权,因此由于不同的用户对数据库具有不同的存取权,因此为了保证用户只能访问他有权存取的数据,必须对每个为了保证用户只能访问他有权存取的数据,必须对每个用户授予不同的数据库存取权。用户授予不同的数据库存取权。 溯插麓权律逛菜望汤弘攀霓碳锑防湛祸记绘顷坠趁感汝互娩赦展登安镍蝇数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授授 权权 在在SQL中中,授授权权语语句句有有两两种种:授授予予权权限限语语句句和和授予角色语句授予角色语句。 一个角色是一组被命名的零个或多个特权。授权一个角色是一组被命名的零个或多个特权。授权一个角色给一个用户,则允许该用户使用被授权的角一个角色给一个用户,则允许该用户使用被授权的角色所拥有的每一个特权。用户与角色之间存在多对多色所拥有的每一个特权。用户与角色之间存在多对多的联系;一个用户允许被授予多个角色使用,同一个的联系;一个用户允许被授予多个角色使用,同一个角色的使用被授权予多个用户。一个角色的使用也可角色的使用被授权予多个用户。一个角色的使用也可以被授权予另一个角色。以被授权予另一个角色。 卖僵娜兜垒澜烁埔蹬棺戴荚园蛹笼茧始藤珐鲁姿驰辛霍拎挥偷斡齐堵朋先数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予权限语句授予权限语句语句基本形式为:语句基本形式为:GRANT 权限权限ON 数据对象数据对象TO受权者受权者WITH GRANT OPTION数据对象:数据对象:=基表视图属性基表视图属性受权者:受权者:=PUBLIC授权授权ID语义:语义:将某作用在指定操作对象上的操作权限,限授将某作用在指定操作对象上的操作权限,限授予指定的用户。(即数据库对象的访问权限的管理)予指定的用户。(即数据库对象的访问权限的管理) 如果指定如果指定WITH GRANT OPTIONWITH GRANT OPTION子句,则获得某种权限子句,则获得某种权限的用户可以把这种权限在授予其他用户。如没有指定的用户可以把这种权限在授予其他用户。如没有指定该子句,获得授权的用户将不能传播权限该子句,获得授权的用户将不能传播权限( (转授转授) )。蒜光岩掏茂佬液谁贤我光私孺映丁薯噶涧敝图俭睦莫纸亿誉垒晓傍唱梢纪数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予权限语句授予权限语句【例【例6-1】在数据库】在数据库XSBOOK中,将表中,将表STUDENT的的SELECT操作权限授予所有的用户。操作权限授予所有的用户。注意:注意:PUBLICPUBLIC是一个特殊的保留字,代替该数据库系是一个特殊的保留字,代替该数据库系统的全体用户。对于大部分可以公开的数据,可以一统的全体用户。对于大部分可以公开的数据,可以一次性地授权给次性地授权给PUBLICPUBLIC,而不必对每个用户逐个授权,而不必对每个用户逐个授权。GRANT SELECT ON TABLE STUDENT TO PUBLIC;稼汕披渐栅擒厌椭摇诣岁菜挪迸元尸宿嫉挑咎椒柔涩梭糙靡挨逃疟伊怔碉数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予权限语句授予权限语句【例【例6-26-2】在数据库】在数据库XSBOOKXSBOOK中,将表中,将表STUDENTSTUDENT的借书证的借书证号、姓名字段的号、姓名字段的UPDATEUPDATE权限授予给权限授予给liuliu。【例【例6-36-3】将对表】将对表STUDENTSTUDENT的所有操作特权授予的所有操作特权授予liuliu。GRANT UPDATE(借书证号,姓名)(借书证号,姓名)ON STUDENT TO liu;GRANT ALL PRIVILEGES ON TABLE STUDENT TO liu;刻植垦腰汕了纺星卯季拳摧臻试阿拍磋及沸恼我淤群景教译身垢窘黑鸭周数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予权限语句授予权限语句【例【例6-4】将对表】将对表STUDENT中借书证号和专业名的中借书证号和专业名的INSERT特权授予特权授予liu,并允许他将此特权转授给,并允许他将此特权转授给其他用户。其他用户。GRANT INSERT(借书证号,专业名)(借书证号,专业名)ON STUDENT TO liu WITH GRANT OPTION;呛嚣蝉彦垄雅掂历执碾憋心姿丧沤里迅送枝柑姜呢照嵌忠氨鸿需缕肿弘樊数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予角色语句授予角色语句该语句基本形式为该语句基本形式为(oracle)GRANT 角色角色ID,角色,角色ID TO受权者受权者WITH ADMIN OPTION该语句将一个或多个角色的使用授予该语句将一个或多个角色的使用授予,若有,若有WITH ADMIN OPTION,则受权者可将,则受权者可将此角色转授给其他此角色转授给其他。姚饺厕过砷浓寡边佬氛舵徒纽序刽烫聘陶狰斥跪凋函帮毁防称铆激英衙顽数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予角色语句授予角色语句 在下列语句中,在下列语句中,Accounting_role,Import_role都是都是己建立的角色。己建立的角色。【例【例6-5】将角色】将角色Accounting _role和和Import _role授予授予所有的用户。所有的用户。GRANT Accounting _role,Import_role TO PUBLIC;波宁贤臀佬蓟球泵秉寝棠颈呜辊报因灯胁散膘毅载吵攀紫烛惟编炭赋诡亮数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院授予角色语句授予角色语句【例【例6-6】将角色】将角色Accounting _role授予用户授予用户zhang,并允许他将此角色转授给其他人。并允许他将此角色转授给其他人。GRANT Accounting _role TO zhang WITH ADMIN OPTION;眶冉物付柬尺阵姓沼疫论窘府勉讽移江篷婆劈莫分锑窗泛厉苍宠慕驰狙蚕数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院v将用将用户test加入至角色加入至角色managervExec sp_addrolemember manager,test佳枷递磺返举坍温贫翟烧牺削侈骚惯怒血指解斜梗贮辟壁咳伟歧尉硕栖汐数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院v用户用户 Jean 拥有表拥有表 Plan_Data。Jean 将表将表 Plan_Data 的的 SELECT 权限授予权限授予 Accounting 角色(指定角色(指定 WITH GRANT OPTION 子句)。用户子句)。用户 Jill 是是 Accounting 的成员,他要将表的成员,他要将表 Plan_Data 上的上的 SELECT 权限授予用户权限授予用户 Jack,Jack 不是不是 Accounting 的成员。的成员。因为对表因为对表 Plan_Data 用用 GRANT 语句授予其他用户语句授予其他用户 SELECT 权权限的权限是授予限的权限是授予 Accounting 角色而不是显式地授予角色而不是显式地授予 Jill,不能因,不能因为已授予为已授予 Accounting 角色中成员该权限,而使角色中成员该权限,而使 Jill 能够授予表的能够授予表的权限。权限。Jill 必须用必须用 AS 子句来获得子句来获得 Accounting 角色的授予权限。角色的授予权限。/* User Jean */GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION/* User Jill */GRANT SELECT ON Plan_Data TO Jack AS Accounting肖肛孤久良能翌络俺橱姚慌燃掏傻座矫孙沦绑藕疆裙臀僵巧沽氰晚柱审檀数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 当用户将某些权限授给其他用户后,有时还需要当用户将某些权限授给其他用户后,有时还需要把权限收回。收权需要使用把权限收回。收权需要使用REVOKE语句。语句。 收回权限的收回权限的REVOKE语句:语句: 收回角色的收回角色的REVOKE语句:语句: 收回权限收回权限 REVOKE 权限权限ON 数据对象数据对象 FROM 受权者受权者,受权者,受权者REVOKE 角色角色IDFROM 受权者受权者,受权者,受权者亥抬拯版琳著沦壳炮繁但咋淀渴钳徘臭胚磐邓潞明疗诱历恩匀园催窄侵痘数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制【例【例6-7】将】将liu对对STUDENT表的表的INSERT权限收回。权限收回。 REVOKE INSERT ON STUDENT FROM liu洽企佐尊哎柳级辽尤尝桓僻流罢窜刚悦昨奏梗努反简炼忠损摊伊料哩陨厦数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 (3)自主存取控制的不足之处)自主存取控制的不足之处 自主存取控制能够通过授权机制有效地控制用户自主存取控制能够通过授权机制有效地控制用户对敏感数据的存取,但也存在着一定的缺陷,其主要对敏感数据的存取,但也存在着一定的缺陷,其主要问题是系统对权限的授予状况无法进行有效的控制,问题是系统对权限的授予状况无法进行有效的控制,因而可能造成数据的无意泄漏。因而可能造成数据的无意泄漏。 但是,强制存取控制方法可以有效地解决这一问题。但是,强制存取控制方法可以有效地解决这一问题。仕恫柴踏针晓玛醋膘匝待搐井驴橡皮褐折甭慨续拯讥给馆渡曾惯浆仰科供数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 所谓所谓MAC是指系统为保证更高程度的安全性,是指系统为保证更高程度的安全性,它不是用户能直接感知或进行控制的。它不是用户能直接感知或进行控制的。MAC适用于适用于那些对数据有严格而固定密级分类的部门,例如军那些对数据有严格而固定密级分类的部门,例如军事部门或政府部门。事部门或政府部门。 4强制存取控制方法(强制存取控制方法(MAC) 在在MACMAC中,中,DBMSDBMS所管理的全部实体被分为所管理的全部实体被分为主体主体和和客体客体两大类。两大类。 告王淹裴黎滩铂途沼钞谁蠢胶击耐纹损沃冀崇赐隘弗榷恳逐极咯绕浦粉而数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 主体主体系统中的活动实体,既包括系统中的活动实体,既包括DBMSDBMS所管理所管理的实际用户,也包括代表用户的各进程。的实际用户,也包括代表用户的各进程。 客体客体系统中的被动实体,是受主体操纵的,包系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等等。括文件、基表、索引、视图等等。 阳胞挂帘乏帽猜沃藐秦彰诣妮孪函椽巾旧彝浊逞瘦酸哗万黔殉劳备沦柄裕数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制 当某一用户(或一主体)以标记当某一用户(或一主体)以标记label注册注册入系统时,系统要求他对任何客体的存取必须遵入系统时,系统要求他对任何客体的存取必须遵循如下规则:循如下规则: (1 1)仅当主体的许可证级别大于或等于客体的密级)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;时,该主体才能读取相应的客体; (2 2)仅当主体的许可证级别等于客体的密级时,该)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体。主体才能写相应的客体。 准拇警败晾钡贷醇师毗镊持逻瞩窝莆哗鄂徘叶睦葵脖洲缓援巢困给毋釜峪数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.2 存取控制存取控制一般强制存取控制采用以下几种方法实现:一般强制存取控制采用以下几种方法实现:(1)限制访问控制)限制访问控制(2)过程控制)过程控制(3)系统限制)系统限制帜压捉獭席纳痰愁九推泣寒旷磊迸凯熔私癣成敦结她戊钝惯感谬瘁药冤着数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性6.2.1 用户标识与鉴别用户标识与鉴别6.2.2 存取控制存取控制6.2.3 视图视图6.2.4 数据加密数据加密6.2.5 跟踪审计跟踪审计6.2.6 统计数据库的安全统计数据库的安全肘巾晋籽磅得领且本啮砾疥查胶祸取测娶浇卸获园裤藉讨钎篆尝菊巫茹憨数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.3 视图视图 视图技术是当前数据库技术中保持数据库安全性视图技术是当前数据库技术中保持数据库安全性的重要手段之一。通过为不同的用户定义不同的视图,的重要手段之一。通过为不同的用户定义不同的视图,可以将要保密的数据对无权存取的用户隐藏起来,从可以将要保密的数据对无权存取的用户隐藏起来,从而自动地给数据提供一定程度的安全保护。例如,给而自动地给数据提供一定程度的安全保护。例如,给某用户定义了一个只读视图,并且这个视图的数据来某用户定义了一个只读视图,并且这个视图的数据来源于关系源于关系R R,则此用户只能读,则此用户只能读R R中的有关信息,数据库中的有关信息,数据库中一切其他信息对他都是隐藏的。中一切其他信息对他都是隐藏的。 文楔抨桌痪果勺虑蒂虑朵垣垛矾丁魔萨跃夺号审觉貉居顾志芍攻裸震穷芳数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.3 视图视图【例【例6-8】允许一个用户查询学生表】允许一个用户查询学生表STUDENT的记录,的记录,但是只允许他查询计算机专业学生的情况。但是只允许他查询计算机专业学生的情况。CREATE VIEW STUDENT_SUBJECT AS SELECT 借书证号,姓名,专业名,性别,出生时借书证号,姓名,专业名,性别,出生时间,借书数间,借书数 FROM STUDENT WHERE 专业名专业名计算机计算机使用这个视图使用这个视图STUDENT_SUBJECTSTUDENT_SUBJECT的用户看到的只是基的用户看到的只是基本表本表STUDENTSTUDENT的一个的一个“水平子集水平子集”,或称行子集。,或称行子集。显裕系透芳卤怒暮思任热揩施僳石比绿芬胡姚培针谈浓廖蚌闷矫俄俱奴钎数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性6.2.1 用户标识与鉴别用户标识与鉴别6.2.2 存取控制存取控制6.2.3 视图视图6.2.4 数据加密数据加密6.2.5 跟踪审计跟踪审计6.2.6 统计数据库的安全统计数据库的安全划兼分峰眉烧氨苛临棋贾蚌荣书欧茸蕊庸孔女抉柒囊妆非耽兑武辞底匀犯数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.4 数据加密数据加密 数据加密技术是防止数据库中数据在存储或数据加密技术是防止数据库中数据在存储或者传输中失密的有效手段。者传输中失密的有效手段。 加密的基本思想是根据一定的算法将原始数加密的基本思想是根据一定的算法将原始数据(明文)变换成不可直接识别的格式(密文),据(明文)变换成不可直接识别的格式(密文),从而使得不知道解密算法的人无法获知数据的内从而使得不知道解密算法的人无法获知数据的内容。这样可以保证只有掌握了密钥的用户才能访容。这样可以保证只有掌握了密钥的用户才能访问数据,而且即使数据被非法地从数据库中窃取,问数据,而且即使数据被非法地从数据库中窃取,或者在数据传输过程中被截取,窃取者都无法知或者在数据传输过程中被截取,窃取者都无法知道密码数据的含义。道密码数据的含义。 衰植滑竹踩就熬括韧黔簇哩舶迭龙国式疤庆应梁宙都遂唉稚笑旦闰淡座阔数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.4 数据加密数据加密 数据加密的主要方法有两种:数据加密的主要方法有两种:1替换方法替换方法该方法使用密钥(该方法使用密钥(Encryption KeyEncryption Key)将明文中的每)将明文中的每一个字符转换为密文中的字符。一个字符转换为密文中的字符。2置换方法置换方法该方法仅将明文的字符按不同的顺序重新排列。该方法仅将明文的字符按不同的顺序重新排列。庇炎插咬面恬桑孺灶避字棉置企拧阴闯遇啪冕唱敛苔浓渤搁叛忌背茹二耐数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性6.2.1 用户标识与鉴别用户标识与鉴别6.2.2 存取控制存取控制6.2.3 视图视图6.2.4 数据加密数据加密6.2.5 跟踪审计跟踪审计6.2.6 统计数据库的安全统计数据库的安全非袖践庙怯孙舍蚤吕制阻第恩雁淑呈茵歧命莽瓢鸦窘馒致瘦雹得怀婆措叼数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.5 跟踪审计跟踪审计 跟踪审计(跟踪审计(Audit Trial)是一种监视措施,数)是一种监视措施,数据库运行中,据库运行中,DBMS跟踪用户对一些敏感数据的存跟踪用户对一些敏感数据的存取活动,把用户对数据库的操作自动记录下来放入取活动,把用户对数据库的操作自动记录下来放入审计日志(审计日志(Audit Log)中,有许多)中,有许多DBMS的跟踪的跟踪审计记录文件与系统的运行日志合在一起。审计记录文件与系统的运行日志合在一起。系统能系统能利用这些审计跟踪的信息,重现导致数据库现状的利用这些审计跟踪的信息,重现导致数据库现状的一系列事件。一系列事件。 闽廉悼它瓮泄江鲁树经业俗支后膛互奎壹餐庶拘职俞寓诸淖崎夯跪乏察好数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.5 跟踪审计跟踪审计 跟踪审计的记录一般包括以下内容:请求(源跟踪审计的记录一般包括以下内容:请求(源文本)、操作类型(如修改、查询等)、操作终文本)、操作类型(如修改、查询等)、操作终端标识与操作者标识、操作日期和时间、操作所端标识与操作者标识、操作日期和时间、操作所涉及的对象(表、视图、记录、属性等)、数据涉及的对象(表、视图、记录、属性等)、数据的前映象和后映象。的前映象和后映象。DBMSDBMS提供相应的语句供施加提供相应的语句供施加和撤销跟踪审计之用。和撤销跟踪审计之用。 贸齿耪觅漠赣究乳坡扒霜缩次以应随赁遂雅粉谰兼碟代婶电瘴酌某纽锁趟数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2 6.2 数据库的安全性数据库的安全性6.2.1 用户标识与鉴别用户标识与鉴别6.2.2 存取控制存取控制6.2.3 视图视图6.2.4 数据加密数据加密6.2.5 跟踪审计跟踪审计6.2.6 统计数据库的安全统计数据库的安全赂蛛蛋晃氧杨逐厚迈尉成鲤滩录阔骤褒歇竭想巢协方渴浙猿鳖悉熏锄她蹭数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.6 统计数据库的安全统计数据库的安全 统统计计数数据据库库是是一一种种特特殊殊类类型型的的数数据据库库,它它和和一一般般的的数数据据库库相相比比,有有很很多多共共同同点点,但但是是也也有有许许多独特之处。多独特之处。 统统计计数数据据库库,它它回回答答给给用用户户的的只只能能是是统统计计信信息息。如如国国家家的的人人口口统统计计数数据据库库、经经济济统统计计数数据据库库等等。统统计计数数据据库库存存储储了了大大量量敏敏感感的的数数据据,但但只只给给用用户户提提供供这这些些原原始始数数据据的的统统计计数数据据(如如平平均均值值、总计等),而不允许用户查看单个的原始数据。总计等),而不允许用户查看单个的原始数据。 疯用喊挡浩瘟寡思蹈挣意泌特渤回灾嘿赚性完丝及傍便肤皂恿孟汗梳殆舆数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.6 统计数据库的安全统计数据库的安全 用户使用合法的统计查询可以推断出他不应了解用户使用合法的统计查询可以推断出他不应了解的数据。的数据。 例如,一个学生想要知道另一个学生例如,一个学生想要知道另一个学生A A的成绩,他可的成绩,他可以通过查询包含以通过查询包含A A在内的一些学生的平均成绩,然后在内的一些学生的平均成绩,然后对于上述学生集合对于上述学生集合P P,他可用自己的学号取代,他可用自己的学号取代A A后得后得集合集合P P的平均成绩。通过这样两次查询得到的平均的平均成绩。通过这样两次查询得到的平均成绩的差和自己的成绩,就可以推断出学生成绩的差和自己的成绩,就可以推断出学生A A的成绩。的成绩。挛淬伸毡放懊销伟决誉争宣思惠熏胀邱晦亚拣助朴泌钦烂穗变难十绷募鸡数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.2.6 统计数据库的安全统计数据库的安全 为为了了堵堵塞塞这这类类漏漏洞洞,必必须须对对数数据据库库的的访访问问进进行行推推断断控控制制。现现在在常常用用的的方方法法有有数数据据扰扰动动、查查询询控控制制和和历历史史相相关关控控制制等等。这这些些方方法法虽虽然然都都获获得得了了应应用用,取取得得了了很很好好的的效效果果,但但是是迄迄今今为为止止,统统计计数数据库的安全问题尚未彻底解决。据库的安全问题尚未彻底解决。 乱矽尸践铅饼竞忙体肝拉馏借走葵睫裳产演咏辫俘擞镀庶申拆衫臭弱帝栖数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院第第6 6章章 数据库安全性和完整性数据库安全性和完整性6.1 概述概述6.2 数据库的安全性数据库的安全性6.3 数据库的完整性数据库的完整性6.4 SQL的完整性控制的完整性控制本章小结本章小结炸玄隘碾贷刽燃是希俱烽统戈捍丘唱穿釜那狸翻厂求涝锣哆陕暖劫戏泳犯数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3 数据库的完整性数据库的完整性。 数据库的完整性是指数据库的完整性是指数据库中数据的正确性和数据库中数据的正确性和相容性相容性,即为了防止数据库中存在不符合语义的数,即为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出。据,防止错误信息的输入和输出。 例如:例如:学生的学号一定是唯一的,学号的长度是学生的学号一定是唯一的,学号的长度是1313至至1515个个字符串;学生的年龄是整数,取值范围为字符串;学生的年龄是整数,取值范围为11114545;当一个用户向数据库插入一个新的学生记录或修改当一个用户向数据库插入一个新的学生记录或修改一个学生的数据时必须满足这些条件。一个学生的数据时必须满足这些条件。 湍金敢甫痒吝账冯茸逼加请渔饮炳渡分航方樊巫织傈寇隧徽前疾险痔矢帮数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3 数据库的完整性数据库的完整性 数据库的完整性保证了真实反映现实世界,凡数据库的完整性保证了真实反映现实世界,凡是已经失真的数据都可以说其完整性受到了破坏,是已经失真的数据都可以说其完整性受到了破坏,这种情况下就不能再使用数据库,否则可能造成严这种情况下就不能再使用数据库,否则可能造成严重的后果。重的后果。 完整性受破坏的常见原因:完整性受破坏的常见原因: 1错误的数据错误的数据2错误的更新操作错误的更新操作3并发访问并发访问4各种硬件故障各种硬件故障5人为的破坏人为的破坏巍履敷冉旷社巧况蕉憾腾眩骇能藉醚片壳芒另庚夺耪敲乏词阻弹端船军诌数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3 数据库的完整性数据库的完整性6.3.1 完整性的语义约束完整性的语义约束6.3.2 完整性语义检查完整性语义检查媳解虱故涧位剑演睫遭背坤笋宜蜕许拴畅哆要敢自悬松壹镍韵嘿尉办弘缩数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束。 完整性约束条件作用的对象可以是列、元组、关系完整性约束条件作用的对象可以是列、元组、关系三种。三种。 列约束:列约束:主要是列类型、取值范围、精度、排序等主要是列类型、取值范围、精度、排序等约束条件约束条件 。 元组约束:元组约束:是元组中各个字段间的联系的约束。是元组中各个字段间的联系的约束。 关系的约束:关系的约束:是若干元组间、关系集合上以及关系是若干元组间、关系集合上以及关系间的联系的约束。间的联系的约束。 屿蜕碘汾搅启毒睁淹崖烯沮铀衣碎抹泣槛僵樟柏莱智烘衡裔栋岁连裴扬灾数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束 完整性约束条件的类型可以分为两大类型:完整性约束条件的类型可以分为两大类型: 静态约束静态约束和和动态约束动态约束。 1静态约束静态约束 静态约束是指数据库每一确定状态时的数据对静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件,它是反映数据库状态合理象所应满足的约束条件,它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。性的约束,这是最重要的一类完整性约束。 爬失蚀楔宴薛渺筋敦拓匀讼辗祥卯沉奈梳忘庇攘娇集留善仗价唱拾等沥轻数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束根据约束作用的对象的不同,又可分为下面三种:根据约束作用的对象的不同,又可分为下面三种: (1)静态列约束静态列约束 对一个列的取值域等的说明或限制,这是最常见、对一个列的取值域等的说明或限制,这是最常见、最容易实现的一类完整性约束,它包括以下几个方面:最容易实现的一类完整性约束,它包括以下几个方面: 对数据类型的约束,例如,数据的类型、长度、对数据类型的约束,例如,数据的类型、长度、单位、精度等。单位、精度等。 对数据格式的约束,例如,学生的学号的格式中对数据格式的约束,例如,学生的学号的格式中前四位表示入学年份,中间三位为院号前四位表示入学年份,中间三位为院号+系号,后三系号,后三位为班级号位为班级号+顺序编号。顺序编号。直捻斜揩框雨蚀琼莱拖侮凌访映犯随挣洼纸眉伺今濒矫绩猜殊貌丸仁徊原数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束 对取值范围或取值集合的约束,例如,大学本科学对取值范围或取值集合的约束,例如,大学本科学生年龄范围的取值范围为生年龄范围的取值范围为1145。 对空值的约束,空值表示未定义或未知的值,与零对空值的约束,空值表示未定义或未知的值,与零值和空格不同。有的列允许空值,有的不允许,例值和空格不同。有的列允许空值,有的不允许,例如,规定学生的姓名不允许取空值;学号成绩可以如,规定学生的姓名不允许取空值;学号成绩可以为空值。为空值。 其他约束,例如,关于列的排序说明、组合列等。其他约束,例如,关于列的排序说明、组合列等。樊验螟耀躺信仑途耙耀独掣烙猿摔靶鲁属敝优耕傻荧彤敖篱检竹藏均斑玲数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束(2) 静态元组约束静态元组约束 一个元组是由若干列值组成的,静态元组约束规一个元组是由若干列值组成的,静态元组约束规定组成一个元组的各个列之间的约束关系。定组成一个元组的各个列之间的约束关系。 例如,一个学生的科目成绩列,规定每科成绩取例如,一个学生的科目成绩列,规定每科成绩取值不得低于值不得低于0 0,也不得高于,也不得高于100100。 (3) 静态关系约束静态关系约束 静态关系约束反映了一个关系中各个元组之间静态关系约束反映了一个关系中各个元组之间或者若干关系之间存在的联系或约束。它包括:或者若干关系之间存在的联系或约束。它包括:谰愿责核晌源舔炯虚赌确愤诡阉跟驹批现肺贡丙殿早冻龚蹈氓膊锤癌绊横数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束 实体完整性约束。即关键字段的值不为空。实体完整性约束。即关键字段的值不为空。 参照完整性约束。即一个关系的外码的取值与另参照完整性约束。即一个关系的外码的取值与另一个关系的关键字的值有关。一个关系的关键字的值有关。 函数依赖约束。大部分函数依赖约束都在关系模函数依赖约束。大部分函数依赖约束都在关系模式中定义。式中定义。 统计约束。即某个字段值与一个关系多个元组的统计约束。即某个字段值与一个关系多个元组的统计值之间的约束关系。例如对学生平均成绩的统计值之间的约束关系。例如对学生平均成绩的约束等,这里的平均成绩就是统计值。约束等,这里的平均成绩就是统计值。 葫枪砧绵享醚葛逛妒撬泽猿严今搔亚雪简可锚酗旦租况辰深阜峙逼辽鳞卞数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束 动态约束是指数据库从一种状态转变为另一种状动态约束是指数据库从一种状态转变为另一种状态时,新、旧值之间满足的约束条件,它反映了数态时,新、旧值之间满足的约束条件,它反映了数据库状态改变时应遵守的约束。按照约束对象不同,据库状态改变时应遵守的约束。按照约束对象不同,它又分为下面三种。它又分为下面三种。1动态约束动态约束(1) 动态列约束动态列约束 (2) 动态元组约束动态元组约束(3) 动态关系约束动态关系约束余剿焕诺精臣胳试熄臃吸桌钩晃傲晴僧低豌含楞牟逼扁腿蜡箔个它釜宝涪数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束 动态列约束规定修改列定义或列值时应满足动态列约束规定修改列定义或列值时应满足的约束条件,它包括:的约束条件,它包括: 修改列定义时的约束。例如,将允许空值的列修改列定义时的约束。例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。则拒绝这种修改。 修改列值时的约束。修改列值时需要参照其旧修改列值时的约束。修改列值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例值,并且新旧值之间需要满足某种约束条件。例如,学生的年龄只能增长。如,学生的年龄只能增长。(1) 动态列约束动态列约束吱爽琶藉瘴嫂皖珐慈瘟愧缸戴妖唉食星傣补夸主渝若蚀防肌裔见营摆帕挑数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.1 完整性的语义约束完整性的语义约束 动态元组约束是指修改某个元组的值时元组动态元组约束是指修改某个元组的值时元组中的各个字段之间要满足某种约束条件。例如,中的各个字段之间要满足某种约束条件。例如,职工津贴不得高于个人基本工资的职工津贴不得高于个人基本工资的20%20%等。等。 (2) 动态元组约束动态元组约束(3) 动态关系约束动态关系约束 动态关系约束是加在关系变化时的限制条件,动态关系约束是加在关系变化时的限制条件,例如,事务一致性、原子性等约束条件。例如,事务一致性、原子性等约束条件。 盐疾阿擎磐匠拾饰番础灶郧灰麓乒谋笋就川投船垛型椿忙娩亡省泅游拍饭数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3 数据库的完整性数据库的完整性6.3.1 完整性的语义约束完整性的语义约束6.3.2 完整性语义检查完整性语义检查噎弦持耘戎摩宿瓤句枉松络皮熙缺芋诊杆歹迈伍宝淹免疤颖苹粕剩芝小问数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.3.2 完整性语义检查完整性语义检查 现代数据库技术采用对数据完整性的语现代数据库技术采用对数据完整性的语义约束和检查来保护数据库的完整性,义约束和检查来保护数据库的完整性, 实现方式有两种:一种是通过定义和使实现方式有两种:一种是通过定义和使用完整性约束规则,另一种是通过触发器和用完整性约束规则,另一种是通过触发器和存储过程来实现。存储过程来实现。 垃吠秉揽鲜板怜免炉禄趣溺锥攻钥练跋呵经酱呻试掀獭秩傻尼才仁秒兔撂数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院第第6 6章章 数据库安全性和完整性数据库安全性和完整性6.1 概述概述6.2 数据库的安全性数据库的安全性6.3 数据库的完整性数据库的完整性6.4 SQL的完整性控制的完整性控制本章小结本章小结溯达廉柑厚钓壳冤痞影间嫁洪熄涨抽摆坎捷柜骨糟缔惫打苗促蝶酵凄警硼数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4 SQL的完整性控制的完整性控制 SQLSQL中中的的完完整整性性约约束束主主要要分分为为三三类类:域域完完整整性性、实实体体完完整整性性和和参参照照完完整整性性。但但是是,SQLSQL尚尚不不支支持持动动态态完整性约束。完整性约束。6.4.1 域完整性域完整性6.4.2 实体完整性实体完整性6.4.3 参照完整性参照完整性戳淑搽晨毗竭疵挝受脯鞋参于满庐兜趟淘称瞪阻滔糖茬糜琅黔隐徊宜疆移数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 域域完完整整性性又又称称为为列列完完整整性性,指指列列数数据据输输入入的的有有效效性性。实实现现域域完完整整性性的的方方法法可可通通过过定定义义相相应应的的约约束、规则等方法实现。束、规则等方法实现。1列约束列约束 定义列约束规定某个属性的值必须符合某种数定义列约束规定某个属性的值必须符合某种数据类型并且取自某个数据定义域。域完整性约束据类型并且取自某个数据定义域。域完整性约束施加于单个数据上。施加于单个数据上。 (1)长途电话号码格式为:)长途电话号码格式为:9999999999;(2)仓库库存量)仓库库存量0;(3)图书管理系统中允许读者当前在借图书量最多为)图书管理系统中允许读者当前在借图书量最多为20本。本。释掐弟巢懦肿陈烽恤穿港斌吭敝眼醋洼娠鞘汀艰原裳敖茁扔孕忙锣琴妊谨数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 域完整性可以使用域完整性可以使用CHECK约束、约束、NOT NULL约约束、束、UNIQUE约束在表定义的时候实现。约束在表定义的时候实现。 CHECK约束:约束:是字段输入时的验证规则,表示一个是字段输入时的验证规则,表示一个字段的输入内容必须满足字段的输入内容必须满足CHECK约束的条件,若不约束的条件,若不满足,则数据无法正常输入。满足,则数据无法正常输入。 NOT NULL约束:约束:约束表示列值的非空性,此列不约束表示列值的非空性,此列不允许为空;允许为空; UNIQUE约束:约束:表示列值唯一性。表示列值唯一性。 称阉塘堵但问条贵配翘爸矢敦亏旬漓馈卜苏擒犯漓亭菊龄掺贼孕拓滑指宁数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性【例【例6-9】定义表】定义表STUDENT的同时,定义字段的非的同时,定义字段的非空性和借书数字段的约束条件。空性和借书数字段的约束条件。CREATE TABLE STUDENT( 借书证号借书证号 char(8) NOT NULL, 姓名姓名 char(8) NOT NULL, 专业名专业名 char(12) NOT NULL, 性别性别 bit NOT NULL, 借书数借书数 tinyint CHECK(借书数借书数=0 and 借书数借书数=20) NULL )NOT NULLNOT NULL约束限定了借书证号、姓名、专用名、性约束限定了借书证号、姓名、专用名、性别不能为空值;别不能为空值;CHECKCHECK约束限定限定了借书数的取值约束限定限定了借书数的取值范围。范围。惺豢碳别宝肯低椎痕线瓦浆嘲柄鸿粉服园瓤啮煌蛛柬星甸仅痞诞疮乖憨腔数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性【例【例6-106-10】建立一个货物表】建立一个货物表GOODSGOODS,要求货品编号,要求货品编号GnoGno列取值唯一,货品名称列取值唯一,货品名称GnameGname列不允许为空。列不允许为空。CREATE TABLE GOODS( Gno char(7) UNIQUE, Gname char(8) NOT NULL,Nums int )帖扁瑶伏代鸿恶沫诡铆逞右吃末晃戍推宠稗淌末嘻僧紧帛赢吓猿承燃锚溯数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性2 2规则规则规则对象的使用步骤如下规则对象的使用步骤如下:(1)定义规则对象)定义规则对象 语法格式:语法格式:CREATE RULE rule AS condition_expression参数含义:参数参数含义:参数rulerule为定义的新规则名,规则名必须为定义的新规则名,规则名必须符合标识符规则;参数符合标识符规则;参数condition _expressioncondition _expression为规则为规则的条件表达式,该条件表达式可为的条件表达式,该条件表达式可为WHEREWHERE子句中任何有子句中任何有效的表达式,但规则表达式中不能包含列或其他数据效的表达式,但规则表达式中不能包含列或其他数据库对象,可以包含不引用数据库对象的内置函数。库对象,可以包含不引用数据库对象的内置函数。 痪伴午簇搐三西愈港碍茄读悯搜比智揩示嫡纯奔辨嚣涟绒瞅持遍掂或操裴数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性(2)将规则对象绑定到列或用户自定义类型)将规则对象绑定到列或用户自定义类型规则对象的绑定,使用的是系统存储过程规则对象的绑定,使用的是系统存储过程sp_bindrule,语法格式如下:,语法格式如下:sp_bindrule rulename = rule , objname = object_name , futureonly = futureonly_flag 吵禽关修拟辰蒙朴滦耘僵筋蝉端汗荷土首诫寓讶九骆讳崇空睡浸诣抢烂糠数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 参参数数含含义义:参参数数rule为为CREATE RULE语语句句创创建建的的规规则则名名,要要用用单单引引号号括括起起来来。参参数数object_name为为绑绑定定到到规规则则的的列列或或用用户户定定义义的的数数据据类类型型,如如果果object_name采采用用“表表名名.字字段段名名”格格式式,则则认认为为绑绑定定到到表表的的列列,否否则则绑绑定定到到用用户户定定义义的的数数据据类类型型;参参数数futureonly_flag仅仅当当将将规规则则绑绑定定到到用用户户定定义义的的数数据据类类型型时时才才使使用用,如如果果futureonly_flag设设置置为为futureonly,用用户户定定义义数数据据类类型型的的现现有有列列不不继继承承新新规规则则。如如果果futureonly_flag为为NULL,当当被被绑绑定定的的数数据据类类型型当当前前无无规规则则时时,新新规规则则将将绑绑定定到到用用户定义数据类型的每一列。户定义数据类型的每一列。勋洲纱亢碾耽乐瓮赔瞒剃茸清乎培仇站寿氯春诞禹嘴卿琅暂所师媚谗障惋数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性【例【例6-11】创建一个规则,并绑定到】创建一个规则,并绑定到STUDENT表的借书证号字段。表的借书证号字段。CREATE RULE num_rule AS num like 1-61-61-9 1-9 1-9 1-9 0-9 0-9 0-9GOEXEC sp_bindrule num_rule, STUDENT.借书证号借书证号思畅员爆遣献皂擎翟铆问二哨揣静嫁郡粹挝蟹倦蚕丢多峡吻摆掣胆陆产纹数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性(3)规则对象的删除)规则对象的删除删除规则对象前,首先应使用系统存储过程删除规则对象前,首先应使用系统存储过程sp_unbindrule,解除被绑定对象与规则对象之间,解除被绑定对象与规则对象之间的绑定关系。的绑定关系。语法格式:语法格式:sp_unbindrule object_name = object_name , futureonly = futureonly_flag 椰夫腆诌透嘻窟言氯唬厉申竹漆毙肚鞭嗓曰昨精淑熏姨忽演随柞闷责蓟傻数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 在解除列或自定义类型与规则对象之间的绑定在解除列或自定义类型与规则对象之间的绑定关系后,就可以删除规则对象了。关系后,就可以删除规则对象了。 语法格式:语法格式: 参数含义:参数参数含义:参数rulerule指定删除的规则名,可以包含指定删除的规则名,可以包含规则所有者名;参数规则所有者名;参数n n表示可以指定多个规则同时删表示可以指定多个规则同时删除。除。DROP RULE rule,n凛亮创溉掉忿徊咋讽极宪远失复劲焕跋缎孜芬言朴旷描止爽髓半偷圣住鲍数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性【例【例6-126-12】解除】解除num_rulenum_rule规则对象与规则对象与STUDENTSTUDENT表的借书表的借书证号的绑定关系,然后删除规则对象证号的绑定关系,然后删除规则对象num_rulenum_rule。EXEC sp_unbindrule num_ruleDROP RULE num_rule 陈斟标杀谅私刽诊转连室图枢埔井颧盟氏樊劳秽房测素篓掖蜒普溶裁釜辖数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 3触发器触发器 触触发发器器就就是是一一类类靠靠事事件件驱驱动动的的特特殊殊过过程程,一一旦旦由由某某个个用用户户定定义义,任任何何用用户户对对该该数数据据的的增增、删删、改改操操作作均均由由服服务务器器自自动动激激活活相相应应的的触触发发器器,在在核核心心层层进进行行集中的完整性控制。集中的完整性控制。 一个触发器应包括下面两个功能:一个触发器应包括下面两个功能: (1)指明什么条件下触发器被执行。)指明什么条件下触发器被执行。 (2)指明触发器执行什么动作。)指明触发器执行什么动作。 乌徐甘绅他瑶角果作布黄耕荧艺播贡吁扑阴劲窿朋手勾廓扛毙奥狂垣屁宪数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性SQLSQL触发器定义的语法如下触发器定义的语法如下触发器定义的语法如下触发器定义的语法如下: : :=CREATE TRIGGER ON WITH ENCRYPTION /*说明是否采用加密方式说明是否采用加密方式*/ FOR| AFTER|INSTEAD OF /*定义触发器的类型定义触发器的类型*/ ASIF UPDATE(column)AND|ORUPDATE(column) n| IF(COLUMNS_UPDATED()bitwise_operatorupdated_bitmask) /*两个两个IF子句用于说明触发器执行的条件子句用于说明触发器执行的条件*/ Sql_statements /*T-SQL语句序列语句序列*/踢瓷殃敞去壹依豢舆尔漱的哟并追撩隔二蚂聚敖升叔氓谱滚灶皱沛戚台陈数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性【例【例6-13】在数据库】在数据库XSBOOK中创建一触发器,当中创建一触发器,当向向BORROW表插入一记录时,检查该记录的借书表插入一记录时,检查该记录的借书证号在证号在STUDENT表是否存在,检查图书的表是否存在,检查图书的ISBN号号在在BOOK表中是否存在,及图书的库存量是否大于表中是否存在,及图书的库存量是否大于0,若有一项为否,则不允许插入。,若有一项为否,则不允许插入。隅辑祈渗呆竞淘谢桔邢篮伯诣菜雏纱俞栽尼丫登相蓑琳靳篙邯亿税浑尾询数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性CREATE TRIGGER jy_insert ON BORROW FOR INSERT ASIF EXISTS( select * from inserted a where a.借书证号借书证号 not in ( select b.借书证号借书证号 from STUDENT b) or a.ISBN not in(select c.ISBN from BOOK c)OR EXISTS(select * from book where 库存量库存量=0) BEGIN RAISERROR(违背数据一致性违背数据一致性,16,1) ROLLBACK TRANSACTION END任颤方萤加彰警摊挞缕庇疗帐裸逛曾讣景恃夜坍扰邑久捌糟肉绩编辨寻炎数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性ELSEBEGIN UPDATE STUDENT SET 借书数借书数=借书数借书数+1 WHERE STUDENT.借书证号借书证号 IN (select inserted.借书证号借书证号 from inserted) UPDATE BOOK SET 库存量库存量=库存量库存量-1 WHERE book.ISBN IN (select inserted.ISBN from inserted)END散鼎险贸党唆乍爬勃损铣夹纸谍颅猎虎婉两翘藻粕吧蝶典叔漫鲜踢澄姥廷数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 inserted inserted 逻辑表:当向表中插入数据时,逻辑表:当向表中插入数据时,INSERTINSERT触发器触发执行,新的记录插入到触发器表触发器触发执行,新的记录插入到触发器表和和insertedinserted表中。表中。 触发器中使用的特殊表触发器中使用的特殊表 执行触发器时,系统创建了两个特殊的逻辑表执行触发器时,系统创建了两个特殊的逻辑表InsertedInserted表和表和deleteddeleted表。表。文躁卞枉啸蒸匈嫩鸵支绽是氯殷匙猫缨甄秃鼓粗咋矢跺争诊诽陨滔稼因讯数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.1 域完整性域完整性 deleted逻辑表:用于保存已从表中删除的记录,逻辑表:用于保存已从表中删除的记录,当触发一个当触发一个DELETE触发器时,被删除的记录存放到触发器时,被删除的记录存放到deleted逻辑表中。逻辑表中。 修改一条记录等于插入一新记录,同时删除旧记修改一条记录等于插入一新记录,同时删除旧记录。当对定义了录。当对定义了UPDATE触发器的表记录修改时,表触发器的表记录修改时,表中原记录移动到中原记录移动到DELETE表中,修改过的记录插入到表中,修改过的记录插入到inserted表中。触发器可检查表中。触发器可检查deleted表、表、inserted表表及被修改的表。及被修改的表。 触发器中使用的特殊表触发器中使用的特殊表 起板书犹回章口偷涵窄蛇郧堆备众母弯念股膊参咆恼豹惟惧浙若召钱疼尼数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4 SQL的完整性控制的完整性控制6.4.1 域完整性域完整性6.4.2 实体完整性实体完整性6.4.3 参照完整性参照完整性斥舌傣纂茬伯稻迂蛮抿宏饥篡盂痒率嘴念漳嘴逞什商诬烃碎弟澜口莆懊篆数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.2 实体完整性实体完整性 实实体体完完整整性性又又称称为为行行的的完完整整性性,要要求求表表中中有有一一个个主主键键,其其值值不不能能为为空空且且唯唯一一地地标标识识对对应应的的记记录录。SQL在在CREATE TABLE语语句句中中提提供供PRIMARY KEY创创建建主主码码列列,实现数据的实体完整性。实现数据的实体完整性。 委泅监澡姆乍审挠栋宴裸步咕堕斧迸籽损讯释绪付蹭项墩礁它匹臣恕沫牌数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.2 实体完整性实体完整性 一个表只能有一个一个表只能有一个PRIMARY KEY约束,而且约束,而且PRIMARY KEY约束中的列不能取空值。当为表定约束中的列不能取空值。当为表定义义PRIMARY KEY约束时,约束时,SQL为主键创建唯一索为主键创建唯一索引,实现主键数据的唯一性,在查询中,该索引可用引,实现主键数据的唯一性,在查询中,该索引可用来对数据进行快速访问。如果来对数据进行快速访问。如果PRIMARY KEY约束约束是由多列组合定义的,则某一列的值可以重复,但是由多列组合定义的,则某一列的值可以重复,但PRIMARY KEY约束定义中所有列的组合值必须唯约束定义中所有列的组合值必须唯一。一。 吩畅皋索拿沼灭寡目绒详挞棕握戚粥卷毖摄认仪途雹贫舶贸孽惹薛醋迎掘数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.2 实体完整性实体完整性【例【例【例【例6-146-14】在图书管理系统里面,创建一个学生借阅】在图书管理系统里面,创建一个学生借阅】在图书管理系统里面,创建一个学生借阅】在图书管理系统里面,创建一个学生借阅表表表表BORROWBORROW。CREATE TABLE BORROWCREATE TABLE BORROW( 借书证号借书证号借书证号借书证号 char(5), char(5), ISBN char(10), ISBN char(10), 借书时间借书时间借书时间借书时间 datetime, datetime, 应还时间应还时间应还时间应还时间 datetime, datetime, PRIMARY KEY( PRIMARY KEY(借书证号借书证号借书证号借书证号,ISBN),ISBN))用用PRIMARY KEY约束定义了关系的主码后,约束定义了关系的主码后,每当用户程序对主码列进行更新操作时,系统自每当用户程序对主码列进行更新操作时,系统自动进行完整性检查,凡操作使主码值为空值或使动进行完整性检查,凡操作使主码值为空值或使主码值在表中不唯一,系统拒绝此操作,从而保主码值在表中不唯一,系统拒绝此操作,从而保证了实体完整性。证了实体完整性。篮多袖屿太厦财坐灿呐惰锻粉俗去儒彬蚤阳览会们锤旧超牧牲剔粹贸苯愤数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4 SQL的完整性控制的完整性控制6.4.1 域完整性域完整性6.4.2 实体完整性实体完整性6.4.3 参照完整性参照完整性慧逗楔狮州捂喘哭腋择贯剂链量行彦乓英晃雄劫邢亦贩辊砷镰再碱奄衫核数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 参照完整性是关系模式的另一种重要约束,又参照完整性是关系模式的另一种重要约束,又称为引用完整性。参照完整性保证主表中的数据与称为引用完整性。参照完整性保证主表中的数据与从表中数据的一致性,通过定义从表中的外码与主从表中数据的一致性,通过定义从表中的外码与主表中的主码之间的对应关系实现。表中的主码之间的对应关系实现。 氓讲牡挡窗刺绘均汗梦藕厂蹈十蓝箭妙鸳毡镇拙柑夜磕接臻秀吹止备掐熙数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性在在在在SQLSQL中,有两种方法用于说明一个外部关键字:中,有两种方法用于说明一个外部关键字:中,有两种方法用于说明一个外部关键字:中,有两种方法用于说明一个外部关键字:第一种方法第一种方法:如果外部关键字只有一个属性,可以在它的属性名和如果外部关键字只有一个属性,可以在它的属性名和类型后面直接用类型后面直接用“REFERENCES”说明它参照了某个被说明它参照了某个被参照表的某些属性(必须是主关键字),其格式为:参照表的某些属性(必须是主关键字),其格式为: REFERENCES () 另一种方法另一种方法:在在CREATE TABLE语句的属性列表后面增加一个或几个语句的属性列表后面增加一个或几个外部关键字说明,其格式为:外部关键字说明,其格式为: FOREIGN KEY REFERENCES () 耀炙呀皑杰拇曹肤液畜挥逢提催掂件瓶辱击扭尿帘个犊帛考孵壤詹苇仿者数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性下面将详细讨论实现参照完整性要考虑的几个问题。下面将详细讨论实现参照完整性要考虑的几个问题。 1外码的取值规则外码的取值规则【例【例6-15】 设有一个关系模式,设有一个关系模式, 学生学生(Sno,Sname,Ssex,Subno)其中,其中,Sno是主关键字,专业号是主关键字,专业号Subno是外部关键字,是外部关键字,并参照了关系模式并参照了关系模式 专业专业(Subno,Subname)中的中的Subno,这时可以直接说明,这时可以直接说明“学生学生.Subno”参照了参照了“专业专业.Subno”,称专业为被参照关系,学生为参照关,称专业为被参照关系,学生为参照关系。系。佳叔鄙曲完救储请抨屈虎羞毯血肚寻蚤砚荷卉粕破挪棍塞绕吸窘烃拌认尉数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 在这个例子中,看一下学生实体中的在这个例子中,看一下学生实体中的SubnoSubno取值取值的限制。如果一个学生还没有分配专业,取值为空值。的限制。如果一个学生还没有分配专业,取值为空值。如果分配了专业,那么必须是专业实体中的某个专业,如果分配了专业,那么必须是专业实体中的某个专业,也就是其取值必须是专业表中存在的某个专业号,这也就是其取值必须是专业表中存在的某个专业号,这就是参照完整性。因为就是参照完整性。因为“学生学生.Subno.Subno”必须参照必须参照“专专业业.Subno.Subno”取值。取值。 粘睦扼农铭礼虑匆宾么鲜历烙赘烙宝矢铝缩五裂造菩壹椅题罢奈险折庸竖数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院取值规则取值规则6.4.3 参照完整性参照完整性 若属性或属性组若属性或属性组F是基本关系是基本关系R的外码,它与基的外码,它与基本关系本关系S的主码的主码Ks相对应,则对于相对应,则对于R中的每个元组在中的每个元组在F上的取值必须为:上的取值必须为: 或者取空值或者取空值(F的每个属性均为空值的每个属性均为空值); 或者等于或者等于S中某个元组的主码值。中某个元组的主码值。月反贞旬堕匣刨眶算盔欣勃威片汁驯邀哟驾京勺哦戏殖钉詹益地华鸣逛叮数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性(1)拒绝插入)拒绝插入 一般当参照关系插入元组,被参照关系的主码字一般当参照关系插入元组,被参照关系的主码字一般当参照关系插入元组,被参照关系的主码字一般当参照关系插入元组,被参照关系的主码字段存在相应的值,则允许参照关系插入元组。而被参段存在相应的值,则允许参照关系插入元组。而被参段存在相应的值,则允许参照关系插入元组。而被参段存在相应的值,则允许参照关系插入元组。而被参照关系如不存在相应的元组,其主码值与参照关系插照关系如不存在相应的元组,其主码值与参照关系插照关系如不存在相应的元组,其主码值与参照关系插照关系如不存在相应的元组,其主码值与参照关系插入元组的外码值不相同,这时可有以下策略:入元组的外码值不相同,这时可有以下策略:入元组的外码值不相同,这时可有以下策略:入元组的外码值不相同,这时可有以下策略:2参照表中增加元组参照表中增加元组 仅当被参照关系中存在相应的元组,其主码值与仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。操作,否则拒绝此操作。 讶犀聂堂俯蔡牢弹娜著贾软恕苔麻滔园场赦捣漾药挑菱软超表魏宣裂掇陨数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 (2 2)递归插入)递归插入 首先向被参照关系中插入相应的元组,其主码首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关值等于参照关系插入元组的外码值,然后向参照关系插入元组。系插入元组。 例如对于上面的情况,系统将首先向专业关系例如对于上面的情况,系统将首先向专业关系插入插入Subno=Subno=1010的元组,然后再向学生表插入的元组,然后再向学生表插入(981601,(981601,张丽张丽,0,0,1010) )元组。元组。驹哦垃捻诲衬萄挫疲螺速芦理愤黑巢鄙摊匠晃换呀膛平役窄腹伍成沿振胚数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性3参照表中修改一个元组的外码参照表中修改一个元组的外码 当参照关系修改某元组中外码值,被参照关系主码当参照关系修改某元组中外码值,被参照关系主码值与参照关系修改后元组的外码值相同,则允许参照值与参照关系修改后元组的外码值相同,则允许参照关系修改元组。而若被参照关系如不存在相应的外码关系修改元组。而若被参照关系如不存在相应的外码值,则拒绝修改。如例值,则拒绝修改。如例6-156-15中,将学生表的某个中,将学生表的某个“专专业号业号.Subno”.Subno”的值修改为专业表中不存在的某个非空的值修改为专业表中不存在的某个非空值,则被拒绝修改。值,则被拒绝修改。拱竣珊陷涡尽闷慢夹疮巍贞薪伊捆弃戚裂蒙驭墩议婉导碳酶册慷冠防郎逛数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 4被参照表中删除一个元组被参照表中删除一个元组 当当在在被被参参考考表表中中删删除除一一个个元元组组,如如果果参参考考关关系系的的外外码码没没有有对对应应值值,则则可可以以顺顺利利删删除除此此元元组组。但但是是如如果果参参考考关关系系存存在在若若干干元元组组,其其外外码码值值与与被被参参考考关关系系删删除除元元组组的的主主码码值值相相同同,可可以以有有三三种种不不同同的的策策略:略: (1)拒绝删除)拒绝删除(2)级联删除)级联删除(3)置空操作)置空操作童颤规望虑籍羹矿脯女赃押偿弟粉驻橱愤场纶锈左救揪姬蚤搐惟缄冶醛巷数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性(1)拒绝删除)拒绝删除 仍以例仍以例6-12为例。要删除专业关系中为例。要删除专业关系中Subno=10的元组,而学生关系中又有的元组,而学生关系中又有10个元组的个元组的Subno都等于都等于10,系统将拒绝删除专业关系中,系统将拒绝删除专业关系中Subno=10的元组。的元组。秘灰召炊臀嘎堵涎献秸催勒评勃幂呻匹仰先靖霓瑚寥修嫡姬风撅锋仲拧桐数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性(2)级联删除)级联删除 将参照关系中所有外码值与被参照关系中要删将参照关系中所有外码值与被参照关系中要删除元组主码值相同的元组一起删除。例如将上面学除元组主码值相同的元组一起删除。例如将上面学生表中相应的生表中相应的10个个Subno=10的元组一起删除。如的元组一起删除。如果参照关系同时又是另外一个关系的被参照关系,果参照关系同时又是另外一个关系的被参照关系,则这种删除操作会继续级联删除下去。则这种删除操作会继续级联删除下去。 召林坛钎骄桓巷嘉甭著皋极鸭源度吟姥疾心命麦言留咸晓泽畏泻豢腿幻喻数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 (3)置空操作)置空操作 删除被参照关系的元组,并将参照关系中删除被参照关系的元组,并将参照关系中相应元组的外码值置空值。例如,将学生表的相相应元组的外码值置空值。例如,将学生表的相应专业号值修改为空值。应专业号值修改为空值。履鸦怒宿誉每虚竖乃腊狞栋摔酉搔栓昨厂毙辙几族蜗卵赎灶斟牢膏窍共邦数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 5被参照表中修改一个元组的主码被参照表中修改一个元组的主码 当修改关系时被参考关系时,还必须检查参照关当修改关系时被参考关系时,还必须检查参照关系,是否存在这样的元组,其外码值等于被参照关系系,是否存在这样的元组,其外码值等于被参照关系要修改的主码值。要修改的主码值。 丘申笔侧呻欢材殃翘公急矢寐详循彭奶照恒逃罚悯藐吐旷乱矽先放秽驶严数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 如例如例6-15中,将某个专业的中,将某个专业的Subno从一个值改成从一个值改成了另外一个值,使得学生表中的了另外一个值,使得学生表中的Subno的值在专业表的值在专业表中不存在了,这时与被参考关系修改一个元组的情况类中不存在了,这时与被参考关系修改一个元组的情况类似。似。 可以有可以有3种处理方式:种处理方式:(1)将学生表中的)将学生表中的Subno字段值与专业表中的字段值与专业表中的Subno字段值一起修改,即级联修改;字段值一起修改,即级联修改;(2)拒绝修改;)拒绝修改;(3)将学生表中的)将学生表中的Subno字段值改为空值。字段值改为空值。 禾挖梁捏外约髓毋缮岿省仓室掘坤遇贰散铂袁咀惜毕蜕蓉倍郁懈腊睁赃骡数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性 SQL中的中的CREATE TABLE语句也可以定义参语句也可以定义参照完整性规则,即用照完整性规则,即用REFERENCES子句指明这些子句指明这些外码相应于哪个表的主码,或者用外码相应于哪个表的主码,或者用FOREIGN KEY子句和子句和REFERENCES子句一起定义哪些列为外码子句一起定义哪些列为外码列;用列;用ON DELETE CASCADE子语指明在删除被子语指明在删除被参照关系的元组时,同时删除参照关系中相应的元参照关系的元组时,同时删除参照关系中相应的元组。组。 瑶脆磋市暮譬庚虐哮诡宗敖菲囚贰搞穿梗喀捡赵疼煎鄙砷袋擂滩阻娩惰叫数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性例如,使用如下例如,使用如下SQL语句建立学生表语句建立学生表 CREATE TABLE 学生学生 (Sno CHAR(6) PRIMARY KEY, Sname VARCHAR(8) NOT NULL, Ssex bit, Subno CHAR(2) REFERENCES 专业专业(Subno) ); 涨溜柱聂钎撞蛋丙吨色蔷音钩或关舒集牙兰介县剩顺川嵌讹檄帝庞氰受漱数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性或者这样说明:或者这样说明: CREATE TABLE 学生学生 (Sno CHAR(6) PRIMARY KEY, Sname VARCHAR(8) NOT NULL, Ssex bit, Subno CHAR(2) ,FOREIGN KEY Subno REFERENCES专业专业(Subno) ); 则表明学生表是参照表,专业表是被参照表,学生则表明学生表是参照表,专业表是被参照表,学生表的表的SubnoSubno为外码。当删除或修改专业表中某个元组为外码。当删除或修改专业表中某个元组的主码时会自动检查学生表中是否有元组的的主码时会自动检查学生表中是否有元组的SubnoSubno值值等于专业中要删除的元组的等于专业中要删除的元组的SubnoSubno值,如没有,接受值,如没有,接受此操作;否则系统拒绝这一更新操作。此操作;否则系统拒绝这一更新操作。慌锦素浴拈压酌莱桥羊凋蹈馁夷允拉贡旅嫡学吁急盈妙号责井松邯卡陀敞数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院6.4.3 参照完整性参照完整性如果用如下如果用如下SQL语句建立学生表语句建立学生表CREATE TABLE 学生学生 (Sno CHAR(6) PRIMARY KEY, Sname VARCHAR(8) NOT NULL, Ssex bit, Subno CHAR(2) REFERENCES 专业专业(Subno) ON DELETE CASCADE ); 当要删除专业表中某个元组时,系统要自动检查学当要删除专业表中某个元组时,系统要自动检查学生表,若找到相应元组则将它们也随之删除。生表,若找到相应元组则将它们也随之删除。同样也可以使用同样也可以使用ON UPDATE CASCADEON UPDATE CASCADE,此子句指出了,此子句指出了当更新被参照表中主码或唯一码的值时,也同时更当更新被参照表中主码或唯一码的值时,也同时更新参照表中相应的外码值。新参照表中相应的外码值。 扛狱解朋跪件神伐炒箕另詹按恤酥窗锗伤辑腕嘶蛆挟纵皆仕睫谱坚宅愚粪数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院本章小结本章小结 本章主要讨论了数据库安全性和完整性方面的知本章主要讨论了数据库安全性和完整性方面的知识。识。数据库的安全性主要是指通过对数据库的存取控数据库的安全性主要是指通过对数据库的存取控制,防止未授权使用的人员非法存取他不应存取制,防止未授权使用的人员非法存取他不应存取的数据,防止数据泄密,防止数据被破坏。的数据,防止数据泄密,防止数据被破坏。数据库的完整性是为了保证数据库中存储数据的数据库的完整性是为了保证数据库中存储数据的正确性、准确性和有效性。保持数据库的完整性正确性、准确性和有效性。保持数据库的完整性的方法主要有:设置完整性约束,规则或使用触的方法主要有:设置完整性约束,规则或使用触发器。完整性约束的种类有:域完整性、实体完发器。完整性约束的种类有:域完整性、实体完整性和参照完整性。整性和参照完整性。豺赚托捂扰铀云咨景呵臃凰喀必曝瞬付扑王双酌荆喂鹤肖峻明阮朴歪卤盯数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院 下课了。下课了。戒绊预玻崎锥弃韭搐囱抛溪盲触剁搅械寻滇缘襟回渡医庭肘雷砰征俭铡译数据库原理及应用课件数据库原理及应用课件仲恺农业工程学院仲恺农业工程学院计算机科学与工程学院计算机科学与工程学院
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号