数据库——完整性
一、
- 数据库的完整性是指数据的正确性和相容性。
- 数据库完整性是为了防止数据库中存在不符合语义的数据,也就是为了防止数据库中存在不正确的数据。
- 数据库安全性:是保护数据库防止恶意的破坏和非法的存取。
- 完整性和安全性区别
- 完整性:检查和控制的防范对象是不合语义的、不正确的数据,防止它们进入数据库;
- 完全:控制的防范对象是非法用户和非法操作,防止它们对数据库非法存取。
二、
为了维护数据库完整性,DBMS应该具有的功能:①提供定义完整性约束条件的机制;②提供完整性检查的方法;③违约处理
1.实体完整性
- 实体完整性定义:
- 关系模型的实体完整性:在CREATE TABLE中用PRIMARY KEY定义(即关系模型用主键/主码来实现实体完整性)。
- 对单属性构成的码有两种说明方法:一种是定义为列级约束条件;另一种是定义为表级约束条件。
- 对多个属性构成的码只有一种说明方法:定义为表级约束条件;
- 实体完整性检查和违约处理:
- 当对基本表插入一条记录或者对主码列进行更新操作时,RDBMS会自动检测下面两项
- 一、检查主码值是否唯一,如果不唯一则拒绝插入或删除;
- 二、检查主码的各个属性是否为空,只要有一个为空就拒绝插入或删除(此时主码为多个属性列的合集)
- 当对基本表插入一条记录或者对主码列进行更新操作时,RDBMS会自动检测下面两项
- 实体完整性定义:
2.参照完整性
1.定义:
-
- 关系模型参照完整性李荣外码来实现参照完整性条件;外键:在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码;
2.参照完整性检查和违约处理:
-
- 拒绝(NO ACTION)执行
- 级连(CASCADE)操作
- 设置为空值
| 被参照表 | 参照表 | 违约处理 |
| 可能破坏参照完整性 | 插入元组 | 拒绝 |
| 可能破坏参照完整性 | 修改外码值 | 拒绝 |
| 删除元组 | 可能破坏参照完整性 | 拒绝/级连删除/设置为空值 |
| 修改主码值 | 可能破坏参照完整性 | 拒绝/级连删除/设置为空值 |
3.用户定义完整性
- 用户定义的完整性就是:针对某一具体应用的数据必须满足的语义要求;
1.属性上的约束条件定义:
-
- 即在CREATE TABLE中定义属性相同时可以根据应用的要求,定义属性上的约束条件,即属性值限制包括:列值非空;列值唯一;检查列值是否满足一个布尔表达式。
2.属性上的约束条件检查和违约处理:不满足条件则操作被拒绝执行。
3.元组的约束条件定义:
-
- 在CREATE TABLE语句中可以用CHECK短语定义元组的约束条件。
- 元组级的限制可以设置不同属性之间的取值的相互约束条件。
4.元组的约束条件检查和违约处理:不满足条件则拒绝执行。
三、
触发器:不是SQL92/SQL99核心SQL规范的内容;触发器类似于约束,但是比约束更加灵活,可以实施比FOREIGN KEY约束、CHECK约束更复杂的检查和操作;
-
- 触发器创建:CREATE TRIGGER <触发器名字> {BEFORE | AFTER} <触发事件> ON <表明> FOR EACH {ROW | STATEMENT} [WHEN <触发条件>] <触发动作体>
- 激活触发器:同一个表触发器激活时遵循的执行顺序:
-
- 1、执行该表上的BEFORE触发器;
- 2、激活触发器的SQL语句;
- 3、执行该表上的AFTER触发器。
-
- 删除触发器:DROP TRIGGER <触发器名> ON <表名>
- 只能由具有相应权限的用户删除触发器。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。


浙公网安备 33010602011771号