文档介绍:第五章:数据库的完整性与安全性
数据库的完整性与安全性
数据库的完整性
数据库的安全性
数据库的故障与恢复
数据库的完整性
完整性约束概述
完整性的语义约束和检查
SQL中的完整性约束
完整性约束概述
完整性约束
当授权用户修改数据库中的数据时,完整性约束提供保证数据一致性的手段。因此,完整性约束防止的是对数据的意外破坏。
已知两种E-R模型的完整性约束:
码(key)声明:约定在给定实体集上的某些属性构成一个候选码。
联系的模式:多对一、一对多和一对一。
一个完整性约束可以是与数据库有关的任意谓词,但检测任意谓词的代价可能太高,因此,通常只局限于只需极小开销就可检测的完整性约束。
完整性的语义约束和检查
完整性约束条件定义机制
(1)数据模型的组成部分约束数据库中数据的语义。
(2) DBMS应提供定义数据库完整性约束条件,并把它们作为模式的一部分存入数据库中。
完整性检查机制
检查用户发出的操作请求是否违背了完整性约束条件。
违约反应
如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
完整性的语义约束和检查
完整性规则集
一组完整性约束规则(Integrity Constraint)。完整性约束规则包含完整性约束条件、规则的触发条件和“ELSE子句”。
完整性约束条件可以看作是一个谓词(Predicate)
所有正确的保持完整性的数据库状态都应当满足这个谓词。
规则触发条件
规定何时使用该规则做检查。
ELSE子句
规定当完整性约束条件不满足时须做的操作。
完整性的语义约束和检查
数据的完整性约束分类。
(1)域完整性约束
规定属性的值必须符合某种数据类型并且取自某个数据定义域。域完整性约束施加于单个数据上。
(2)关系完整性约束
目的是维持用户规定的函数依赖。
(3)参照完整性约束
一个关系中给定属性集上的取值应在另一关系的某一属性集的取值中出现。
静态约束:对数据库状态的约束。例如:0<年龄<150。
动态约束:对数据库状态转换的约束。例如:年龄只能增长。
完整性的语义约束和检查
SQL中的完整性约束
基本表约束
(1)字段数据类型检查。
(2)NOT NULL选项。
(3)主关键字。
(4)外来关键字。
(5)UNIQUE约束。
(6)CHECK子句。
SQL中的完整性约束
域约束
域约束规则的形式是
CHECK (… VALUE …)
例:保证每个小时工资域的值必须大于10元。
create domian hourlywage numeric(5,2)
constraint wage-walue-test check(value>=10)