数据库技术与应用数据库完整性数据库完整性数据库的完整性数据的正确性和相容性数据的完整性和安全性是两个不同概念数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据防范对象:不合语义的、不正确的数据数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作数据库完整性(续)例:一条完整性规则在更新“学生成绩”关系中的“成绩”字段时的完整性规则当更新“学生成绩.成绩”之后,判断“成绩是否>=0”,若不是,则进行相关的“规则违反”处理该规则规定:更新“学生成绩.成绩”时进行完整性检查,“成绩是否>=0”为检查条件,最后给出出错后的处理。完整性规则也称完整性约束条件,用有关的语言进行描述,系统加以编译,放入数据库中,可以进行修改和删除数据库完整性(续)为维护数据库的完整性,DBMS必须:提供定义完整性约束条件的机制提供完整性检查的方法违约处理数据库完整性(续)完整性约束的分类完整性约束条件中涉及的约束对象值约束和结构约束•例:在向“学生成绩”关系中插入数据和更新数据时,需检查新的“学号”和“课程号”是否在“学生”关系和“课程”关系中已存在,否则不允许插入和更新。静态约束与动态约束•例:动态约束的例子,在更新“学生”关系中的“年龄”字段时,新值必须大于旧值立即执行约束和延迟执行约束•例:银行业务中,从账户A转移资金X到账户B,约束条件是总资金不变数据库完整性实体完整性参照完整性用户定义的完整性完整性约束命名子句触发器小结实体完整性定义关系模型的实体完整性CREATETABLE中用PRIMARYKEY定义单属性构成的码有两种说明方法定义为列级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法定义为表级约束条件实体完整性定义(续)(1)在列级定义主码CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)NOTNULL,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20));[例1]将Student表中的Sno属性定义为码实体完整性定义(续)(2)在表级定义主码CREATETABLEStudent(SnoCHAR(9),SnameCHAR(20)NOTNULL,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20),PRIMARYKEY(Sno));实体完整性定义(续)CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno)/*只能在表级定义主码*/);[例2]将SC表中的Sno,Cno属性组定义为码实体完整性检查...