版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章数据库的完整性和安全性,前言,数据库的保护涉及多个方面内容,概括起来主要是保护后台数据库系统的完整和安全,使之具有随时可正常运行的功能,防止机密数据的泄漏。数据库的完整性和安全性是两个完全不同的概念。当然,完整性和安全性是密切相关的。,6.1数据库的完整性,数据库的完整性是指数据库中数据的正确性和相容性。例如,学生的学号必须唯一;性别只能是男或女;学生所在的专业必须是学校已开设的专业等。数据库是否具备完整性关系到数据库系统能否真实地反映现实世界,因此维护数据库的完整性是非常重要的。,6.1.1数据库的完整性的基本功能及具体内容,数据库完整性的具体内容包括:1.保护数据项之间的结构不受破坏
2、;2.保护数据的正确性、有效性;3.同一数据的不同副本尽可能地一致、协调;4.提高数据对用户的可用性。,6.1.2数据库的完整性分类,实体完整性(EntityIntegrity)(1)实体完整性是针对基本数据表而言的。一个基本数据表通常对应现实世界的一个实体集。例如“学生基本情况表”对应于学生的集合。(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3)相应地,关系模型中以主键作为唯一标识。(4)主键中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。,6.1.2数据库的完整性分类,参照完整性(ReferentialIntegrity)在将关系型数据模型转换为关系型
3、数据库后,数据表之间就存在着引用。示例:学生实体和专业实体可以用下面的关系表示,其中主键用下划线标识:学生关系(学号,姓名,性别,专业号,年龄)专业关系(专业号,专业名)在将关系型数据模型转换为关系型数据库后,数据表之间就存在着引用。,6.1.2数据库的完整性分类,由以上叙述可知,在示例中,学生关系的“专业号”属性与专业关系的主键“专业号”相对应,因此“专业号”属性是学生关系的外键。这里专业关系是被参照的关系,学生关系为参照关系。如图所示。,专业号,学生关系,专业关系,6.1.2数据库的完整性分类,数据表内及数据表间的参照完整性同关系,下面简要说明一下参照完整性要考虑的几个问题:外键能否接受空
4、值问题在被参照关系中删除记录的问题:级联删除(CASCADES)受限删除(RESTRICTED)置空值删除(NULLIFIES),6.1.2数据库的完整性分类,在参照数据表中插入记录时的问题:受限插入递归插入修改数据表中主键的问题:不允许修改主键允许修改主键,6.1.2数据库的完整性分类,用户定义的完整性(User-definedIntegrity)任何关系数据库系统都应支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如,某个属
5、性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在0100之间等等。,6.1.3完整性的约束条件,为维护数据库的完整性,DBMS必须提供一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件称为数据库完整性约束条件,它们与数据一起存入数据库中。完整性的约束条件可作以下分类:完整性约束条件作用的对象可以是数据表、记录、列三种。完整性约束条件涉及的这三类对象,其状态可以是静态的,也可以是动态的。,6.1.3完整性的约束条件,完整性约束条件分为六类,如下所示:1.静态列级约束:静态列级约束是对一个列的取值域的说明,这是最常用也是最容易实现
6、的一类完整性约束,包括以下几方面:对数据类型的约束对数据格式的约束对取值范围或取值集合的约束对空值的约束其他约束2.静态记录约束,6.1.3完整性的约束条件,3.静态数据表约束:在一个数据表的各个记录之间或者若干数据表之间常常存在各种联系或约束。常见的静态数据表约束有:1)实体完整性约束。2)参照完整性约束。实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,称为关系的两个不变性。3)函数依赖约束。大部分函数依赖约束都在关系模式中定义。4)统计约束。即字段值与数据表中多个记录的统计值之间的约束关系。,6.1.3完整性的约束条件,动态列级约束动态列级约束是修改列定义或列值时应满足的条件
7、,包括下面两方面:修改列定义时的约束例如,将允许空值的列改为不允许空值时,若该列目前已存在空值,则拒绝这种修改。修改列值时的约束修改列值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工工资调整不得低于其原来工资,学生年龄只能增长等。,6.1.3完整性的约束条件,动态记录约束动态记录约束是指修改记录的值时记录中各个字段间需要满足某种约束条件。动态数据表约束动态数据表约束是加在数据表变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。,6.1.3完整性的约束条件,6.1.4数据库管理系统的完整性控制机制,完整性控制机制应具有以下三个方面的功能:定义功能,提供定义完整性约束条
8、件的机制。检查功能,检查用户发出的操作请求是否违背了完整性约束条件。如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。,6.2数据库的安全性,数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。事实上,安全性问题不是数据库系统所独有的,所有计算机系统都存在这个问题。只是由于数据库系统中大量数据集中存放,而且为多个用户所共享,网络数据库尤为如此,所以,网络数据库的安全问题至关重要。因此,系统安全保护措施是否有效是网络数据库系统的主要指标之一。相对于网络数据库而言,关系数据库的安全问题主要考虑的是数据的存储安全问题,而网络数据库中还有考虑
9、数据的传输安全等等。,6.2数据库的安全性,1.用户标识和鉴定。这是安全保护的首要问题。2.存取控制。对于获得数据库使用权的用户进一步设置各个用户的具体使用权限。3.操作系统安全保护。4.密码存储。,6.2.1用户安全性,所谓用户安全性是指用户身份的合法性。用户身份的验证是通过用户标识与鉴别来实现的,这是系统提供的最外层安全保护措施。当用户首次登录系统时,必须先进行用户注册,注册成功才能成为本系统的合法用户。系统内部记录着所有合法用户的标识。以后当用户再次登录时,必须输入正确的用户名和密码,通过鉴定后才能进入本系统,6.2.2权限安全性,用户权限是由两个要素组成的:数据对象和操作类型。定义一个
10、用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权(Authorization)。所以,权限的安全性主要是指对权限的管理,通过授权与收回权限来保障数据库操作对象的安全。,6.2.2权限安全性,权限的管理主要通过SQL的GRANT语句(授权)和REVOKE语句(收回权限)来实现。这包括两方面的内容:定义用户权限,并将用户权限登记到数据字典中。合法权限检查,6.3SQLServer的实现,6.3.1数据库完整性在SQLServer中的实现在SQLServer中,可以通过各种约束和缺省、规则、触发器等数据库对象来保证数据的完整性。1.约束约束
11、是SQLServer强制实行的应用规则,它能够限制用户存放到表中数据的格式和可能值。,6.3.1数据库完整性在SQLServer中的实现,1.约束包括以下几种:主关键字约束PRIMARYKEY:能够保证指定列的实体完整性,应用PRIMARYKEY约束列的空值能力必须定义为NOTNULL。该约束可以应用于一列或多列,应用于多列时,它被定义为表级约束。外部关键字约束FOREIGNKEY:为表中一列或多列数据提供参照完整性。实施FOREIGNKEY约束时,要求在被参照表中定义了PRIMARYKEY约束或UNIQUE约束。,6.3.1数据库完整性在SQLServer中的实现,唯一约束UNIQUE:它能
12、够保证一列或多列的实体完整性。对于实施UNIQUE约束的列,不允许有任意两行具有相同的索引值。SQLServer允许在每张表上建立多个UNIQUE约束。检查约束CHECK:限制输入到一列或多列的可能值,从而保证SQLServer数据库中数据的值域完整性。缺省值约束:DEFAULT:使用此约束时,如果用户在插入数据操作时没有显式为列提供数据,系统就将缺省值赋给该列。,6.3.1数据库完整性在SQLServer中的实现,2.缺省缺省是一种数据库对象,它与缺省值约束的作用类似;在INSERT语句中为指定数据列设置缺省值。缺省对象只适用于受INSERT语句影响的行。创建缺省对象使用:CREATEDEF
13、AULT语句,该语句只能在当前数据库中创建缺省对象。,6.3.1数据库完整性在SQLServer中的实现,3.规则规则是对录入到列中的数据所实施的完整性约束条件,它指定插入到列中的可能值。规则可以被关联到一列或几列,以及用户定义的数据类型。创建规则使用CREATERULE语句,删除规则使用DROPRULE语句,6.3.1数据库完整性在SQLServer中的实现,4.触发器触发器是一种特殊的存储过程,使用它可以实施更为复杂的数据完整性措施。触发器建立在表一级,它与指定的数据库修改操作相对应。触发器的创建是使用“CREATETRIGGER触发器的名称ON数据表名”语句来实现的;修改使用“ALTER
14、TRIGGER触发器的名称ON数据表名”语句来实现。,6.3.2数据库的安全性在SQLServer中的实现,要进入SQLServer进行操作,必须先通过安全认证。SQLServer7.0的安全认证分两种,一种是利用Windows2000Server的安全认证系统,另一种是SQLServer提供的认证机制。所谓Windows2000Server认证,就是用户先用Windows2000Server中特定的账号登录操作系统,然后就可以直接使用SQLServer上的资源。SQLServer本身也提供登录账号的验证。在使用SQLServer本身提供的登录验证机制时,用户只需提供登录的名称和密码即可进入S
15、QLServer。,6.3.2数据库的安全性在SQLServer中的实现,1.数据库用户管理在SQLServer数据库系统中,管理好每个数据库用户是涉及到整个系统安全的大事,所以在开发阶段一定要认真规划,确定好每个用户的工作内容,并根据其工作内容给用户授予合适的数据库操作权限。对于用户较多的大型系统,最好将用户划分为不同的用户组,在组的基础上管理用户,给他们授予相应的数据库操作权限,这样就可以避免用户越权操作数据。,6.3.2数据库的安全性在SQLServer中的实现,下面介绍如何使用管理工具和Transaction-SQL语言来管理数据库用户和用户组。使用管理工具1)管理数据库角色使用SQL
16、企业级管理器中的用户组管理可以为指定数据库新建、修改或删除数据库角色(相当于Windows中的用户组)。应该注意的是,只有系统管理员和数据库所有者才有权创建或删除。在创建新数据库角色时,展开要创建角色的数据库,右击其中的“角色”项,在弹出的快捷菜单中选择“新建数据库角色”,然后在“名称”可编辑输入框中输入新的角色名,并单击“添加”按钮将用户添加到该“标准角色”中,按“确定”按钮存盘后,右击该角色,并选择“属性”,在出现“数据库属性角色”对话框中单击“权限”按钮,设定该角色对当前数据库的操作权限。,6.3.2数据库的安全性在SQLServer中的实现,2)管理用户。在SQL企业级管理器中的用户管
17、理窗口中可以创建、修改或删除数据库用户。创建新的数据库用户时,展开要创建用户的数据库,右击其中的“用户”项,在弹出的快捷菜单中选择“新建数据库用户”,出现“数据库用户属性”对话框,在“登录名”中选择或新建一个登录名,在“用户名”可编辑输入框中输入新的用户名,并在“数据库角色成员”多选列表框中选择若干“角色”给该用户,使该用户成为这些“角色”的成员。要删除数据库用户时,在SQL企业级管理器的“用户”管理窗口中从“用户”列表框中选择一个已存在的用户,然后单击“删除”按钮,即可将该用户删除。,6.3.2数据库的安全性在SQLServer中的实现,利用Transaction-SQL语言SQLServe
18、r2000中用于管理用户和用户组的系统存储过程有:Sp_addgroup:创建用户组;Ap_changegroup:改变用户所属用户组;Sp_dropgroup:删除用户组;Sp_adduser:给指定数据库增加用户;Sp_dropuser:删除数据库用户。,6.3.2数据库的安全性在SQLServer中的实现,1)创建用户组系统存储过程Sp_addgroup为指定数据库创建用户组,其格式为:Sp_addgroupgroup_name2)建立数据库用户在建立数据库用户前,必须为该用户建立对应的系统登录标识(用sp_addlogin建立)。使用系统存储过程sp_adduser为指定数据库建立新的
19、用户,sp_adduser语句格式为:sp_adduserlogin_ID,user_name,group_name,6.3.2数据库的安全性在SQLServer中的实现,3)改变用户所属组系统存储过程sp_changergroup用于改变用户所属组,其格式为:sp_changergroupgroup_name,user_name4)删除数据库用户删除数据库用户就等于取消了该用户对指定数据库的访问权限,它把该用户的对应记录从指定数据库的sysusers系统表中删除。Sp_dropuser语句的格式为:Sp_dropuseruser_name,6.3.2数据库的安全性在SQLServer中的实现
20、,5)删除数据库用户组系统存储过程sp_dropgroup删除指定数据库的一个用户组,但它不能删除包含有任何成员的用户组。当组中含有用户成员时,在删除前要先用sp_changegroup语句将其用户转移到其他组中。sp_dropgroup语句的格式为:sp_dropgroupgroup_name,6.3.2数据库的安全性在SQLServer中的实现,2.用户权限管理SQLServer通过用户权限来控制用户对数据库的访问,从而保护用户数据。权限按数据库用户或组进行设置,而不是按系统登录标识设置。根据用户的不同权限层次,可将用户划分为以下四类:系统管理员、数据库所有者、数据库对象所有者、其他数据库
21、用户。,6.3.2数据库的安全性在SQLServer中的实现,下面介绍SQLServer的权限种类、不同类型的用户所拥有的权限和他们可传递的权限,以及用户权限的具体设置方法。权限种类SQLServer的用户权限可以划分为两类:对象权限和语句权限。对象权限管理用户对数据库对象的访问。对象权限语句及作用如表6-4所示。,6.3.2数据库的安全性在SQLServer中的实现,语句权限允许用户执行数据库操作,它们不从属于数据库对象,只能由系统管理员或数据库所有者向用户授权。语句权限适用于下列语句:CREATEDATABASE(只能有系统管理员授权)、CREATEDEFAULT、CREATEPROCED
22、URE、CREATERULE、CREATETABLE、CREATEVIEW、DUMPDATABASE、DUMPTRANSACTION。,6.3.2数据库的安全性在SQLServer中的实现,用户权限1)系统管理员权限系统管理员是SQLServer中具有最高权限的特殊用户,系统对其操作没有任何限制。下面语句只有系统管理员才能执行,并且不能授权给其他用户:创建设备:DISKINIT、DISKREFIT、DISKREINT设备镜像:DISKMIRROR、DISKREMIRRIR、DISKUNMIRROR杀掉进程:KILL重新配置:RECONFIGURE关闭系统:SHUTDOWN执行某些DBCC操作:
23、如DBCCDBREPAIR、DBCCPINTABLE等。系统管理员还具有创建数据库(CREATEDATABASE)的权限,但该权限可以授权给其他用户。,6.3.2数据库的安全性在SQLServer中的实现,2)数据库所有者权限数据库所有者在他所拥有的数据库内享有所有权限,其中下面语句的权限只能有数据库所有者拥有,而不可授予其他用户:CHECHPOINT、DBCC、DROPDATABASE、GRANT、REVOKE、LOADDATABASE、LOADTRANSACTION。数据库所有者所拥有的以下权限可以授权给其他用户:CREATETABLE、CREATEDEFAULT、CREATERULE、CREATEPROCEDURE、CREATEVIEW、DUMPDATABASE、DUMPTRANSACTION。,6.3.2数据库的安全性在SQLServer中的实现,3)数据库对象所有者权限创建数据库对象的用户成为数据库对象的所有者,他拥有该对象的所有权限。除非对象所有者明确授权,否则所有其他用户对此对象无任何权限。对象权限包括:SELECT、UPDATE、INSERT、DELETE、REFERENCE和EXECUTE。下面语句的权限属于表所有者,不能授予其他用户:ALTERTABLE、CREATEINDEX、DROPINDEX、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026下半年初中生物教资面试试讲题库及答案
- 具身智能+音乐创作智能辅助乐器系统方案
- 服务人员跨区工作方案
- ct及mr在腹部疾病诊断的应用
- 信息系统项目管理教程配套讲义第9章项目人力资源管理
- 区域旅游职业发展规划
- 起重吊装工程专项施工方案编制施工工艺
- 2026年安全考试题参考题目(及答案)
- 钢柱安装施工工艺
- java面向对象试题及答案
- 【《基于单片机的老人跌倒报警装置设计》11000字】
- 护士聘用合同简单模板(3篇)
- 华南师范大学2025年心理学(教育心理)本科试题及答案
- 益丰大药房介绍
- 腹部损伤讲解课件
- CNC知识培训课件
- 饮用天然矿泉水生产工艺21课件
- 2025年度旅游业安全生产费用使用计划
- 加气站气瓶充装质量保证体系手册2024版
- 志愿服务证明(多模板)
- 二维材料研究
评论
0/150
提交评论