数据完整性是指存储在数据库中的数据,应该保持一致性和可靠性。
关系模型允许定义三类数据约束,他们是实体完整性、参照完整性、用户自定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持。

实体完整性约束

实体就是现实中的某个对象,RDBMS中一行代表一个实体。实体完整性就是保证每一个实体都被区别。

  • 实体完整性要求每张表都有唯一标识符,每张表中的主键字段不能为空且不能重复。
  • 约束方法:唯一性约束、主键约束、标识列

    1. create table person(
    2. id int not null auto_increment primary key comment '主键id',
    3. name varchar(30) comment '姓名',
    4. id_number varchar(18) unique comment '身份证号'
    5. );

    域完整性

    域完整性主要是对列的输入有要求,通过限制列的数据类型、格式或值的范围来实现。

  • 域完整性是针对某一具体关系数据库的约束条件,它保证表中某列不能输入无效的值。

  • 域完整性指列的值域的完整性,如数据类型、格式、值域范围、是否允许空值等。
  • 约束方法:限制数据类型、检查约束、默认值、非空约束

    参照完整性

    主要是表与表之间的关系,可以通过外键来实现

  • 参照完整性要求关系中不允许引用不存在的实体。

  • 约束方法:外键约束

    1. // 学生表(主表)
    2. create table stu(
    3. stu_no int not null primary key comment '学号',
    4. stu_name varchar(30) comment '姓名'
    5. );
    1. // 成绩表(从表)
    2. create table sc(
    3. id int not null aoto_increment primary key comment '主键',
    4. stu_no int not null comment '学号',
    5. course varchar(30) comment '课程',
    6. grade int comment '成绩',
    7. foreign key(stu_no) reference stu(stu_no)
    8. );

    外键(FOREIGN KEY)约束定义了表之间的一致性关系,用于强制参照完整性。

    用户自定义完整性

    借助存储过程和触发器实现。

  • 用户自定义完整性是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足语义要求。

  • 约束方法:规则、存储过程、触发器