文档介绍:数据库完整性
单世民
数据库完整性
数据库的完整性是指数据库的正确性和相容性例如:性别只能为男或女;本科生的年龄取值范围为14~30岁;学生所在的系必须为学校已开设的系。
完整性是为了防止数据库中不符合语义的数据,防止错误的输入和输出。安全性是保护数据库,防止恶意的破坏和非法存取。
加在数据库数据值上的语义约束条件称为数据库的完整性约束条件,它们作为数据库模式的一部分存入数据库。DBMS中检查数据是否满足完整性条件的机制称为完整性检查。
数据库完整性
为什么要由数据库控制完整性,而不用应用程序来实现完整性控制?
由应用程序来实现完整性控制是有漏洞的。有的应用程序定义的完整性约束条件可能被其他应用程序破坏,造成数据库数据的正确性无法保障。所以,需要使得完整性控制成为DBMS核心支持的功能,为所有的用户和所有的应用提供一致的数据库完整性。
数据库完整性
完整性检查是围绕约束条件进行的,完整性约束条件是完整性控制机制的核心。被约束的对象包括:
关系
元组
列
约束的状态
静态约束:数据库每一确定状态时,数据对象所应满足的约束条件,它反映数据库状态合理性的约束。
动态约束:数据库从一种状态变为另一种状态时,新旧值之间所应满足的约束条件,它是反映数据库状态的变迁的约束。
数据库完整性
完整性约束的种类
关系
元组
列
静态约束
静态关系约束
静态元组约束
静态列级约束
动态约束
动态关系约束
动态元组约束
动态列级约束
数据库完整性
静态列级约束
对数据类型的约束(类型、长度、单位、精度)
数据格式的约束
对取值范围或取值集合的约束
对空值的约束
其它约束
数据库完整性
静态元组约束定义各个列之间的约束
静态关系约束一个关系的各个元组间或者若干关系之间常常存在各种联系或约束。
实体完整性约束
参照完整性
函数依赖约束
关系的不变性
数据库完整性
动态列级约束修改列定义或列值时应该满足的约束
修改列定义时的约束允许空值的列改为不允许空值,当前的值存在空值,则不能。
修改某列的值时的约束新值参照旧值:新工资>=原工资
动态元组约束修改元组时:更新工资:新工资>=原工资+工龄*
动态关系约束是加在关系变化前后状态上的限制条件。
数据库完整性
为了维护数据库的完整性,DBMS必须提供的完整性控制机制包括:
定义完整性约束条件的机制
六类约束
完整性检查的方法
立即执行约束
延迟执行约束
违约处理
拒绝执行操作
级联执行其他操作
实体完整性
定义方法关系模型的实体完整性在CREATE TABLE中用PRIMARY KEY定义。
列级约束条件
表级约束条件