以下图片来自西安交通大学侯迪老师的ppt,仅供学习和复习使用,请勿转载或他用
9.1 概述
完整性包括了数据的正确性和相容性
正确性:数据符合现实世界语义
相容性:同一对象在不同关系表中的数据时符合逻辑。
完整性和安全性不是一个概念
必须提供完整性约束条件
违约处理:如果违背了完整性,可以选择拒绝执行或者级连(CASCADE)执行其他操作
9.2 实体完整性
每个表都要有主键
PRIMARY KEY
-
单属性的码可以是列级约束,也可以是表级 -
多属性的只能表级
检查和违约处理:
检查主键是否唯一的方式:
-
全表扫描(耗时) -
B+树索引
9.3 参照完整性
FOREIGN KEY (字段名) REFERENCES 表名(字段名)
参照完整性检查和违约处理
9.4 用户定义完整性
用户定义的完整性是:针对某一具体应用的数据必须满足的语义要求
关系数据库管理系统提供了定义和检验用户定义完整性的机制,不必由应用程序承担
-
属性上的约束
违约处理:
-
元组上的约束
9.5 完整性约束命名子句
9.6 域完整性
9.7 断言
CREATE ASSERTION <断言名> CHECK();
?CREATE ASSERTION A1 CHECK (
? 60>=(
? ? ? ? ?SELECT COUNT(*)
? ? ? ? ?FROM COURSE,SC
? ? ? ? ?WHERE SC.CNO=COURSE.CNO
? )
?);
删除:DROP ASSERTION <断言名>;
练习
?CREATE TABLE EMPLOYEES
?(
? eno varchar(20) PRIMARY KEY,
? name varchar(10),
? age int(3) //或者直接 CHECK (age<=60 AND age>0),
? CONSTRAINT A CHECK (age<=60 AND age>0),
? ....
? dno varchar(10),
? FOREIGN KEY (dno) REFERENCES DEPT(dno)
?)
?...
|