数据完整性:是指存储在数据库中的所有数据值均正确的状态。
四种类型的完整性约束:
1、实体完整性约束:
表中的每一行数据都反映不同的实体,不能存在相同的数据行.
通过索引.唯一约束,主键约束或标识列属性,可以用来实现表的实体完整性.
索引:将文献中具有检索意义的事项(可以是人名、地名、词语、概念、或其他事项)按照一定方式有序编排起来,以供检索的工具书。
数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。
唯一约束:
比如一张表的学生姓名设置了唯一约束,那么学生的姓名就是不能重复的,只能是唯一的
唯一约束保证在一个字段或者一组字段里地数据与表中其它行的数据相比是 唯一的附上与主键约束的区别,以更好理解创建唯一约束可确保在未参与主键的特定列中不输入重复值。尽管唯一约束和主键都强制唯一性,但如果情况如下,则应向表附加唯一约束而不是主键约束: 希望在某一列或某一组列中强制唯一性。您可以向表附加多个唯一约束,但只能向表附加一个主键约束。希望在允许空值的列中强制唯一性。您可以向允许空值的列附加唯一约束,但只能向不允许空值的列附加主键约束。当向允许空值的列附加唯一约束时,请确保在所约束的列中最多只有一行包含空值。
2、域完整性约束:
指给定列的输入有效性
通过
限制数据类型,
检查约束,
输入格式,
外键约束,
默认值,
非空约束
等多种方法,可以用来实现表的域完整性.
3、参照完整性约束:
在输入或删除数据行时,引用完性约束用来保持表之间已定义的关系
4:、用户定义的完整性约束:
用来定义特定的规则,例如,向用户信息表中插入一个用户记录时,要求通过身份证编号来检查另外一个数据库中是否存在该用户,并且该用户的信誉度是否满足要求等.如果不满足要求则不能够插入,这个时候就需要使用数据库的规则存储过程或者触发器来进行约束