内容正文:
数据库的安全性控制和完整性控制
第6章
目录
01
数据库的
安全性控制
02
数据库的
完整性控制
本章主要内容
如今,世界上大量的信息系统均使用了数据库技术,数据在信息系统中的价值变得越来越重要,数据库系统的安全和其对数据的保护成为一个越来越值得关注的方面。数据库系统中的数据由数据库管理系统统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,需要对数据库实施保护,使其免受某些因素对其中数据的破坏。
数据库的数据保护主要是指数据库的安全性控制和完整性控制。数据库的安全性和完整性是两个既有联系又不完全相同的概念。
数据库的完整性控制
第6章
02
6.2 数据库的完整性控制
数据库的完整性是指存放在数据库中的数据的一致性和准确性。事务是SQL Server中的一个逻辑工作单元,该单元将被作为一个整体进行处理。
锁可以防止用户读取正在由其他用户更改的数据并防止多个用户同时更改相同的数据。事物和锁都是用来保证数据完整性和一致性的机制。
6.2.1数据库的完整性含义
数据库的完整性是为了防止数据库中存在不符合语义规定的数据和防止因错误信息的输入/输出造成无效操作或错误信息而提出的。
数据库的完整性有3种类型:实体完整性、参照完整性、用户自定义完整性。
在SQL Server中可以通过各种规则、默认值和约束等数据库对象来保证数据库的完整性。
6.2.2 规则
规则(Rule)就是数据库中对存储在表中的列或用户定义数据类型中的值的规定和限制。规则是单独存储的独立的数据库对象。
规则与其作用的表或用户定义数据类型是相互独立的,即表或用户定义数据类型的删除、修改不会对与之相连的规则产生影响。
6.2.2 规则
1.完整性规则主要由以下三部分构成。
(1)触发条件:规定系统什么时候使用规则来检查数据。
(2)约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。
(3)违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取哪些措施来保证数据库的完整性。
6.2.2 规则
一条完整性规则可以用一个五元组(D, O, A, C, P)形式化地表示。
D(Data)代表约束作用的数据对象,可以是关系、元组和列三种对象。
O(Operation)代表触发完整性检查的数据库操作,即当用户发出什么操作请求时需要检查该完整性规则,是立即执行还是延迟执行。
A(Assertion)代表数据对象必须满足的语义约束,这是规则的主体。
C(Condition)代表选择作用的数据对象值的谓词。
P(Procedure)代表违反完整性规则时触发执行的操作过程。
6.2.2 规则
2.创建规则
CREATE RULE语句用于在当前数据库中创建规则,其语法格式如下。
CREATE RULE rule_name AS condition_expression
[例6.1] 创建性别规则。
CREATE RULE sex_rule AS @sex in (`男`,`女`);
6.2.2 规则
3.规则的绑定与松绑
创建规则后,规则只是一个存在于数据库中的对象,并未发生作用。需要将规则与数据库表或用户定义数据类型联系起来,才能达到创建规则的目的。
联系的方法称为绑定,所谓绑定就是指定规则作用于哪个表的哪一列或哪个用户定义数据类型。表的一列或一个用户定义数据类型只能与一个规则绑定,而一个规则可以绑定多个对象。解除规则与对象的绑定称为松绑。
6.2.2 规则
(1)用存储过程sp_bindrule绑定规则
系统存储过程sp_bindrule可以将一个规则绑定到表的一个列或一个用户定义数据类型上,其语法格式如下。
sp_bindrule [@rulename =] 'rule’,
[@objname =] 'object_name’
[, [@futureonly=]'futureonly’];
【例6.3】绑定sex_rule到S表的Sex。
EXEC sp_bindrule 'sex_rule', 'S.Sex';
6.2.2 规则
(2)用存储过程sp_unbindrule解除规则的绑定
存储过程sp_unbindrule可解除规则与列或用户定义数据类型的绑定,其语法格式如下。
sp_unbindrule [@objname =] 'object_name’
[,[@ futureonly = ] 'futureonly’ ];
【例6.4】解除已绑定到S表的字段Sex的规则。
EXEC sp_unbindrule 'S.Sex';
6.2.2 规则
4.删除规则
使用DROP RULE命令可