数据库的完整性
- 实体完整性
- 参照完整性
- 用户定义完整性
实体完整性
1数据的正确性
是指数据是符合现实世界语义,反映当前实际状况的
2数据的相容性
是指数据库同一对象在不同关系表中的数据是符合逻辑的
* 数据的完整性和安全性的区别
- 数据的完整性 : ①防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据
②防范对象:不合语义,不正确的数据
2.数据的安全性:①保护数据库 防止恶意的破坏和非法的存取②防范对象:非法用户和非法操作
完整性是阻止合法用户通过合法操作向数据库中加入不正确的数据
安全性防范的是非法用户和非法操作存取数据库中的正确数据
* 为维护数据库的完整性,数据库管理系统必须: - 提供定义完整性约束条件的机制
- 提供完整性检查机制(①数据库管理系统中检查数据是否满足完整性约束的机制称为完整性检查②一般在INSERT.UPDATE.DELETE语句执行后开始检查,也可以在事务提交时检查)
- 违约处理(①拒绝执行该操作②级连执行其他操作)
RDBMS完整性控制机制的3个组成部分
- 定义机制
- 检查机制
- 违约机制
实体完整性
- 实体完整性定义
*关系模型的实体完整性
CRRATE TABLE 中用PRIMARY KEY定义
-单属性构成的码有两种说明方法
*定义为列级约束条件
*定义为表级约束条件 - 对多个属性构成的码只有一种说明方法
*定义为表级约束条件
实体完整性检查和违约处理
*插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查
(1检查主码值是否唯一如果不唯一则拒绝插入或修改2检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改)
*检查记录中主码值是否唯一的一种方法是进行全表扫描
- 表扫描缺点:十分耗时
- 为避免对基本表进行全表扫描,RDBMS核心一般都在主码上自动建立一个索引
参照完整性
-
参照完整性定义
*在CREATE TABLE 中用FOREIGN KEY 短语定义哪些列为外码
*用REFERENCES短语指明这些外码参照哪些表的主码 -
参照完整性检查
*一个参照完整性将两个表中的相应元组联系起来
*对被参照表进行增删改操作时有可能破坏参照完整性,必须检查
-
- 参照完整性检查和违约处理
*拒绝执行
*级联操作
*设置为空值
用户定义完整性
用户定义的完整性是:针对某一具体应用的数据必须满足的语义要求
*关系数据库管理系统提供了定义和检验用户定义完整性的机制,不必由应用程序承担
- CREATE TABLE 时定义属性上的约束条件
1列值非空
2列值唯一
3检查列值是否满足一个条件表达式 - 属性上的约束条件检查和违约处理
1插入元组或修改属性的值时,关系数据库管理系统检查属性上的约束条件是否被满足
2如果不满足则操作被拒绝执行
元组上的约束条件的定义 - 属性上的约束条件:只涉及单个属性
- 元组级的限制:可以设置不同属性之间的取值的相互约束条件
- 在CREATE TABLE时可以用CHECK子句定义元组上的约束条件
- 元组上的约束条件检查和违约处理
1插入元组或修改属性的值时。关系数据库管理系统检查元组上的约束条件是否被满足
2如果不满足则操作被拒绝执行