数据冗余:是指数据库中存在一些重复的数据,注:为了保持数据的完整性,数据库中是存在一些数据冗余的
数据完整性:是指‘数据库中的数据能够正确地反应实际情况’
数据完整性分为四种:
1.实体完整性约束
2.域完整性约束
3.引用完整性约束
4.自定义完整性约束
1.实体完整性:实体完整性要求表中的每一行数据都反映不同的实体,不能才在相同行。
主要实现方法:唯一约束(unique key),主键约束(primary key),或者标识列约束(自动增长列)
唯一约束:唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。
主键约束:用于强制表的实体完整性。设置主键后该列不能出现重复的数据,且不能为空。一个表中只能有一个主键。
。标识列只能为int类型
2:域完整性约束:域完整性是指给定义列输入的有效性,话句话来说就是用户给该字段设置输入内容的一块区域,只能输入或者导入符合该区域的内容
主要实现方法:检查约束(check key),输入约束,默认值约束(default key),非空约束等多种方法。
检查约束:用于定义列中可接受的数据值或者格式。例如:email like '%@%',表示该列只接受包含@符的字符。
默认值约束:向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到该列中。
非空约束:设置非空约束后就不允许出现null值,未设置是该列是可以出现空值的。
3:引用完整性约束:用来定义表与表之间的关系
主要实现方法:设置主外键。
· 主外键:至少两个表才能定义引用完整性约束,外键与被引用键不必同名称。
注:当主表中没有记录时,子表不能将数据添加 。
主表中的记录不能直接删除,必须先删除子表中的数据后,才能将主表中的数据删除。
4:自定义约束:用来定义特定的规则
主要实现方法:规则,存储过程,触发器
5.唯一约束与主键约束的区别:
1.主键列设置后是不可以为空的。唯一约束是可以为空的。
2.主键列可以用来约束其他外键表,但唯一约束不行。