8.1 数据库完整性的概念及分类
1、数据库完整性的概念
数据库完整性是指DBMS应保证DB的一种特性——在任何情况下的正确性、有效性和一致性
广义完整性:语义完整性、并发控制、安全控制、DB故障恢复等
狭义完整性:专指语义完整性,DBMS通常有专门的完整性管理机制与程序来处理语义完整性问题
关系模型中有完整性要求:
- 实体完整性
- 参照完整性
- 用户自定义完整性
2、引发完整性问题的因素
不正当的数据库操作,如输入错误、操作失误、程序处理失误等
数据完整性管理的作用:防止和避免数据库中不合理数据的出现;DBMS应尽可能地防止DB中语义不合理现象;如DBMS不能自动防止,则需要应用程序员和用户在进行数据库操作时处处加以小心,每写一条SQL语句都要考虑是否符合语义完整性,这种工作负担是非常沉重的,因此应尽可能多地让DBMS来承担。
3、保证数据库完整性的方法
- DBMS允许用户定义一些完整性约束规则(用SQL-DDL来定义)
- 当有DB更新操作时,DBMS自动按照完整性约束进行检测,以确保更新操作符合语义完整性
完整性约束条件(或成完整性约束规则)的一般形式
Integrity Constraint ::=(O, P, A, R)
O:数据集合
P:谓词条件
A:触发条件
R:响应动作
4、数据库完整性的分类
(1)按约束对象分类
约束结构:来自于模型的约束,例如函数依赖约束、主键约束(实体完整性)、外键约束(参照完整性),只关心数值相等与否、是否允许控制等
内容约束:来自于用户的约束,如用户自定义完整性,关心元组或属性的取值范围。
(2)按约束状态分类
静态约束:要求DB在任意时候均应满足的约束
动态约束:要求DB从一状态变为另一状态时应满足的约束
8.2 利用SQL语言实现数据库的静态完整性
(1)SQL语言支持的约束类别
静态约束:
- 列完整性——域完整性约束
- 表完整性——关系完整性约束
动态约束:触发器
(2)SQL语言实现约束的方法——Create Table
Create Table:定义关系模式、定义完整约束和定义物理存储特性
定义完整性约束条件:列完整性、表完整性
Col_constr列约束是一种域约束类型,对但一列的值进行约束
引用另一表tablename的列colname的值,如有ON DELETE CASCADE 或ON DELETE SET NULL语句,则删除被引用表的某列值v 时,要将本表该列值为v 的记录删除或列值更新为 null;缺省为无操作。
Col_constr列约束:只能应用在单一列上,其后面的约束如UNIQUE, PRIMARY KEY及search_cond只能是单一列唯一、单一列为主键、和单一列相关
(3)SQL语言实现约束的方法-断言
一个断言就是一个谓词表达式,它表达了希望数据库总能满足的条件
表约束和列约束就是一些特殊的断言
SQL还提供了复杂条件的断言,其语法为
CREATE ASSERTION < assertion-name > CHECK< predicate >
当一个断言创建后,系统将检测其有效性,并在每一次更新中测试更新是否违反该断言。
8.3 利用SQL语言实现数据库的动态完整性
1、SQL语言支持的约束类别
静态约束:列完整性,表完整性
动态约束:触发器
2、实现数据库动态完整的方法—触发器Trigger
CreateTable中的表约束和列约束基本上都是静态的约束,也基本上都是对单一列或单一元组的约束(尽管有参照完整性),为实现动态约束以及多个元组之间的完整性约束,就需要触发器技术Trigger
Trigger是一种过程完整性约束(相比之下,Create Table中定义的都是非过程性约束),是一段程序,该程序可以在特定的时刻被自动触发执行,比如在一次更新操作之前执行,或在更新操作之后执行。
触发器Trigger意义:当某一事件发生时(Before|After),对该事件产生的结果(或是每一元组,或是整个操作的所有元组), 检查条件search_condition,如果满足条件,则执行后面的程序段。条件或程序段中引用的变量可用 corr_name_def来限定。
小结
8.4 数据库安全性的概念及分类
(1)数据库安全
数据库安全性是指DBMS应该保证的数据库的一种特性(机制或手段):免受非法、非授权用户的使用、泄漏、更改或破坏
(2)数据库安全性的分类
(3)数据库管理员的责任和义务
8.5 数据库自主安全性机制
(1)数据库自主安全性
(2)DBMS怎样实现数据库自主安全性
(3)一个自主安全性控制的例子
(4)自主安全性的实现方式
8.6 利用SQL语言实现数据库自主安全性
(1)SQL语言的用户与权利
(2)SQL-DCL的命令及其应用
(3)SQL-DCL的控制安全性示例
8.7 安全性控制的其他简介
(1)自主安全性的授权过程及其问题
(2)强制安全性