【概述】
数据库完整性是指数据的正确性和相容性,正确性是指数据是符合现实世界语义、反映当前实际情况的,相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的
数据库的完整性与安全性是两个不同的概念,完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,安全性是为了保护数据库防止恶意的破坏和非法的存取
因此,完整性检查和控制的防范对象是不合语义、不正确的数据,防止他们存入数据库,安全性控制的防范对象是非法用户、非法操作,防止他们对数据库的非法存取
【DBMS 提供功能】
为为维护数据库的完整性,DBMS 必须具有以下功能:
- 提供定义完整性约束条件的机制:通过完整性约束条件,来限定符合数据模型的数据库状态及其变化,以保证数据的正确、有效、相容
- 提供完整性检查的方法:检查数据是否满足完整性约束条件,一般在
INSERT
、UPDATE
、DELETE
语句执行后,或在事务提交时检查 - 违约处理:DBMS 在发现用户操作违背完整性约束条件后,进行违约处理以保证数据完整性
【具体实现】
三大完整性约束
在 关系的完整性约束 中已经介绍了关系数据库的三类完整性约束的基本概念,关于在 SQL 语言中如何实现这些完整性约束见下:
完整性约束命名子句
在 SQL 中,实体、参照、用户定义的完整性均在 CREATE TABLE
语句中定义,一经定义无法修改
为弥补上述缺陷,SQL 在 CREATE TABLE
语句中提供了完整性约束命名子句 CONSTRAINT
,用于对完整性约束条件命名,从而能够更灵活地增删完整性约束条件
关于完整性约束命名子句的详细内容:点击这里
触发器
触发器(Trigger),是用户定义在关系表上的一类由事件驱动的特殊过程,一旦定义,触发器将被保存在数据库服务器中
任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在 RDBMS 核心层进行集中的完整性控制
触发器类似于完整性约束,但比完整性约束更加灵活,可以实施更为复杂的检查和操作,具有更精细、更强大的数据控制能力
关于触发器的详细内容:点击这里