华科数据库系统原理第五章——完整性控制PPT教学课件

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例如:若SC中外码值XH,无一个与主码值(Student.XH, course.KH)对应时才删去student、course中相应元组。
③ 置空值删除(nullifies/set null)
·删去被参照关系中元组;
·参照关系中所有与被参照关系中已删去的主码值相等的外码值
置为空值。
如:删去部门表中的某个部门,则职员表中原来属于该部门的职
第5章 数据库完整性
5.1 概述
1、定义( integrity)
——数据的正确性,有效性和相容性。
(防止不符合语义的数据的I/O)
2、功能
1)完整性要求定义;
2)监督事务执行,测试是否违反完整性限制条件;
3)若发生违反情况,则进行相应处理(拒绝、报告、纠正)。
5.2 完整性约束条件
1、基本概念
① 定义
2020/12/10
8
2、参照完整性(referential integrity) ——对外码施加的完整性控制。(回忆第二章定义)
参照关系:外码所在关系,如SC
被参照关系:主码(同时又是另一关系中的外码)所在 关系,如student,course。
外码:sc中的XH,KH
1)空值情况
① 为空(SC中XH为空,表示无这个学生,或无学号学生选 修了课程,不合应用语义) ,或;
——DB中数据之上的语义限制条件
② 约束对象
列级、元组级、关系级
2020/12/10
1
③ 约束对象状态 ·静态:反映数据库状态合理性的约束。 ·动态:反映数据库状态变迁的约束。 ④ 约束时机(Immediate constraints) (1)立即约束 ——一条语句执行完后立即检查。 (2)延迟约束(deferred constraints) ——事务执行结束后检查。 转帐,从A到B后,帐才能平,才能进行检查。
2020/12/10
6
6、动态元组约束 ——修改元组时新旧值间的约束。 例如新工资不低于原工资+工龄*1.5。
7、动态关系约束 ——施加于关系上的前后状态的约束 ① 一致性 ② 原子性
2020/12/10
7
5.3 完整性控制
1、实体完整性(entity integrity)
——对关系模式主属性施加的完整性控制。
删去student中XH=‘99001’的元组 (删去course中KH=‘01’的元组) 则捆绑删除SC中学号为99001(课号为01)的所有元 组
·参照关系中与被参照关系中码值对应元组删除 ·可能层层牵连
若SC又是另一参照关系的被参照关系,则可能又删除 之……。
2020/12/10
10
② 受限删除(restricted) ——参照关系没有一个外码与要删除的被参照关系的主码值相对 应时才执行删除。
3
③ 值域约束 成绩≤100,年龄≤150,性别={男,女} ④ 空值约束 是否允许空值列。 如成绩可为空。 ⑤ 其它约束(如:列的排序、是否唯一等等)
3、静态元组约束 ——对一个(仅一个)元组中各列值间联系的约束。 如:总额≥单价 工龄<年龄
2020/12/10
4
4、静态关系约束 ——对一个关系中若干元组之间或若干关系的联系 的约束。 ① 实体完整性约束; ② 参照完整性约束; ③ 函数依赖约束; ④ 统计约束;
·具体应用中,根据应用需求选择上述方法执行。 ·DBMS提供机制支持用户选择。
2020/12/10
13
3、用户定义完整性(integrity of user definition)
1)空值控制 ——对给定属性施加不允许空值限制(NOT NULL) 2)单个属性控制 为:(CJ is Null) OR (CJ BETWEEN 0 AND 100) 3)多属性控制 如:XB=‘男’ AND YL<=30
员的所属部门号置空。
上述三种,选择哪一种实施,视应用需求确定。
如:学籍管理中,学生离校了,删去选课及学生信息,故需
捆绑删除(course不删)student信息。
·DBMS提供相应选择机制。
2020/12/10
11
3)修改被参照关系主码值情况 ① 捆绑修改(cascade) ·修改被参照关系中主码值。 如修改student中的XH=99003改为XH=99020 ·同时修改参照关系中相等外码值。 则同时SC中所有99003改为99020 ·可能逐层牵连。
② 对应被参照关系中该元组存在;
③ 是否可为空,据应用语义确定。
DEPT(DH,DM,DD), EMPL(DH,EH,XM) EMPL中DH可为空,表示该职员还未分配到任何部门工作。
2020/12/10
ቤተ መጻሕፍቲ ባይዱ
9
2)删除被参照关系元组情况 ① 捆绑删除(cascade) ——参照与被参照关系中相关者一起删除。 ·被参照关系中外码元组删除 例如:删除99001号学生(或者01号课程)
如:职工最低工资不能低于本部门职工平均工资的 50%。
2020/12/10
5
5、动态列级约束 ——修改列定义或列值时的约束。 ① 修改定义约束 ——修改定义时新老值间的约束。 如:将允许空值列改为不允许空值时,若该列值已有 空值,则不可修改。 ② 修改值约束 ——修改时新旧值间的约束。 如年龄不能修改得更小。
2020/12/10
12
② 受限修改(restricted) ——仅当参照关系中没有一个外码值与被参照关系中某个元组主 码值相等时才可修改被参照关系中的该元组主码值。
如:仅当SC中学生无99003时,才可修改student中 XH=99003。 ③ 置空值修改(nullifies) ·修改被参照关系中的主码值; ·将参照关系中的与该主码值相等的外码置为空值。 ④ 说明
2020/12/10
2
2、静态列级约束 ——对一个列的取值域的约束。 ① 数据类型约束 类型、长度、单位、精度 如XM为C型,长8位;YL为I型,长3位。 ② 数据格式约束 如工作证号前2位表示省,后3位表示县,后4位表示单
位顺序号,后5位表示个人顺序号。
应用程序能做的事情, 数据库也可以做
2020/12/10
不允许空,在关系中取值唯一
例: student (XH,XM,XB,YL)
XH不能为空且唯一
course(KH,KM)
KH不能为空且唯一
Sc(XH,KH,CJ)
(XH,KH)不能为空且唯一
Create table student (XH Char (6) NOT NULL,…,);
PRIMARY KEY
相关文档
最新文档