首页 理论教育MySQL数据库设计与实现-数据完整性分类

MySQL数据库设计与实现-数据完整性分类

【摘要】:参照完整性是相关联的两个表之间的约束,具体来说,就是从表中每条记录外键的值必须是主表中存在的。数据完整性由数据库设计人员设置完整性,由DBMS实施完整性。

数据完整性可分为4种类型:实体完整性(Entity Integrity)、域完整性(Domain Integrity)、参照完整性(Referential Integrity)和用户定义完整性(Userdefined Integrity)。

1.域完整性

域即是列(字段)。域完整性即列(字段)的完整性,确保列值有效(确保列值的准确性和一致性)。例如,学生成绩不能超过100分,姓名字段值不能为空(NULL)等都是域完整性的例子。

通过限制数据类型、检查约束、输入格式、默认值、非空约束等多种方法,可以用来实现表的域完整性。这些方法的实现将在后面说明。

2.实体完整性

确保实体有效。实体完整性又称为行完整性,是指任何一个实体都存在区别于其他实体的特征。

在一个关系中,实体的特征是由行中的字段值来区别的。在一个关系中,如果存在相同的两行,那么这个关系中的数据是不满足实体完整性的。

保证实体完整性,或者说保证关系中不存在相同的两行主要是通过主键(Primary Key)、唯一索引(Unique Index)和标识字段(Identity Column)等机制来实现的。

对于实体完整性,有如下规则:

➢ 实体完整性规则针对基本关系。一个基本关系表通常对应一个实体集,例如,学生关系对应学生集合。

➢ 现实世界中的实体是可以区分的,它们具有一种唯一性质的标识。例如,学生的学号、教师的职工号等。

➢ 主键作为唯一的标识,且不能为空。(www.chuimin.cn)

3.参照完整性

参照完整性又称引用完整性,它是指主关系表(被参照表)中的数据与从关系表(参照表)中数据的一致性。

参照完整性主要是通过它定义表间的主键和外键来实现。

参照完整性是相关联的两个表之间的约束,具体来说,就是从表中每条记录外键的值必须是主表中存在的。因此,如果在两个表之间建立了关联关系,则对一个关系进行的操作要影响到另一个表中的记录。

例如,如果在学生表和选修课之间用学号建立关联,学生表是主表,选修课是从表,那么,在向从表中输入一条新记录时,系统要检查新记录的学号是否在主表中已存在,如果存在,则允许执行输入操作,否则拒绝输入,这就是参照完整性。

4.用户定义完整性

实体完整和参照完整性是关系模型最基本的要求。除此之外,在面向具体的应用时,用户还可以根据实际需要定义一些特殊的约束条件。这种针对具体应用的、由用户定义的特殊约束条件就是用户定义完整性。

用户定义完整性通常是由规则、触发器、表约束等机制来实现的。

实际上,域完整性中有一部分也是由用户来定义的,如将成绩字段的取值范围定义在0~100等,但不是全部由用户定义,如有的是由数据类型等自动约定的。所以,用户定义完整性和域完整性是相交关系,但不是隶属关系。

数据完整性由数据库设计人员设置完整性,由DBMS实施完整性。因此,在应用开发时用户应在DBMS中定义数据的完整性,然后由DBMS自动检查并给出响应提示信息,而不应由应用程序来保证数据的完整性。