5.1 数据完整性及其分类
数据表中的完整性约束可以理解成是一种规则或者要求,它规定了在数据表中哪些字段可以输入什么样的值。
5.1.1 数据完整性的分类
数据库不仅要能存储数据,它也必须能够保证所保存的数据的正确性,为此SQL Server为用户提高了完整性约束条件。
数据完整性可分为实体完整性、域完整性和引用完整性,下面进行详细介绍。
(1)实体完整性:指通过表中字段或字段组合将表中各记录的唯一性区别开来。例如,在学生表中,学生之间可能姓名相同,班级编号相同,但是每个学生的学号必然不同。实体完整性的实施方法是添加PRIMARY KEY约束和UNIQUE约束。
(2)域完整性:指表中特定字段的值的有效取值。虽然每个字段都有数据类型,但实际并非满足该数据类型的值即为无效,应合乎情理。例如,学生的出生日期不可能比录入时的日期晚。域完整性的实施方法是添加CHECK约束和DEFAULT约束。
(3)引用完整性:数据库中的表和表之间的字段值是有联系的,甚至表自身的字段值也是有联系的,其中一个表中的某个字段值不但要符合其数据类型,而且必须是引用另一个表中某个字段现有的值。在输入或删除数据记录时,这种引用关系也不能被破坏,这就是引用完整性,它的作用是确保在所有表中具有相同意义的字段值一致,不能引用不存在的值。引用完整性的实施方法是添加PRIMARY KEY约束。
5.1.2 表中的约束条件有哪些
在数据表中添加约束条件归根到底就是要确保数据的准确性和一致性,即表内的数据不相互矛盾,表之间的数据不相矛盾,关联性不被破坏。为此,我们可以从以下几个方面检查数据表的完整性约束。
(1)对列的控制,包括主键约束(PRIMARY KEY)、唯一性约束(UNIQUE)。
(2)对列数据的控制,包括检查约束(CHECK)、默认值约束(DEFAULT)、非空约束(NOT NULL)。
(3)对表之间及列之间关系的控制,包括外键约束(FOREIGN KEY)。
满足完整性约束要求的数据必须具有以下三个特点:
(1)数据值正确无误:首先数据类型必须正确,其次数据的值必须处于正确的范围内。例如,“成绩”表中“成绩”字段的值必须大于或等于0小于或等于100。
(2)数据的存储必须确保同一表格数据之间的和谐关系,例如,“成绩”表中的“学号”字段列中的每一个学号对应一个学生,不可能将一个学号对应多个学生。
(3)数据的存储必须确保维护不同表之间的和谐关系。例如,在“成绩”表中的“课程编号”列对应“课程”表中的“课程编号”列,在“课程”表中“教师编号”列对应“教师”表中的教师编号及相关信息。
微视频