1、域完整性约束
域完整性(Domain Integrity)约束要求属性值必须取自其对应的值域;一个属性值能否为空值由其语义决定.域完整性约束是最基本的约束.
2、实体完整件约束
实体完整性(Entity Integrity)约束的规则是:主关键字值必须是唯一的,且任何组成部分都不能是空值.
这一规则的理论根据如下:由定义可知,任何元组必须是可辨识的.在关系数据库中,主关键字起唯一的标识作用,如果一个标识项(主关键字)全都是空值,就起不到一个标识的作用.这等于说有这样—些元组,它们并没有任何唯一的标识项,即不能和其他元组区别开来.这是不允许的,因此主关键字不能全部为空值.类似地分析表明,即使标识项的一部分是空值也是不能允许的.
3、参照完整件约束
一个关系涉及对另一关系的引用是常有的事.例如,选课关系经由它的属性学号和课程号,既涉及到对学生关系的引用,又涉及到对课程关系的引用.很显然,如果选课关系的一个元组含有学号属性的某个值,比如说是“990027”,那么在学生关系中,学号为“990027”的学生元组就应该存在.否则,选课关系的元组显然涉及到了一个并不存在的学生.这是不允许的;对于课程情况也是如此.为此,必须引入一定的参照完整性约束规则,不允许引用不存在的实体.
参照完整性(Referential Integrity)又称为引用完整性,其约束的规则是:设D是一个主域,R1是一个关系,它有一个在D上定义的属性A.那么,在任何给定的时刻,R1中A的每个值或者是空值,或者等于以A为主关键字的某个关系R2中的一个主关键字值(R1和R2可以相同).
主关键字和外来关键字提供了一种表示元组之间联系的手段.外来关键字要么空缺,要么引用—个实际存在的主关键字.
一个给定的域被选择为主域当且仅当有一个单一属性的主关键字是在这个域上定义的.但是要注意,不是所有能起这种“联系”作用的属性都是关键字.例如,学生和教师之间有一个联系“年龄”,这个联系是由学生关系和教师关系的年龄属性表示的,但年龄并不是外来关键字.
实体完整性约束是一个关系的内部制约,参照完整性约束是不同关系之间或一个关系的不同元组之间的制约.4、用户自定义完整性约束
关系数据库应允许用户自定义完整性约束,它表达了在应用领域中数据必须满足的语义要求.例如.可以给出规则,规定退休年龄男60岁、女55岁.