2016.8.10
关系完整性是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。
完整性通常包括域完整性,实体完整性、参照完整性和用户定义完整性,
其中域完整性,实体完整性和参照完整性,是关系模型必须满足的完整性约束条件。
域完整性约束(Domain Integrity constrains)
域完整性是保证数据库字段取值的合理性。
属性值应是域中的值,这是关系模式规定了的。除此之外,一个属性能否为NULL,这是由语义决定的,也是域完整性约束的主要内容。
域完整性约束是最简单、最基本的约束。
在当今的关系DBMS中,一般都有域完整性约束检查功能。
包括检查(CHECK)、默认值(DEFAULT)、不为空(NOT NULL)、外键(FOREIGN KEY)等约束。
实体完整性约束(Entity integrity)
是指关系的主关键字不能重复也不能取空值。
参照完整性约束(Referential Iintigrity)
是定义建立关系之间联系的主关键字与外部关键字引用的约束条件。
关系数据库中通常都包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。
所谓公共属性,它是一个关系R(称为被参照关系或目标关系)的主关键字,同时又是另一关系K(称为参照关系)的外部关键字。
如果参照关系K的外部关键字不是其主关键字,要么与被参照关系R中某元组主关键字的值相同,要么取空值。
如果参照关系K的外部关键字也是其主关键字,根据实体完整性要求,主关键字不得取空值,因此,参照关系K外部关键字的取值实际上只能取相应被参照关系R中已经存在的主关键字值。
就是说一张表A的主键被另一张表B引用时,
若这个键在表B中不是主键,则可以取空值,或取表A中这个键已经存在的某值;
若这个键在表B中是主键,则不可以取空值,只能取表A中这个键已经存在的某值。
自定义完整性约束(user defined integrity)
是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。
主要包括字段有效性约束和记录有效性。
就是自己定义的一些约束。