数据完整性
来源:互联网 发布:书剑恩仇录 知乎 编辑:程序博客网 时间:2024/05/17 07:43
实体完整性定义:
关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。对单属性构成的码可以定义为列级约束条件,也可以定义为表级约束条件,对多属性构成的码只能定义为表级约束条件。
实体完整性检查:
1、检查主码值是否唯一,如果不唯一则拒绝插入或修改
2、检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
检查主码唯一可以进行全表扫描,但十分耗时,RDBMS核心一般都在主码上建立一个索引,如B+树索引,以提高效率。
参照完整性定义:
关系模型的参照完整性在CREATE TABLE中用FOREIGN KEY短语定义外码,用REFERENCES短语指明这些外码参照哪些表的主码。
参照完整性检查和违约处理:
对被参照表和参照表进行增删改查操作时有可能破坏参照完整性,必须进行检查。
1、拒绝执行
系统默认执行策略,不允许该操作执行
2、级联操作
当删除或修改被参照表的一个元组造成了与参照表不一致,则删除或修改参照表中所有造成不一致的元祖
3、设置为空值
当删除或修改被参照表的一个元组造成了与参照表不一致,则将参照表中所有造成不一致的元祖的对应属性设置为空值,前提是该外码可以为空值。
如想让系统采用2、3策略必须在创建表时显式的加以说明。
CREATE TABLE SC (Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grede SMALLINT CHECK(Grade>=0 AND Grade <=100), PRIMARY KEY (Sno,Cno), FOREIGN KEY(Sno)REFERENCES Student(Sno)ON DELETE CASCADEON UPDATE CASCADE, FOREIGN KEY(Cno)REFERENCES Course(Cno)ON DELETE NO ACTIONON UPDATE CASCADE);
用户完整性定义:
属性上约束条件定义:
1、列值非空(NOT NULL)
2、列值唯一(UNIQUE)
3、检查列值是否满足一个布尔表达式(CHECK)
完整性约束命名子句
CONSTRAINT <完整性约束条件名> [PRIMARY KEY短语|FOREIGN KEY短语|CHECK短语]
CREATE TEBLE Student(Sno NUMERIC(6)CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),Sname CHAR(20)CONSTRAINT C2 NOT NULL,Sage NUMERIC(3)CONSTRAINT C3 CHECK(Sage<30 AND Sage>0),Ssex CHAR(2)CONSTRAINT C4 CHECK(Ssex IN ('男','女')),CONSTRAINT StudentKey PRIMARY KEY(Sno));
C1、C2、C3、C4为四个列级约束,StudentKey为主码约束
修改表中完整性限制:
ALTER TEBLE StudentDROP CONSTRAINT C1;ALTER TABLE StudentADD CONSTRAINT C1 CHECK(Sno BETWEEN 900 AND 999);
域中的完整性限制:CREATE DOMAIN GenderDomain CHAR(2)CONSTRAINT GD CHECK(VALUE IN ('男','女'));ALTER DOMAIN GenderDomainDROP CONSTRAINT GD;ALTER DOMAIN GenderDomainADD CONSTRAINT GDD CHECK(VALUE IN('1','0'));
定义触发器
CREATE TRIGGER <触发器名>
{BEFORE | AFTER } <触发事件> ON <表名>
FOR EACH { ROW | STATEMENT }
[WHEN <触发条件>]
<触发动作体>
删除触发器:
DROP TRIGGER <触发器名> ON <表名>;
触发器执行顺序:
1、执行该表上的BEFORE触发器
2、执行触发器的SQL语句
3、执行该表上的AFTER触发器
对于同一表上的多个BEFORE(AFTER)触发器,按照定义的先后顺序执行(有些RDBMS按照触发器名称的字母排序顺序执行触发器)
-----------------------
摘自《数据库系统概论》,王珊、萨师煊
0 0
- 数据完整性
- 数据完整性
- 数据完整性
- 数据完整性
- 数据完整性
- 数据完整性以及保证数据完整性
- 确保数据完整性
- 数据完整性与约束
- 数据完整性 Data Integrity
- 数据完整性保护
- 数据完整性概述
- 数据库理论-数据完整性
- 维护数据完整性
- SQL Server数据完整性
- 浅析数据完整性问题
- 设计数据完整性
- Linux数据完整性
- 数据的完整性 SQL
- 构造左侧菜单和对应的右侧Tab
- ORACLE存储过程,函数,包,游标
- caffe遇到的Import错误汇总
- 上传组件 (自定义异常展示信息) UploadFileService
- Objective-C 基础 NSString
- 数据完整性
- 导出PDF (iText实现) PdfDownloadDS
- MyBatis--关联关系查询--一对多--多表连接查询
- nova volume-attach代码流程分析
- CompressionUtil
- Android 记住密码和自动登录界面的实现
- 加密解密工具类 EncryptUtil
- 怎么实现PHP的三种HTTP请求模拟post 提交 之三
- 判断用户登录SessionTimeOutFilter