DBMS 中的约束

  • Post category:database

DBMS中的约束指的是对关系数据库中数据的限制条件。约束可以保证数据的完整性和一致性,当违反约束时抛出异常并拒绝对数据库进行某些操作。

常见的约束包括:

  • 主键约束:每个表中只能有一个主键,它必须是唯一的、非空的,并且可以用来唯一标识一行数据。主键可以确保数据的唯一性和一致性,同时也能提高查询的效率。

例如,在一个存储学生信息的表格中,我们可以将学生的学号设置为主键。这样在插入新的学生信息时,如果学号已经存在,会被拒绝;在查询学生信息时,可以通过学号快速定位对应的学生记录。

  • 外键约束:外键指的是一个表中的字段,它引用另一个表的主键。外键约束可以确保数据之间的关联和一致性,当试图插入不符合外键约束的数据时,DBMS会拒绝这个操作,并将异常抛出。

例如,在一个存储课程信息的表格中,我们可以设置课程的教师字段引用一个存储教师信息的表格的主键。这样在插入新的课程信息时,必须保证教师信息已经存在,否则会被拒绝;在查询某个教师的所有课程时,可以通过外键快速定位到相应的课程记录。

  • 唯一约束:唯一约束要求一个表中的某个字段的值是唯一的,不允许重复。该约束可以保证数据的唯一性和一致性,但是与主键的不同之处在于,它允许字段为空。

例如,在一个存储学生信息的表格中,我们可以将学生的身份证号设置为唯一约束。这样在插入新的学生信息时,如果身份证号已经存在,会被拒绝;在查询某个学生信息时,可以通过身份证号快速定位到相应的学生记录。

  • 检查约束:检查约束要求一个表中的某个字段必须符合一定的条件,否则会被拒绝。这些条件可以是范围、数据类型、格式等等。

例如,在一个存储学生成绩信息的表格中,我们可以设置成绩字段必须在0到100之间。这样在插入新的成绩信息时,如果成绩不符合条件,会被拒绝;在查询某个学生的成绩时,可以保证成绩的合法性。

以上是DBMS中常见的约束,当然在具体的实际使用中还会有其他的约束。

下面给出一个实例说明:

考虑一个学生选课系统,包含如下表格:

学生表格(Student):

id name sex age
001 张三 20
002 李四 22
003 王五 21

课程表格(Course):

id name teacher
101 数据结构 陈老师
102 算法导论 张老师
103 计算机组成原理 李老师

选课表格(Selection):

id student_id course_id score
1 001 102 90
2 002 101 85
3 003 101 75

我们可以对这三个表格分别设置如下约束:

  • 学生表格添加主键约束
ALTER TABLE Student ADD CONSTRAINT pk_student_id PRIMARY KEY (id);

这样在插入新的学生信息时,如果学号已经存在会被拒绝,保证了学生信息的唯一性和一致性。

  • 课程表格添加主键约束
ALTER TABLE Course ADD CONSTRAINT pk_course_id PRIMARY KEY (id);

这样在插入新的课程信息时,如果课程编号已经存在,会被拒绝,保证了课程信息的唯一性和一致性。

  • 选课表格添加主键约束
ALTER TABLE Selection ADD CONSTRAINT pk_selection_id PRIMARY KEY (id);

这样在插入新的选课信息时,如果选课编号已经存在,会被拒绝,保证了选课信息的唯一性和一致性。

  • 选课表格添加外键约束
ALTER TABLE Selection ADD CONSTRAINT fk_student_id FOREIGN KEY (student_id) REFERENCES Student(id);
ALTER TABLE Selection ADD CONSTRAINT fk_course_id FOREIGN KEY (course_id) REFERENCES Course(id);

这样在插入新的选课信息时,必须保证学生编号和课程编号已经存在,否则会被拒绝。这样保证了选课信息之间的关联和一致性。

  • 选课表格添加检查约束
ALTER TABLE Selection ADD CONSTRAINT chk_score CHECK (score >= 0 AND score <= 100);

这样在插入选课信息时,如果成绩不在0到100之间,会被拒绝。这样保证了选课信息的合法性。