欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据库系统及应用幻灯片.ppt

    • 资源ID:45464367       资源大小:2.41MB        全文页数:70页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库系统及应用幻灯片.ppt

    数据库系统及应用第1页,共70页,编辑于2022年,星期六 数据库的完整性(数据库的完整性(IntegrityIntegrity):):数据库的完整性是指保证数据库中数据库的完整性是指保证数据库中数据的数据的正确性正确性(Correctness)(Correctness)、准确性准确性(AccuracyAccuracy)和)和有效性有效性(Validity)(Validity),防止不合语义的数据进入数据库防止不合语义的数据进入数据库。第2页,共70页,编辑于2022年,星期六例如:学生的年龄必须是整数,取值范围为例如:学生的年龄必须是整数,取值范围为14-2914-29;学生的性别只能是男或女;学生的性别只能是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;学生所在的系必须是学校开设的系;第3页,共70页,编辑于2022年,星期六 为维护数据库的完整性,为维护数据库的完整性,DBMSDBMS必须必须提供一种机制来检查数据库的完整性,提供一种机制来检查数据库的完整性,看其是否满足语义规定的条件。看其是否满足语义规定的条件。DBMS DBMS中检查数据是否满足完整性条件中检查数据是否满足完整性条件的机制称为完整性检查。的机制称为完整性检查。第4页,共70页,编辑于2022年,星期六 现代数据库技术采用对数据完整性的语义现代数据库技术采用对数据完整性的语义现代数据库技术采用对数据完整性的语义现代数据库技术采用对数据完整性的语义约束和检查来保护数据库的完整性,其实现方约束和检查来保护数据库的完整性,其实现方约束和检查来保护数据库的完整性,其实现方约束和检查来保护数据库的完整性,其实现方式有两种:一种是通过定义和使用完整性约束式有两种:一种是通过定义和使用完整性约束式有两种:一种是通过定义和使用完整性约束式有两种:一种是通过定义和使用完整性约束规则规则规则规则(系统定义)(系统定义)(系统定义)(系统定义),另一种是通过触发器,另一种是通过触发器,另一种是通过触发器,另一种是通过触发器(TriggerTriggerTriggerTrigger)和存储过程()和存储过程()和存储过程()和存储过程(Stored Stored Stored Stored ProcedureProcedureProcedureProcedure)(用户自定义)(用户自定义)(用户自定义)(用户自定义)等过程来实现。等过程来实现。等过程来实现。等过程来实现。第5页,共70页,编辑于2022年,星期六 完完完完整整整整性性性性子子子子系系系系统统统统:负负负负责责责责处处处处理理理理数数数数据据据据库库库库的的的的完完完完整整整整性性性性语语语语义义义义约约约约束束束束的的的的定定定定义义义义和和和和检检检检查查查查,防防防防止止止止因因因因错错错错误误误误的的的的更更更更新新新新操操操操作作作作产产产产生生生生的的的的不不不不一一一一致致致致性性性性。用用用用户户户户可可可可以以以以使使使使用用用用完完完完整整整整性性性性保保保保护护护护机制,对某些数据规定一些语义约束。机制,对某些数据规定一些语义约束。机制,对某些数据规定一些语义约束。机制,对某些数据规定一些语义约束。当当当当进进进进行行行行数数数数据据据据操操操操作作作作时时时时,DBMSDBMSDBMSDBMS就就就就由由由由某某某某个个个个完完完完整整整整性性性性语语语语义义义义约约约约束束束束的的的的触触触触发发发发条条条条件件件件激激激激发发发发相相相相应应应应的的的的检检检检查查查查程程程程序序序序,进进进进行完整性语义约束检查。行完整性语义约束检查。行完整性语义约束检查。行完整性语义约束检查。若若若若发发发发现现现现错错错错误误误误的的的的更更更更新新新新操操操操作作作作,立立立立即即即即采采采采取取取取措措措措施施施施处处处处理理理理,或或或或是是是是拒拒拒拒绝绝绝绝执执执执行行行行该该该该更更更更新新新新操操操操作作作作,或或或或是是是是发发发发出出出出警警警警告告告告信息,或者纠正已产生的错误。信息,或者纠正已产生的错误。信息,或者纠正已产生的错误。信息,或者纠正已产生的错误。第6页,共70页,编辑于2022年,星期六 DBMS DBMS的完整性子系统是负责数据库的完的完整性子系统是负责数据库的完整性控制的。整性控制的。它具有它具有3 3个功能:个功能:完整性约束条件定义机制完整性约束条件定义机制 完整性检查机制完整性检查机制 违约反应违约反应 第7页,共70页,编辑于2022年,星期六 完整性约束条件:完整性约束条件:数据模型的组成数据模型的组成部分,约束数据库中数据的语义。部分,约束数据库中数据的语义。DBMS DBMS应提供定义数据库完整性约束条应提供定义数据库完整性约束条件的机制,并把它们作为模式的一部分存件的机制,并把它们作为模式的一部分存入数据库中。入数据库中。一般由一般由SQLSQL的的DDLDDL语句来实现。语句来实现。F 完整性约束条件定义机制完整性约束条件定义机制第8页,共70页,编辑于2022年,星期六 检查用户发出的操作请求是否违背检查用户发出的操作请求是否违背了完整性约束条件的方法了完整性约束条件的方法F 完整性检查机制完整性检查机制第9页,共70页,编辑于2022年,星期六 如果发现用户的操作请求使数据违如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动背了完整性约束条件,则采取一定的动作,如拒绝用户执行该操作,来保证数作,如拒绝用户执行该操作,来保证数据的完整性。据的完整性。F 违约反应违约反应第10页,共70页,编辑于2022年,星期六12.1 12.1 完整性规则完整性规则 数据库完整性子系统是根据数据库完整性子系统是根据“完整性完整性规则集规则集”工作的。完整性规则集包含一组完工作的。完整性规则集包含一组完整性约束规则(整性约束规则(Integrity ConstraintIntegrity Constraint)。)。一个完整性约束规则包含完整性约束条件、一个完整性约束规则包含完整性约束条件、规则的触发条件和规则的触发条件和“ELSEELSE子句子句”。完整性检查是围绕完整性约束条件进行完整性检查是围绕完整性约束条件进行的,因此的,因此数据库的完整性约束条件是完整性数据库的完整性约束条件是完整性控制机构的核心。控制机构的核心。第11页,共70页,编辑于2022年,星期六 一一一一个个个个完完完完整整整整性性性性约约约约束束束束条条条条件件件件可可可可以以以以看看看看作作作作是是是是一一一一个个个个谓谓谓谓词词词词(PredicatePredicatePredicatePredicate),所所所所有有有有正正正正确确确确的的的的保保保保持持持持完完完完整整整整性的数据库状态都应当满足这个谓词。性的数据库状态都应当满足这个谓词。性的数据库状态都应当满足这个谓词。性的数据库状态都应当满足这个谓词。例如,例如,例如,例如,SCORE.GRADE0SCORE.GRADE0SCORE.GRADE0SCORE.GRADE0。规规规规则则则则的的的的触触触触发发发发条条条条件件件件规规规规定定定定何何何何时时时时使使使使用用用用该该该该规规规规则则则则做做做做检检检检查。查。查。查。“ELSEELSEELSEELSE子子子子句句句句”规规规规定定定定当当当当完完完完整整整整性性性性约约约约束束束束条条条条件件件件不不不不满足时须做的操作。满足时须做的操作。满足时须做的操作。满足时须做的操作。第12页,共70页,编辑于2022年,星期六 在关系数据库中,数据的完整性规则一般有以在关系数据库中,数据的完整性规则一般有以下类型。下类型。域完整性规则:定义属性的取值范围;域完整性规则:定义属性的取值范围;关系完整性规则:定义更新操作对数据库关系完整性规则:定义更新操作对数据库中的值的影响和限制;中的值的影响和限制;实体完整性约束:定义在一个关系中,主属性实体完整性约束:定义在一个关系中,主属性不能取空值不能取空值 参参照照完完整整性性约约束束:定定义义在在一一个个或或多多个个关关系系中,属性值间的联系、影响和约束。中,属性值间的联系、影响和约束。第14页,共70页,编辑于2022年,星期六 这些规则是用这些规则是用DDLDDL描述的,一旦一条完整描述的,一旦一条完整性规则输入给系统,系统就开始执行这条规则。性规则输入给系统,系统就开始执行这条规则。这种方法的这种方法的主要优点是由系统处理违反规则主要优点是由系统处理违反规则的情况,而不是由用户处理的情况,而不是由用户处理。其次,规则集。其次,规则集中存放在数据字典中,当需要修改时,可以中存放在数据字典中,当需要修改时,可以很方便地修改。很方便地修改。第15页,共70页,编辑于2022年,星期六 定义域约束规定某个属性的值必须符合定义域约束规定某个属性的值必须符合某种数据类型并且取自某个数据定义域。域某种数据类型并且取自某个数据定义域。域完整性约束施加于单个数据上。完整性约束施加于单个数据上。0 0人的年龄人的年龄150 150 仓库库存量仓库库存量00 0 0一个月的工作天数一个月的工作天数3131 长途电话号码格式为长途电话号码格式为999999999999999999991.1.域完整性约束域完整性约束第16页,共70页,编辑于2022年,星期六 对关系的完整性进行约束的主要目的对关系的完整性进行约束的主要目的是维持用户规定的函数依赖。例如,如果是维持用户规定的函数依赖。例如,如果用户定义了下列函数依赖:用户定义了下列函数依赖:NAMEADDRESSNAMEADDRESS。2.2.关系完整性约束关系完整性约束第17页,共70页,编辑于2022年,星期六 主码(主关键字)是实体完整性约主码(主关键字)是实体完整性约主码(主关键字)是实体完整性约主码(主关键字)是实体完整性约束(束(束(束(Entity ConstraintEntity ConstraintEntity ConstraintEntity Constraint)。)。)。)。3.3.实体完整性约束实体完整性约束第18页,共70页,编辑于2022年,星期六 外码(外部关键字)是参照完整性外码(外部关键字)是参照完整性外码(外部关键字)是参照完整性外码(外部关键字)是参照完整性约束(约束(约束(约束(Referential ConstraintReferential ConstraintReferential ConstraintReferential Constraint)的一)的一)的一)的一个典型例子。个典型例子。个典型例子。个典型例子。4.4.参照完整性约束参照完整性约束第19页,共70页,编辑于2022年,星期六 在关系系统中,最重要的完整性约束是在关系系统中,最重要的完整性约束是实体实体完整性约束完整性约束和和参照完整性约束参照完整性约束,其他完整性约束条,其他完整性约束条件则可以归入件则可以归入用户定义的完整性约束用户定义的完整性约束。对于违反实体完整性和用户定义的完整性对于违反实体完整性和用户定义的完整性操作一般都采用拒绝执行的方式进行处理,而操作一般都采用拒绝执行的方式进行处理,而对于违反参照完整性的操作,并不都是简单地对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。的操作,以保证数据库的正确性。12.2 12.2 完整性控制机制完整性控制机制第23页,共70页,编辑于2022年,星期六关系模型的实体完整性关系模型的实体完整性 CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE中用中用中用中用PRIMARY KEYPRIMARY KEYPRIMARY KEYPRIMARY KEY定义定义定义定义单属性构成的码有两种说明方法单属性构成的码有两种说明方法 定义为列级约束条件定义为列级约束条件定义为列级约束条件定义为列级约束条件 定义为表级约束条件定义为表级约束条件定义为表级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法对多个属性构成的码只有一种说明方法 定义为表级约束条件定义为表级约束条件定义为表级约束条件定义为表级约束条件 12.2.1 12.2.1 实体完整性实体完整性第24页,共70页,编辑于2022年,星期六例例例例12.1 12.1 将将将将StudentStudent表中的表中的表中的表中的SnoSno属性定义为码属性定义为码属性定义为码属性定义为码 (1)在列级定义主码在列级定义主码 CREATE TABLE Student (Sno CHAR(5)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage NUMBER(2),Sdept CHAR(2);第25页,共70页,编辑于2022年,星期六(2)在表级定义主码在表级定义主码 CREATE TABLE Student (Sno CHAR(5),Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage NUMBER(2),Sdept CHAR(2),PRIMARY KEY(Sno)PRIMARY KEY(Sno);第26页,共70页,编辑于2022年,星期六例例12.2 将将SCore表中的表中的Sno,Cno属性组定义属性组定义为码。为码。CREATE TABLE SCORE (Sno CHAR(5),/*NOT NULLNOT NULL */*/Cno CHAR(3)Cno CHAR(3),/*/*NOT NULL */Score NUMBER(6,2)Score NUMBER(6,2),PRIMARY KEY(SnoPRIMARY KEY(Sno,Cno)Cno)/*/*只能在表级定义主码只能在表级定义主码只能在表级定义主码只能在表级定义主码*/*/);第27页,共70页,编辑于2022年,星期六 插入或对主属性列进行更新操作时,插入或对主属性列进行更新操作时,RDBMSRDBMS按照实体完整性规则自动进行检查。按照实体完整性规则自动进行检查。包包括:括:检查主码值是否唯一,如果不唯一则拒绝插入检查主码值是否唯一,如果不唯一则拒绝插入检查主码值是否唯一,如果不唯一则拒绝插入检查主码值是否唯一,如果不唯一则拒绝插入或修改或修改或修改或修改 检查主码的各个属性是否为空,只要有一个检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改为空就拒绝插入或修改第28页,共70页,编辑于2022年,星期六12.2.2 12.2.2 参照完整性参照完整性F关系模型的参照完整性关系模型的参照完整性 在在CREATE TABLECREATE TABLE中用中用FOREIGN KEYFOREIGN KEY短语定短语定义哪些列为外码义哪些列为外码 用用REFERENCESREFERENCES短语指明这些外码参照短语指明这些外码参照哪些表的主码哪些表的主码第29页,共70页,编辑于2022年,星期六 例如,关系例如,关系SCoreSCore中一个元组表示一个学生选修的中一个元组表示一个学生选修的某门课程的成绩,某门课程的成绩,(Sno(Sno,Cno)Cno)是主码。是主码。SnoSno,CnoCno分别参分别参照引用照引用StudentStudent表的主码和表的主码和CourseCourse表的主码。表的主码。例例12.3 12.3 定义定义SCoreSCore中的参照完整性中的参照完整性 CREATE TABLE Score CREATE TABLE Score CREATE TABLE Score CREATE TABLE Score (Sno CHAR(5)(Sno CHAR(5)(Sno CHAR(5)(Sno CHAR(5),Cno CHAR(3)Cno CHAR(3)Cno CHAR(3)Cno CHAR(3),Score NUMBER(6,2)Score NUMBER(6,2)Score NUMBER(6,2)Score NUMBER(6,2),PRIMARY KEY(Sno PRIMARY KEY(Sno PRIMARY KEY(Sno PRIMARY KEY(Sno,Cno)Cno)Cno)Cno),/*/*/*/*在表级定义实体完整性在表级定义实体完整性在表级定义实体完整性在表级定义实体完整性*/*/*/*/FOREIGN KEY(Sno)REFERENCES Student(Sno)FOREIGN KEY(Sno)REFERENCES Student(Sno)FOREIGN KEY(Sno)REFERENCES Student(Sno)FOREIGN KEY(Sno)REFERENCES Student(Sno),/*/*/*/*在表级定义参照完整性在表级定义参照完整性在表级定义参照完整性在表级定义参照完整性*/*/*/*/FOREIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)/*/*/*/*在表级定义参照完整性在表级定义参照完整性在表级定义参照完整性在表级定义参照完整性*/*/*/*/););););第30页,共70页,编辑于2022年,星期六F 参照完整性违约处理参照完整性违约处理拒绝拒绝拒绝拒绝(RESTRICT)(RESTRICT)(RESTRICT)(RESTRICT)执行执行执行执行 默认策略默认策略级联级联级联级联(CASCADE)(CASCADE)(CASCADE)(CASCADE)操作操作操作操作设置为空值(设置为空值(设置为空值(设置为空值(SET NULLSET NULLSET NULLSET NULL)对于参照完整性,除了应该定义外码,对于参照完整性,除了应该定义外码,还应定义还应定义外码列是否允许空值外码列是否允许空值第31页,共70页,编辑于2022年,星期六 在实现参照完整性时,系统除了应该提在实现参照完整性时,系统除了应该提供定义外码的机制,还应提供定义外码列是供定义外码的机制,还应提供定义外码列是否允许空值的机制。否允许空值的机制。1.外码能否接受空值的问题外码能否接受空值的问题 第32页,共70页,编辑于2022年,星期六ENO ENAMEESEXDNO1001张三张三男男0012105海胜海胜女女DNO DNAME LOC TEL001经理办经理办002市场部市场部003财务部财务部004职工表职工表部门表部门表外码外码空值,可空值,可空值,可空值,可能符合语义能符合语义能符合语义能符合语义第33页,共70页,编辑于2022年,星期六SNOCNOSCORE1001001781001003831002SNO SNAME SEX AGE1001张三张三1002李四李四2104王五王五2105赵六赵六成绩表成绩表成绩表成绩表学生表学生表外码外码空值,不空值,不空值,不空值,不符合语义符合语义符合语义符合语义第34页,共70页,编辑于2022年,星期六2.2.可能破坏参照完整性的情况及违约处理可能破坏参照完整性的情况及违约处理被参照表被参照表被参照表被参照表(例如例如例如例如student)student)student)student)父表(父表(父表(父表(parent table)parent table)parent table)parent table)参照表(例如参照表(例如参照表(例如参照表(例如SCoreSCoreSCoreSCore)子表(子表(子表(子表(child table)child table)child table)child table)违约处理违约处理违约处理违约处理可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性插入元组插入元组插入元组插入元组拒绝拒绝拒绝拒绝可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性修改外码值修改外码值修改外码值修改外码值拒绝拒绝拒绝拒绝删除元组删除元组删除元组删除元组可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性拒绝拒绝拒绝拒绝/级连删除级连删除级连删除级连删除/置为空值置为空值置为空值置为空值修改主码值修改主码值修改主码值修改主码值可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性可能破坏参照完整性拒绝拒绝拒绝拒绝/级连修改级连修改级连修改级连修改/置为空值置为空值置为空值置为空值第35页,共70页,编辑于2022年,星期六 在被参照关系中删除元组的问题在被参照关系中删除元组的问题 外码值与被参照关系删除元组的主码值外码值与被参照关系删除元组的主码值相同,这时可有三种不同的策略:相同,这时可有三种不同的策略:级联删除(级联删除(CASCADESCASCADES)将参照关系中所有外码值与被参照关系将参照关系中所有外码值与被参照关系中要删除元组的主码值(父项)相同的元组中要删除元组的主码值(父项)相同的元组一起删除。如果参照关系同时又是另一个关一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级系的被参照关系,则这种删除操作会继续级联下去。联下去。第36页,共70页,编辑于2022年,星期六 限制删除(限制删除(RESTRICTRESTRICT)仅当参照关系中没有任何元组的外码值仅当参照关系中没有任何元组的外码值与被参照关系中要删除元组的主码值(父项)与被参照关系中要删除元组的主码值(父项)相同时,系统才执行删除操作,否则拒绝执相同时,系统才执行删除操作,否则拒绝执行此删除操作。行此删除操作。置空值删除(置空值删除(SET NULLSET NULL)删除被参照关系中的元组,并将参照关删除被参照关系中的元组,并将参照关系中相应元组的外码值置成空值。系中相应元组的外码值置成空值。第37页,共70页,编辑于2022年,星期六 这三种方法究竟应采取哪一种方法,这三种方法究竟应采取哪一种方法,要依具体应用环境的语义来定。如在学要依具体应用环境的语义来定。如在学生生-选课数据库中,显然删除学生信息选课数据库中,显然删除学生信息时采用时采用“级联删除级联删除”方法是对的。因为方法是对的。因为当一个学生毕业或退学后,他的个人记当一个学生毕业或退学后,他的个人记录从录从StudentStudent表中删除了,他的成绩记表中删除了,他的成绩记录也应随之从录也应随之从ScoreScore表中删除。表中删除。第38页,共70页,编辑于2022年,星期六例:要删除例:要删除StudentStudent关系中关系中Sno=95001Sno=95001的元的元组,而组,而SCORESCORE关系中有关系中有4 4个元组的个元组的SnoSno都等于都等于9500195001。级联删除:级联删除:将将SCORESCORE关系中所有关系中所有4 4个个Sno=95001Sno=95001的元组一起删除。如果参照关系同的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除时又是另一个关系的被参照关系,则这种删除操作会继续级联下去操作会继续级联下去第39页,共70页,编辑于2022年,星期六 受限删除:受限删除:系统将拒绝执行此删除操作。系统将拒绝执行此删除操作。置空值删除:置空值删除:将将SCORESCORE关系中所有关系中所有Sno=95001Sno=95001的元组的的元组的SnoSno值置为空值。值置为空值。在学生选课数据库中,显然第一种方法和在学生选课数据库中,显然第一种方法和第二种方法都是对的。第三种方法不符合应用第二种方法都是对的。第三种方法不符合应用环境语义。环境语义。第40页,共70页,编辑于2022年,星期六 在参照关系中插入元组时的问题在参照关系中插入元组时的问题 一般地,当参照关系一般地,当参照关系(子表)(子表)插入某插入某个元组,依据被参照关系个元组,依据被参照关系(父表)(父表)的情况,的情况,这时可以有以下策略:这时可以有以下策略:第41页,共70页,编辑于2022年,星期六 限制插入限制插入 仅当被参照关系中存在相应的元组,其仅当被参照关系中存在相应的元组,其主码值与参照关系插入元组的外码值相同时,主码值与参照关系插入元组的外码值相同时,系统才执行插入操作,否则拒绝执行此操作。系统才执行插入操作,否则拒绝执行此操作。递归插入递归插入(仅是理论上)(仅是理论上)首先向被参照关系中插入相应的元组,首先向被参照关系中插入相应的元组,其主码值等于参照关系插入元组的外码值,其主码值等于参照关系插入元组的外码值,然后向参照关系插入元组。然后向参照关系插入元组。第42页,共70页,编辑于2022年,星期六例:向例:向SCORESCORE关系插入(关系插入(9900199001,001001,9090)元组,而元组,而StudentStudent关系中尚没有关系中尚没有Sno=99001Sno=99001的的学生学生 受限插入:受限插入:系统将拒绝向系统将拒绝向SCORESCORE关系插入关系插入(9900199001,001001,9090)元组)元组 递归插入:递归插入:系统将首先向系统将首先向StudentStudent关系插关系插入入Sno=99001Sno=99001的元组,然后向的元组,然后向SCORESCORE关系插入关系插入(9900199001,001001,9090)元组。)元组。第43页,共70页,编辑于2022年,星期六 修改被参照关系时的问题修改被参照关系时的问题 不允许修改主码值不允许修改主码值 在有些在有些RDBMSRDBMS中,修改主码值的操作时中,修改主码值的操作时不允许的。如果需要修改主码值,只能先删不允许的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插除该元组,然后再把具有新主码值的元组插入到关系中。入到关系中。允许修改主码值允许修改主码值 在有些在有些RDBMSRDBMS中,允许修改关系的主中,允许修改关系的主码值,但必须保证主码值的唯一性和非空,码值,但必须保证主码值的唯一性和非空,否则拒绝修改。分否则拒绝修改。分两种情况两种情况:第44页,共70页,编辑于2022年,星期六 必须检查参照关系,是否存在这样的必须检查参照关系,是否存在这样的元组,其外码值等于被参照关系要修改的元组,其外码值等于被参照关系要修改的主码值。这时可以有主码值。这时可以有级联修改、拒绝修改、级联修改、拒绝修改、置空值修改置空值修改三种策略加以选择三种策略加以选择第45页,共70页,编辑于2022年,星期六 级联修改级联修改 修改被参照关系中主码值同时,用相同的方修改被参照关系中主码值同时,用相同的方法修改参照关系中相应的外码值。法修改参照关系中相应的外码值。受限修改受限修改 拒绝此修改操作。只当参照关系中没有任何拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改。值时,这个元组的主码值才能被修改。置空值修改置空值修改 修改被参照关系中主码值,同时将参照关系中修改被参照关系中主码值,同时将参照关系中修改被参照关系中主码值,同时将参照关系中修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值。相应的外码值置为空值。相应的外码值置为空值。相应的外码值置为空值。第46页,共70页,编辑于2022年,星期六 例:将例:将StudentStudent关系中关系中Sno=95001Sno=95001的元组的元组中中SnoSno值改为值改为9612396123。而。而SCORESCORE关系中有关系中有4 4个个元组的元组的Sno=95001Sno=95001 级联修改:级联修改:将将SCORESCORE关系中关系中4 4个个Sno=95001Sno=95001元组中的元组中的SnoSno值也改为值也改为9612396123。如果参照关。如果参照关系同时又是另一个关系的被参照关系,则系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去。这种修改操作会继续级联下去。第47页,共70页,编辑于2022年,星期六 受限修改:受限修改:只有只有SCORESCORE中没有任何元组的中没有任何元组的Sno=95001Sno=95001时,才能修改时,才能修改StudentStudent表中表中Sno=95001Sno=95001的元组的的元组的SnoSno值改为值改为9612396123。置空值修改:置空值修改:将将StudentStudent表中表中Sno=95001Sno=95001的的元组的元组的SnoSno值改为值改为9612396123。而将。而将StudentStudent表中所表中所有有Sno=95001Sno=95001的元组的的元组的SnoSno值置为空值。值置为空值。在学生选课数据库中只有第一种方法在学生选课数据库中只有第一种方法是正确的。是正确的。第48页,共70页,编辑于2022年,星期六与在子表插入元组时的问题类似与在子表插入元组时的问题类似 必须检查被参照关系,是否存在这样必须检查被参照关系,是否存在这样的元组,其主码值等于被参照关系要修改的元组,其主码值等于被参照关系要修改的外码值。这时可以有的外码值。这时可以有限制插入、递归插限制插入、递归插入入两种策略加以选择。两种策略加以选择。修改参照关系时的问题修改参照关系时的问题第49页,共70页,编辑于2022年,星期六RDBMSRDBMS在实现参照完整性在实现参照完整性 需要向用户提供定义主码、外码的机需要向用户提供定义主码、外码的机制制 向用户提供按照自己的应用要求选择向用户提供按照自己的应用要求选择处理依赖关系中对应的元组的方法处理依赖关系中对应的元组的方法 选择哪种策略,都要根据应用环境的要选择哪种策略,都要根据应用环境的要求确定。求确定。3.3.参照完整性的实现参照完整性的实现第50页,共70页,编辑于2022年,星期六12.2.3 12.2.3 用户定义的完整性用户定义的完整性 用户定义的完整性就是针对用户定义的完整性就是针对某一具体应某一具体应用用的数据必须满足的语义要求的数据必须满足的语义要求 RDBMS RDBMS提供,而不必由应用程序承担提供,而不必由应用程序承担第51页,共70页,编辑于2022年,星期六CREATE TABLE时定义时定义列值非空(列值非空(NOT NULLNOT NULL)列值唯一(列值唯一(UNIQUEUNIQUE)检查列值是否满足一个布尔表达式(检查列值是否满足一个布尔表达式(CHECKCHECK)1.1.属性上的约束条件的定义属性上的约束条件的定义第52页,共70页,编辑于2022年,星期六 不允许取空值不允许取空值 例例12.4 在定义在定义SC表时,说明表时,说明Sno、Cno、Grade属性不允许取空值。属性不允许取空值。CREATE TABLE ScoreCREATE TABLE Score (Sno CHAR(5)Sno CHAR(5),Cno CHAR(3)Cno CHAR(3),Score NUMBER(6,2)Score NUMBER(6,2)NOT NULLNOT NULL,PRIMARY KEY(Sno PRIMARY KEY(Sno,Cno)Cno),/*/*如果在表级定义实体完整性,隐含了如果在表级定义实体完整性,隐含了如果在表级定义实体完整性,隐含了如果在表级定义实体完整性,隐含了SnoSno,CnoCno不允许取空值,则在列级不允许取空值的定义就不必不允许取空值,则在列级不允许取空值的定义就不必不允许取空值,则在列级不允许取空值的定义就不必不允许取空值,则在列级不允许取空值的定义就不必写了写了写了写了*/*/););););第53页,共70页,编辑于2022年,星期六 列值唯一列值唯一 例例12.5 建立部门表建立部门表DEPT,要求部门名,要求部门名称称Dname列取值唯一,部门编号列取值唯一,部门编号Deptno列为主码列为主码 CREATE TABLE DEPT CREATE TABLE DEPT (Deptno NUMERIC(2)(Deptno NUMERIC(2),Dname CHAR(9)Dname CHAR(9)UNIQUEUNIQUE,/*/*要求要求要求要求DnameDname列值唯一列值唯一列值唯一列值唯一*/*/Location CHAR(10)Location CHAR(10),PRIMARY KEY(Deptno)PRIMARY KEY(Deptno);第54页,共70页,编辑于2022年,星期六 用用CHECKCHECK短语指定列值应该满足的条件短语指定列值应该满足的条件 例例12.6 Student表的表的Ssex只允许取只允许取“男男”或或“女女”。CREATE TABLE Student CREATE TABLE Student (Sno CHAR(5)PRIMARY KEY (Sno CHAR(5)PRIMARY KEY,Sname CHAR(8)NOT NULL Sname CHAR(8)NOT NULL,Ssex CHAR(2)Ssex CHAR(2)CHECK(Ssex IN(CHECK(Ssex IN(男男男男,女女女女),/*/*性别属性性别属性性别属性性别属性SsexSsex只允许取只允许取只允许取只允许取 男男男男 或或或或 女女女女*/*/Sage NUMBER(3)Sage NUMBER(3),Sdept CHAR(2)Sdept CHAR(2););第55页,共70页,编辑于2022年,星期六F 插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMSRDBMS检查检查属性上的约束条件是否被满足属性上的约束条件是否被满足F 如果不满足则操作被拒绝执行如果不满足则操作被拒绝执行2.2.属性上的约束条件检查和处理属性上的约束条件检查和处理第56页,共70页,编辑于2022年,星期六F 在在CREATE TABLECREATE TABLE时可以用时可以用CHECKCHECK短语定短语定义元组上的约束条件,即义元组上的约束条件,即元组级的限制元组级的限制F 同属性值限制相比,元组级的限制可以同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件设置不同属性之间的取值的相互约束条件 3.3.元组上的约束条件的定义元组上的约束条件的定义第57页,共70页,编辑于2022年,星期六 例例例例12.7 12.7 当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.Ms.打头。打头。打头。打头。CREATE TABLE Student CREATE TABLE Student (Sno CHAR(5)(Sno CHAR(5),Sname CHAR(8)NOT NULL Sname CHAR(8)NOT NULL,Ssex CHAR(2)Ssex CHAR(2),Sage NUMBER(2)Sage NUMBER(2),Sdept CHAR(20)Sdept CHAR(20),PRIMARY KEY(Sno)PRIMARY KEY(Sno),CHECK(Ssex=CHECK(Ssex=女女女女 OR Sname NOT LIKE Ms.%)OR Sname NOT LIKE Ms.%)/*/*定义了元组中定义了元组中定义了元组中定义了元组中SnameSname和和和和 Ssex Ssex两个属性值之间的约两个属性值之间的约两个

    注意事项

    本文(数据库系统及应用幻灯片.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开