完整性约束
Last updated
Last updated
为了维护数据库中数据和现实世界的一致性,关系数据库中的数据必须满足一定的限制。完整性约束可以由用户检查,也可以由系统来检查。完整性约束检查只有在进行数据库更新操作时才需进行。
域完整性约束
实体完整性约束
引用完整性约束
用户定义完整性约束
域完整性约束规定每一个属性的值应该是其值域中的值。
指定一个值域的通常方法是指定一个数据类型,如整型、实型、字符型等,从而属性的值都应该属于该数据类型。
除此之外,一个属性的值能否为空值(NULL),也是域完整性约束的内容。
关系中主码的值不能为NULL
,每个元组的主码值应是唯一的。
主码包含的所有属性值都不能取空值。
大部分DBMS支持实体完整性约束检查,但不是强制的。
实体完整性约束规定主码包含的所有属性都不能取空值,而不仅是主码整体不能取空值
引用完整性约束是不同关系之间或同一关系的不同元组间的约束,它规定不允许引用不存在的元组。
设F是关系R的一个或一组属性。如果F与关系S的主码K相对应,则称F是关系R的外码(foreign key),并且称关系S为基本关系(基本表),关系R为依赖关系(依赖表)。
引用完整性约束规定依赖关系R中外码F的取值只允许两种可能:1. 空值;2. 等于基本关系S中某个元组的K值(主码值)。
在引用完整性约束中,基本关系S与依赖关系K可以是同一个关系。
通常用check
子句来保证属性值满足指定的条件。
示例:在创建课程信息表时,通过check
子句设置学生的学分不可以为负数: