第五章 数据完整性

上传人:仙*** 文档编号:244400007 上传时间:2024-10-04 格式:PPT 页数:27 大小:713.50KB
返回 下载 相关 举报
第五章 数据完整性_第1页
第1页 / 共27页
第五章 数据完整性_第2页
第2页 / 共27页
第五章 数据完整性_第3页
第3页 / 共27页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,An Introduction to Database System,*,第五章 数据库完整性,5.1 实体的完整性,5.2 参照完整性,5.3 用户定义的完整性,5.4 完整性约束命名子句,5.5 触发器,An Introduction to Database System,数据的正确性和相容性,防止不合语义的数据进入数据库。,例:学生的年龄必须是整数,取值范围为14-29;,学生的性别只能是男或女;,学生的学号一定是唯一的;,学生所在的系必须是学校开设的系;,完整性:真实地反映现实世界,一、什么是数据库的完整性,An Introduction to Database System,二、DBMS的完整性控制机制,1.定义功能,一个完善的完整性控制机制应该允许用户定义各类完整性约束条件。,例:银行数据库中“借贷总金额应平衡”的约束就应该是延迟执行的约束,3.违约反应,检查用户发出的操作请求是否违背了完整性约束条件,如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。,立即执行的约束(Immediate constraints),语句执行完后立即检查是否违背完整性约束,延迟执行的约束(Deferred constrainsts),完整性检查延迟到整个事务执行结束后进行,2.检查功能,拒绝该操作,其他处理方法,An Introduction to Database System,5.1 实体完整性,一、实体完整性定义,实体完整性规则:,关系中的码不能为空也不能重复。,定义方法:,在,CREATE TABLE,中用,PRIMARY KEY。,二、实体完整性检查和违约处理,检查:插入操作或更改码的值时。,处理:,拒绝执行,An Introduction to Database System,5.2 参照完整性,一、参照完整性定义,参照完整性规则:,关系中的外码或者,取空值,,或者,等于被参照关系中某个元组的主码值。,定义方法,:,在,CREATE TABLE,中用,FOREIGN KEY,。,二、参照完整性检查和违约处理,检查:对参照表和被参照表进行增、删、改操作时,有可能破坏参照完整性,必须进行检查。,处理:见表5.1,被参照表,参照表,违约处理,可能被破坏完整性参照,插入元组,拒绝,可能被破坏完整性参照,修改主码值,拒绝,删除元组,可能被破坏完整性参照,拒绝/级连删除/设置为空,修改主码值,可能被破坏完整性参照,拒绝/级连删除/设置为空,表5.1 可能破坏参照完整性的情况及违约处理,An Introduction to Database System,1.在被参照关系中删除元组时的问题,例:要删除Student关系中Sno=200215122的元组,,而SC关系中有4个元组的Sno都等于200215122。,级联删除:,将SC关系中所有4个Sno=,200215122,的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去,受限删除:,系统将拒绝执行此删除操作。,置空值删除:,将SC关系中所有Sno=,200215122,的元组的Sno值置为空值。,在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用环境语义。,An Introduction to Database System,2.在参照关系中插入元组时的问题,出现违约操作的情形,需要在参照关系中插入元组,而被参照关系不存在相应的元组。,违约反应,受限插入,递归插入,仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作。,首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。,例:向SC关系插入(200215125,1,90)元组,而Student关系中尚没有Sno=200215125的学生,受限插入:,系统将拒绝向SC关系插入(200215125,1,90)元组。,递归插入:,系统将首先向Student关系插入Sno=200215125的元组,然后向SC关系插入(200215125,1,90)元组。,An Introduction to Database System,3.修改被参照关系中主码的问题,两种策略,(1),允许修改主码,(2),不允许修改主码,An Introduction to Database System,(1)允许修改主码策略,违约操作,要,修改被参照关系,中某些元组的主码值,而参照关系中,有,些元组的外码值正好等于被参照关系要修改的主码值。,要,修改参照关系,中某些元组的主码值,而被参照关系中,没有,任何元组的外码值等于被参照关系修改后的主码值。,违约反应(1),:修改的关系是被参照关系:与删除类似,级连修改,受限修改,置空值修改,修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。,拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。,修改被参照关系中主码值,同时将参照关系中相应的外码值,置为空值。,违约反应(2),:修改的关系是参照关系:与插入类似。,受限插入,递归插入,An Introduction to Database System,(1)允许修改主码策略,例:将Student关系中Sno=200215123的元组中Sno值改为200215128。而SC关系中有 4个元组的Sno=200215123,级联修改,:将SC关系中4个Sno=,200215123,元组中的Sno值也改为,200215128,。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。,受限修改,:只有SC中没有任何元组的Sno=,200215123,时,才能修改Student表中Sno=,200215123,的元组的Sno值改为,200215128,。,置空值修改:,将Student表中Sno=,200215123,的元组的Sno值改为,200215128,。而将SC表中所有Sno=,200215123,的元组的Sno值置为空值。,在学生选课数据库中只有第一种方法是正确的。,An Introduction to Database System,参照完整性的实现,RDBMS在实现参照完整性时:,需要向用户提供定义主码、外码的机制;,向用户提供按照自己的,应用要求,选择处理依赖关系中对应的元组的方法;,一般地,当对参照表和被参照表的操作违反了参照完整性,系统选用,默认策略,,即拒绝执行。如果想让系统采用其它的策略则必须在创建表的时候显式说明。,例4 显式说明参照完整性的违约处理。,CREATE TABLE SC,(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY key(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),ON DELETE CASCADEON UPDATE CASCADE,,,FOREIGN KEY(Cno)REFERENCES Course(Cno),ON DELETE ON ACTION ON UPDATE CASCADE,,);,An Introduction to Database System,5.3 用户定义的完整性,一、属性上约束条件的定义,在,CREATE TABLE,中定义属性的同时可以根据应用要求,定义属性上的约束条件,即属性值的限制,。,列值非空(NOT NULL),列值唯一(UNIQUE),检查列值是否满足一个布尔表达式(CHECK),例5 在定义SC表时,说明Sno,Cno,Grade属性不允许取空值。,CREATE TABLE SC,(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT NOT NULL,PRIMARY key(Sno,Cno),FOREIGN KEY(Sno)REFERENCES Student(Sno),,FOREIGN KEY(Cno)REFERENCES Course(Cno),);,An Introduction to Database System,例6 建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码。,CREATE TABLE DEPT,(Deptno NUMERIC(2)NOT NULL,Dname CHAR(9)UNIQUE,Location char(10),PRIMARY key(Deptno),);,例7 Student表的Ssex 只允许取,“,男,”,或,“,女,”,。,CREATE TABLE Student,(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,,Ssex CHAR(2),CHECK,(Seex IN(男,女),,Sage SMALLINT,,Sdept CHAR(20),);,An Introduction to Database System,例8 SC表中的值应该在0和100之间。,CREATE TABLE SC,(Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,CHECK(Grade=0 AND Grade=0 AND GRADE=100),;,PRIMARY key,Sno+Cno,tag kk,;,FOREIGN KEY Sno,tag k1,REFERENCES Student,;,FOREIGN KEY Cno,tag k2,REFERENCES Course),An Introduction to Database System,二、属性上的约束条件检查和违约处理,拒绝,三、元组上的约束条件定义,例9 当学生性别是男时不允许以Ms.打头。,CREATE TABLE Student,(Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,,Ssex CHAR(2)CHECK(Seex IN(男,女),,Sage SMALLINT,,Sdept CHAR(20),CHECK,(Seex=女 OR Sname NOT LIKE MS.%,);,四、元组上的约束条件检查和违约处理,拒绝,An Introduction to Database System,5.4 完整性约束命名子句,一、完整性约束命名子句,CONSTRAINT,PRIMARY KEY 短语|FOREIGN KEY短语|CHECK短语,例10,建立学生登记表Student,要求学号在90000至99999之间,姓名不能为空,年龄30,性别只能是,男,或,女,CREATE TABLE Student,(Sno CHAR(6),CONSTRAINT C1 CHECK(,Sno,BETWEEN 90000 AND 99999),Sname CHAR(8),CONSTRAINT C2,NOT NULL,,Sage NUMERIC(3),CONSTRAINT C3,CHECK(,Sage,=3000),);,An Introduction to Database System,例12 去掉例10中对性别的限制。,ALTER TABLE Student,DROP CONSTRAINT C4;,例13 修改表中的约束条件,要求学号改为在900000999999之间年龄小于30改为小于40。,ALTER TABLE Student,DROP CONSTRAINT C1;,ALTER TABLE Student,ADD CONSTRAINT C1CHECK(,Sno,BETWEEN
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!