数据库完整性检查详解:实体完整性、参照完整性和自定义完整性
数据库完整性检查详解:实体完整性、参照完整性和自定义完整性
数据库的完整性是指数据的准确性和一致性,保证数据符合预期的规则和逻辑,从而提高数据的可靠性和有效性。为了保证数据库的完整性,数据库管理系统提供了多种完整性约束,主要包括实体完整性、参照完整性和用户自定义完整性。
1. 实体完整性检查
实体完整性检查保证每个关系中的每个元组都能被唯一识别。通常通过主键约束来实现,主键约束要求主键列不能包含空值,并且每个元组的主键值必须唯一。
(1) 在'STUDENT'表中插入一条学生记录,其中插入的学号值为表中已存在的一个学号值,执行语句,查看结果。
INSERT INTO STUDENT (SNO, SNAME, SAGE, SSEX, SDEPT) VALUES ('1001', '张三', 20, '男', '计算机科学与技术');
结果:插入失败,提示违反唯一约束条件。
(2) 在'SC'表中插入一条学生选课记录,学号值为空或课程号值为空,执行语句,查看结果。
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('1001', 'C001', NULL);
结果:插入失败,提示违反非空约束条件。
2. 参照完整性检查
参照完整性检查保证关系之间数据的关联性,确保外键的值存在于其所关联的表的主键中。
(1) 在'SC'表中插入一条学生选课记录,插入的学号值为'STUDENT'表中没有的一个学号,或插入的课程号的值为'COURSE'表中设有的一个课程号。
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('1005', 'C002', 85);
结果:插入失败,提示违反外键约束条件。
(2) 修改'STUDENT'表中某一学生的学号值,该学生在'SC'表中有选课记录,执行语句,查看结果。
UPDATE STUDENT SET SNO = '1006' WHERE SNO = '1001';
结果:更新失败,提示违反参照完整性约束条件。
3. 用户自定义完整性检查
用户自定义完整性检查允许用户根据实际业务需求,自定义数据值的范围、格式等约束条件,例如年龄范围、成绩范围等。
(1) 在'STUDENT'表中插入一条学生记录,其中插入的年龄值为50,执行语句,查看结果。
CREATE TABLE STUDENT (
SNO VARCHAR(10) PRIMARY KEY,
SNAME VARCHAR(20),
SAGE INT CHECK (SAGE BETWEEN 18 AND 30),
SSEX VARCHAR(2),
SDEPT VARCHAR(30)
);
INSERT INTO STUDENT (SNO, SNAME, SAGE, SSEX, SDEPT) VALUES ('1007', '李四', 50, '男', '信息管理');
结果:插入失败,提示违反自定义完整性约束条件。
(2) 在'SC'表中插入一条学生选课记录,其中插入的成绩值为120,执行语句,查看结果。
CREATE TABLE SC (
SNO VARCHAR(10) REFERENCES STUDENT(SNO),
CNO VARCHAR(10) REFERENCES COURSE(CNO),
GRADE INT CHECK (GRADE BETWEEN 0 AND 100)
);
INSERT INTO SC (SNO, CNO, GRADE) VALUES ('1002', 'C003', 120);
结果:插入失败,提示违反自定义完整性约束条件。
总结
通过实体完整性、参照完整性和用户自定义完整性检查,可以有效保证数据库数据的准确性和一致性,提高数据库的可靠性和有效性。在实际应用中,需要根据具体的业务需求,选择合适的完整性约束,以确保数据的完整性和一致性。
原文地址: https://www.cveoy.top/t/topic/kD6d 著作权归作者所有。请勿转载和采集!