← 返回首页
MySQL基础教程(十一)
发表时间:2020-03-16 21:54:08
讲解数据库的完整性。

数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。

数据库有四种完整性:实体完整性、域完整性、参照完整性、自定义完整性。

1.实体完整性

实体完整性(Entity Integrity)是指关系中的主属性值不能为Null且不能有相同值。定义表中的所有行能唯一的标识,一般用主键,唯一索引 unique关键字,及identity等来保证实体的完整性。比如说我们的身份证号码,可以唯一标识一个人。

2.域完整性

域完整性(Domain Integrity)是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。表中的CHECK、FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。

3.参照完整性

参照完整性(Referential Integrity)属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性,统称为参照完整性。通过建立外键联系另一表的主键,或者使用触发器来维护参照完整性。

4.自定义完整性

用户定义完整性(User-defined Integrity)是对数据表中字段属性的约束,用户定义完整性规则(User-defined integrity)也称域完整性规则。包括字段的值域、字段的类型和字段的有效规则(如小数位数)等约束,是由确定关系结构时所定义的字段的属性决定的。如,百分制成绩的取值范围在0~100之间,年龄不能是负数等。通常我们可以通过数据保存之前程序验证的手段来保证自定义完整性。

小结:

1.实体完整性,记录不能为null且不重复,解决方案是主键。

2.域完整性,数据必须符合某个范围或者精度,解决方案是数据类型或各种约束。

3.参照完整性,正确维护多表之间的关联关系,解决方案是外键。

4.自定义完整性,满足程序的特殊要求,解决方案是程序校验。