资源预览内容
第1页 / 共52页
第2页 / 共52页
第3页 / 共52页
第4页 / 共52页
第5页 / 共52页
第6页 / 共52页
第7页 / 共52页
第8页 / 共52页
第9页 / 共52页
第10页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据库系统概论数据库系统概论 An Introduction to Database SystemAn Introduction to Database System第五章第五章 数据库完整性数据库完整性1An Introduction to Database System第五章 数据库完整性什么是数据库的完整性什么是数据库的完整性? ?n数据的正确性和相容性n防止不合语义的、不正确的数据进入数据库。例:学生的年龄必须是整数,取值在6-50间;学生的性别只能是男或女;学生的学号一定是唯一的;学生所在的系必须是学校已有的系;n完整性:保证数据库能否真实地反映现实世界.区别数据区别数据完整性完整性和和安全性安全性的两个概念。的两个概念。2An Introduction to Database System完整性约束条件是数据模型的组成部分, 约束数据库中数据的语义。检查用户发出的操作请求是否违背了完整 性约束条件。 操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的 操作操作来保证数据的完整性。来保证数据的完整性。为保证完整性,为保证完整性,DBMSDBMS必须做到:必须做到:1.完整性约束条件定义机制2.完整性检查机制3.违约反应 第五章 数据库完整性3An Introduction to Database System第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定义完整性5.4 完整性约束命名子句5.5 触发器4An Introduction to Database System5.1 实体完整性1.1.实体完整性定义实体完整性定义在CREATE TABLE语句中用PRIMARY KEY定义n 码由单字段构成:定义可以为列级或表级约束;n 码由多字段构成:定义只能为表级约束;5An Introduction to Database System5.1 实体完整性例1在数据库中,定义Student表的Sno属性为主码。定义在列级约束:CREATE TABLE Student (Sno CHAR(8) , Sname CHAR(8),Sage INT); 定义在表级约束:CREATE TABLE Student (Sno CHAR(8),Sname CHAR(8),Sage INT, );PRIMARY KEY,PRIMARY KEY(Sno);6An Introduction to Database System5.1 实体完整性例2在SC表中定义(Sno,Cno)为主码。CREATE TABLE SC ( Sno CHAR(5),Cno CHAR(2),Grade SMALLINT,PRIMARY KEY (Sno, Cno);7An Introduction to Database System5.1 实体完整性2.2.实体完整性检查和违约处理实体完整性检查和违约处理(1)完整性检查当用户进行插入记录或修改主码时,DBMS系统自 动检查:n 检查主码值是否惟一;n 检查每个主属性值是否为空。 (2)违约处理拒绝插入或修改操作。8An Introduction to Database System5.1 实体完整性2.2.实体完整性检查和违约处理实体完整性检查和违约处理(3)检查主码是否惟一的方法 n 全表扫描n依次判断表中每一个记录的主码值与插入记 录的主码值是否一致。n缺点:效率低n 利用主码的B索引n优点:效率高9An Introduction to Database System5.1 实体完整性keyF1F2F3 3 25 20 15 93 79 65 84 71 51 7 30 41 54 65 69 68255112 3066 783 715 20 25 30 4151 54 6568 69 71 7679 84 9310An Introduction to Database System第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定义完整性5.4 完整性约束命名子句5.5 触发器11An Introduction to Database System5.2 参照完整性1.1.参照完整性定义参照完整性定义在CREATE TABLE语句中:n 用 FOREIGN KEY 短语定义外码列;n 用 REFERENCES 短语指明外码参照哪个表的主码。12An Introduction to Database System5.2 参照完整性例3在SC表中的参照完整性。CREATE TABLE SC CREATE TABLE SC ( (SnoSno CHAR(8) CHAR(8) NOT NULLNOT NULL, ,CnoCno CHAR(3) NOT NULL, CHAR(3) NOT NULL,Grade SMALLINT, Grade SMALLINT,PRIMARY KEY ( PRIMARY KEY (SnoSno, , CnoCno),),FOREIGN KEY (FOREIGN KEY (CnoCno) REFERENCES ) REFERENCES course(Cnocourse(Cno) ) ON DELETE CASCADEON DELETE CASCADE); );REFERENCES REFERENCES student(Snostudent(Sno),),13An Introduction to Database System5.2 参照完整性例3在SC表中的参照完整性。ALTER TABLE SC ALTER TABLE SC ADD FOREIGN KEY (SNO) ADD FOREIGN KEY (SNO) REFERENCES STUDENT(SNO) REFERENCES STUDENT(SNO)14An Introduction to Database System2. 2. 参照完整性检查和违约处理参照完整性检查和违约处理对被参照表和参照表进行增、删、改操作 时进行检查有四种情况可能破坏参照完整性:参照表中l插入一个新元组;l修改外码值;被参照表中l删除一个元组;l修改主码值。5.2 参照完整性15An Introduction to Database System当参照完整性不一致时,系统采取以下策略:n拒绝执行(默认策略) n级联操作(CASCADE)当删除或修改被参照表的一个元组造成与 参照表不一致时,则删除或修改参照表中所有 不一致的元组。n设置为空(SET-NULL)当删除或修改被参照表的一个元组造成与 参照表不一致时,则将参照表中所有造成不一 致的元组对应属性置空。5.2 参照完整性定义参照完整性时,除了定义外码,还应 定义外码是否允许为空。16An Introduction to Database System例:要删除Student关系中Sno=950001的元组,而SC 关系中有4个元组的Sno都等于950001。n置空值删除:将SC关系中所有Sno=950001的元组Sno置空。n级联删除:将SC关系中所有4个Sno=950001的元组一 起删除。依此类推可以继续级联下去。 n受限删除:系统将拒绝执行此删除操作。5.2 参照完整性17An Introduction to Database System第五章 数据库完整性5.1 实体完整性5.2 参照完整性5.3 用户定义完整性5.4 完整性约束命名子句5.5 触发器18An Introduction to Database System5.3 用户定义的完整性1.1.属性上约束条件的定义属性上约束条件的定义使用CREATE TABLE语句在定义属性的同时,定义对属性值的限制。包括:列值非空(NOT NULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK子句)。19An Introduction to Database System5.3 用户定义的完整性(1)(1)不允许取空值不允许取空值 例例55在定义在定义SCSC表时,说明表时,说明SnoSno、CnoCno属性不取空属性不取空CREATE TABLE SC CREATE TABLE SC ( ( SnoSno CHAR(5) CHAR(5) NOT NULLNOT NULL, ,CnoCno CHAR(2) CHAR(2) NOT NULLNOT NULL, ,Grade SMALLINT, Grade SMALLINT,PRIMARY KEY ( PRIMARY KEY (SnoSno, , CnoCno) ); ) ); 20An Introduction to Database System5.3 用户定义的完整性(2)(2)列值惟一列值惟一 例例66建立部门表建立部门表DeptDept,要求部门名称,要求部门名称DnameDname惟一惟一 ,部门编号为主码。,部门编号为主码。CREATE TABLE Dept CREATE TABLE Dept ( ( DnoDno NUMERIC(2) NOT NULL, NUMERIC(2) NOT NULL,DnameDname CHAR(20) CHAR(20) UNIQUE UNIQUE, ,Location CHAR(10), Location CHAR(10),PRIMARY KEY ( PRIMARY KEY (DnoDno) ) ); ); 21An Introduction to Database System5.3 用户定义的完整性(2)(2)列值惟一列值惟一 例例66补充补充若部门表若部门表DeptDept已建立,添加部门名称已建立,添加部门名称DnameDname 惟一的约束。惟一的约束。ALTER TABLE Dept ALTER TABLE Dept ADD ADD UNIQUE(DnameUNIQUE(Dname); );22An Introduction to Database System5.3 用户定义的完整性 例例7Student7Student表中表中SsexSsex只允许取只允许取“男男”和和“女女”。CREATE TABLE Student CREATE TABLE Student ( ( SnoSno CHAR(5) PRIMARY KEY, CHAR(5) PRIMARY KEY,SnameSname CHAR(8) NOT NULL, CHAR(8) NOT NULL,SsexSsex CHAR(2) CHECK CHAR(2) CHECK ( (SsexSsex IN ( IN (男男 , ,女女 ) ), ,Sage SMALLINT, Sage SMALLINT,SdeptSdept CHAR(20) CHAR(20); ); (3)(3)用用CHECKCHECK短语短语指定列值应该满足的条件指定列值应该满足的条件23An Introduction to Database System5.3 用户定义的完整性 例例77补充补充向向StudentStudent表添加表添加SsexS
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号