数据库第五章——数据库完整性
文章目录
数据库的完整性(integrity)是只数据的正确性(correctness)和相容性(compat-ability)。正确性是指数据是符合现实世界语义、翻译当前实际状况的,相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的。
一、实体完整性
1.定义实体完整性
实体完整性在CREATE TABLE再用PRIMARY KEY定义。有两种方式:
//1.定义列属性时用列级约束条件
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2)
);
//2.用表级约束条件定义
CREATE TABLE Student
(Sno CHAR(9) ,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
PRIMARY KEY (Sno)
);
//当定义多个为主码时,只能用第二种
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno,Cno)
);
2.实体完整性检查和违约处理
- 检查主码值是否唯一,如果不唯一则拒绝插入或修改;
- 检查主码的各个属性是否为空,如果一个为空则拒绝插入或修改。
二、参照完整性
1.定义参照完整性
实体完整性在CREATE TABLE再用FOREIGN KEY定义。
CREATE TABLE SC
(Sno CHAR(9) NOT NULL,
Cno CHAR(4) NOT NULL,
Grade SMALLINT,
PRIMARY KEY (Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);