1、1第第6讲讲 数据库安全与完整性保护数据库安全与完整性保护思考以下问题思考以下问题: 1. 数据库的保护功能包含哪些内容?数据库的保护功能包含哪些内容? 2. 何谓数据库的安全性?何谓数据库的安全性?SQL SERVER有哪些数据库安全性措施?有哪些数据库安全性措施? 3. 何谓数据库完整性?数据库有哪几类何谓数据库完整性?数据库有哪几类完整性控制?完整性控制?SQL Server中有哪些中有哪些具体进行完整性保护的措施?具体进行完整性保护的措施?2一一. 数据库的保护数据库的保护一个好的数据库管理系统必须提供统一一个好的数据库管理系统必须提供统一的数据保护功能,以保护数据库中数据的数据保护功
2、能,以保护数据库中数据的安全可靠和正确有效。的安全可靠和正确有效。数据库的保护功能主要包括:数据库的保护功能主要包括:确保数据的安全性确保数据的安全性确保数据的完整性确保数据的完整性并发控制(多用户环境)并发控制(多用户环境)数据库恢复数据库恢复3二二. 数据库的安全性数据库的安全性 数据库的安全性是指保护数据库,以防数据库的安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改止不合法的使用造成的数据泄密、更改或破坏。或破坏。 数据库安全性控制的一般方法数据库安全性控制的一般方法用用 户户DBMSOSDB 用户标识和鉴别用户标识和鉴别 存取控制存取控制 操作系统安全保护操作系统安全保护
3、 密码存储密码存储 4二二. 数据库的安全性数据库的安全性与数据库有关的安全技术与数据库有关的安全技术(1) 用户标识和鉴别用户标识和鉴别 通过输入用户名和回答口令来标明用户通过输入用户名和回答口令来标明用户身份身份 (2) 存取控制存取控制 自主存取控制自主存取控制 强制存取控制强制存取控制5二二. 数据库的安全性数据库的安全性 与数据库有关的安全技术与数据库有关的安全技术(3)视图视图 为不同的用户定义不同的视图,通过视为不同的用户定义不同的视图,通过视图把数据对象限制在一定范围内密码存图把数据对象限制在一定范围内密码存储。储。(4)密码存储密码存储 加密是根据一定的算法将原始数据变换加密
4、是根据一定的算法将原始数据变换为不可直接识别的格式(密文),从而为不可直接识别的格式(密文),从而使得不知道解密算法的人无法理解数据使得不知道解密算法的人无法理解数据的内容。的内容。6三三. SQL Server的安全体系结构的安全体系结构SQL ServerSQL Server的安全机制是比较健全的安全机制是比较健全的,设置了的,设置了4 4层防线层防线(1) Windows NT操作系统的安全防线(2) SQL Server的运行安全防线(3) SQL Server数据库的安全防线(4) SQL Server数据库对象的安全防线7三三. SQL Server的安全体系结构的安全体系结构 S
5、QL SQL ServerServer的的两种安全认证模式两种安全认证模式(1) Windows安全认证模式(2) 混合安全认证模式 安全认证是指数据库系统对用户访问数据库系安全认证是指数据库系统对用户访问数据库系统时所输入的帐号和口令进行确认的过程。统时所输入的帐号和口令进行确认的过程。 安全性认证模式是指系统确认用户的方式。安全性认证模式是指系统确认用户的方式。8四四. 数据库完整性数据库完整性数据库的完整性是指数据的正确性和相容性。数据库的完整性是指数据的正确性和相容性。数据库完整性控制包括三类:数据库完整性控制包括三类: 实体完整性(每个关系的主码不能为空)实体完整性(每个关系的主码不
6、能为空) 参照完整性(两个表中的值之间的关系)参照完整性(两个表中的值之间的关系) 自定义完整性(其他与实际相关的约束)自定义完整性(其他与实际相关的约束)9四四. 数据库完整性数据库完整性实现参照完整性要考虑的几个问题学号课程号 成绩060900001 0000189060900028 0002178060900001 0006884学号姓名060900001 ZhangSan060900028 WangWu成绩表学生表参照关系外码主码10四四. 数据库完整性数据库完整性实现参照完整性要考虑的几个问题学号姓名所在系060900001 张三00003060900028 李四0000106090
7、0001 王五00003系号系名00001 自动化系00003 通信系学生表系表参照关系主码外码11四四. 数据库完整性数据库完整性实现参照完整性要考虑的几个问题(1) (1) 外码能够接受空值的问题外码能够接受空值的问题(2) (2) 在被参照关系中删除元组的问题。在被参照关系中删除元组的问题。 1) 1) 级联删除(级联删除(CASCADESCASCADES) 2) 2) 受限删除(受限删除(RESTRICTEDRESTRICTED) 3) 3) 置空值删除(置空值删除(NULLIFIESNULLIFIES) (3) (3) 在参照关系中插入元组时的问题在参照关系中插入元组时的问题 1)
8、1) 受限插入受限插入 2) 2) 递归插入递归插入12五五. SQL Server的数据完整性的数据完整性SQL ServerSQL Server数据完整性的两种方式数据完整性的两种方式(1 1)声明数据完整性)声明数据完整性完整性类型完整性类型约束类型约束类型完整性功能描述完整性功能描述域完整性域完整性DEFAULT插入数据时,如果没有明确提供列值,则用缺省插入数据时,如果没有明确提供列值,则用缺省值作为该列的值值作为该列的值CHECK指定某个列或列组可以接受值的范围,或指定数指定某个列或列组可以接受值的范围,或指定数据应满足的条件据应满足的条件实体完整性实体完整性PRIMARY KEY指
9、定主码,确保主码值不重复,并不允许主码为指定主码,确保主码值不重复,并不允许主码为空值空值UNIQUE指出数据应具有惟一值,防止出现冗余指出数据应具有惟一值,防止出现冗余参照完整性参照完整性FOREIGN KEY定义外码、被参照表和其主码定义外码、被参照表和其主码13五五. SQL Server的数据完整性的数据完整性SQL ServerSQL Server数据完整性的两种方式数据完整性的两种方式(2 2)过程数据完整性。过程数据完整性。 过程数据完整性通过使用脚本语言过程数据完整性通过使用脚本语言定义,系统在执行这些语言时强制完定义,系统在执行这些语言时强制完整性实现。整性实现。 过程数据完
10、整性包括触发器和存储过程数据完整性包括触发器和存储过程等。过程等。14五五. SQL Server的数据完整性的数据完整性SQL SQL ServerServer实现数据完整性的具体方法实现数据完整性的具体方法(1) (1) 约束约束 通过限制列中的数据,行中的数据和表之间数据通过限制列中的数据,行中的数据和表之间数据来保证数据完整性。来保证数据完整性。(2) (2) 默认默认(3) (3) 规则规则(4) (4) 触发器触发器 一种高功能高开支的数据完整性方法。触发器具一种高功能高开支的数据完整性方法。触发器具有有INSERTINSERT、UPDATEUPDATE、和、和DELETEDELE
11、TE三种类型。一个表三种类型。一个表可以具有多个触发器。可以具有多个触发器。15六六. 案例案例一个图书管理系统中读者借阅情况管一个图书管理系统中读者借阅情况管理包含三个表:理包含三个表: 图书表图书表表1 “图书”表的属性设计表属性名 含义数据类型长度允许空主码或索引约束条件书号图书编号varchar10no主码类别图书类别varchar10no索引项出版社出版社名称varchar20yes索引项作者作者姓名varchar30yes索引项书名书名varchar30no索引项定价定价smallmoneyyes借出否是否被借出bitno默认值位016六六. 案例案例表2 “读者”表的属性设计表属
12、性名 含义数据类型长度允许空主码或索引约束条件书证号读者编号varchar8no主码姓名读者姓名varchar8no索引项单位读者单位varchar20no索引项性别读者性别char2yes男或女电话读者电话varchar12yes 读者表读者表17六六. 案例案例 借阅表借阅表表3 “借阅”表的属性设计表属性名 含义数据类型长度允许空主码或索引约束条件书号图书编号varchar10no主属性外键,参照表为:图书.书号读者书证号读者编号varchar8no主属性外键,参照表为:读者.编号借阅日期借阅日期datetime8no索引值为修改记录的当天日期18六六. 案例案例为了保证数据的完整性,哪
13、些可以通为了保证数据的完整性,哪些可以通过声明数据的完整性实现?过声明数据的完整性实现? 对如下的数据如何保证其有效性?对如下的数据如何保证其有效性?书号书号读者编号读者编号 借阅日期借阅日期归还日期归还日期100011000110001100012006-4-19 9:582006-4-19 9:582006-5-19 8:382006-5-19 8:38100061000610002100022006-7-1 15:282006-7-1 15:282006-7-18 9:142006-7-18 9:14100021000210002100022006-7-1 15:282006-7-1 1
14、5:282006-7-17 19:102006-7-17 19:10100021000210003100032006-7-3 15:282006-7-3 15:282006-8-9 15:282006-8-9 15:2819六六. 案例案例 如何完成以下的任务?如何完成以下的任务?1. 当读者借阅书籍时,如果该书已经借阅但未归当读者借阅书籍时,如果该书已经借阅但未归还,则借阅不成功。如果该书可借阅,则插入还,则借阅不成功。如果该书可借阅,则插入借阅记录同时将图书的状态修改为已借出。借阅记录同时将图书的状态修改为已借出。2. 无论何时删除一个读者,如果该读者还有未归无论何时删除一个读者,如果该读者还有未归还的书籍,则不允许删除该读者。如果所有书还的书籍,则不允许删除该读者。如果所有书均归还,则删除该读者所有的借阅记录。均归还,则删除该读者所有的借阅记录。