数据库的完整性是指数据的正确性和相容性
数据库的正确性是指数据是符合现实世界语义、反映当前实际情况的;数据的相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的。
数据的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。数据的安全性是保护数据库防止恶意破坏和非法存取,因此,完整性检查和控制的防范对象是不合语义的、不正确的数据,防止他们进入数据库,安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。
为了维护数据库的完整性,数据库管理系统必须能够实现:
关系模型的实体完整性,是指在基本表中主属性不能取空值
create table中用primary key定义(主码)
单属性构成的码有两种说明方法
对多个属性构成的码只有一种说明方法
上述 primary key中的sno和cno都不能为空
关系模型的参照完整性定义
对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查以保证这两个表的相容性
参照完整性是指在基本表中,外码可以是空值或另一个关系主码的有效值。
当上述的不一致发生时,系统可以采用以下策略加以处理。
定义:
constraint <完整性约束条件名><完整性约束条件>
修改:
DROP/ADD
触发器是用户定义在关系表上的一类由事件驱动的特殊过程。
定义
激活
对同一个表上的多个before/after触发器,遵循“谁先创建谁先执行”的原则
1什么是数据库的完整性?
数据库的完整性是指数据的正确性和相容性。
2 .数据库的完整性概念与数据库的安全性概念有什么区别和联系?
数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garba : e In Garba : e out )所造成的无效操作和错误结果。后者是保护数据库防止恶意的破坏和非法的存取。也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
3 .什么是数据库的完整性约束条件?可分为哪几类?
完整性约束条件是指数据库中的数据应该满足的语义约束条件。一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。
静态列级约束是对一个列的取值域的说明,包括以下几个方面: ( l )对数据类型的约束,包括数据的类型、长度、单位、精度等; ( 2 )对数据格式的约束; ( 3 )对取值范围或取值集合的约束; ( 4 )对空值的约束; ( 5 )其他约束。
静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。
静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。
常见的静态关系约束有: ( l )实体完整性约束; ( 2 )参照完整性约束; ( 3 )函数依赖约束。
动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面: ( l )修改列定义时的约束; ( 2 )修改列值时的约束。
动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。
动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。
4 . DBMS 的完整性控制机制应具有哪些功能?
DBMS 的完整性控制机制应具有三个方面的功能:
( l )定义功能,即提供定义完整性约束条件的机制;
( 2 )检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;
( 3 )违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。
5 . RDBMS 在实现参照完整性时需要考虑哪些方面?
关系数据库管理系统在实现参照完整性时需要考虑以下几个方面:
6.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?
对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。
而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。