数据完整性是指存储在数据库中的数据,应该保持一致性和可靠性。
关系模型允许定义三类数据约束,他们是实体完整性、参照完整性、用户自定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持。
实体完整性约束
实体就是现实中的某个对象,RDBMS中一行代表一个实体。实体完整性就是保证每一个实体都被区别。
- 实体完整性要求每张表都有唯一标识符,每张表中的主键字段不能为空且不能重复。
约束方法:唯一性约束、主键约束、标识列
create table person(id int not null auto_increment primary key comment '主键id',name varchar(30) comment '姓名',id_number varchar(18) unique comment '身份证号');
域完整性
域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。
域完整性是针对某一具体关系数据库的约束条件,它保证表中某列不能输入无效的值。
- 域完整性指列的值域的完整性,如数据类型、格式、值域范围、是否允许空值等。
-
参照完整性
主要是表与表之间的关系,可以通过外键来实现
参照完整性要求关系中不允许引用不存在的实体。
约束方法:外键约束
// 学生表(主表)create table stu(stu_no int not null primary key comment '学号',stu_name varchar(30) comment '姓名');
// 成绩表(从表)create table sc(id int not null aoto_increment primary key comment '主键',stu_no int not null comment '学号',course varchar(30) comment '课程',grade int comment '成绩',foreign key(stu_no) reference stu(stu_no));
外键(FOREIGN KEY)约束定义了表之间的一致性关系,用于强制参照完整性。
用户自定义完整性
借助存储过程和触发器实现。
用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足语义要求。
- 约束方法:规则、存储过程、触发器
