数据库系统及应用幻灯片.ppt
《数据库系统及应用幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据库系统及应用幻灯片.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库系统及应用第1页,共70页,编辑于2022年,星期六 数据库的完整性(数据库的完整性(IntegrityIntegrity):):数据库的完整性是指保证数据库中数据库的完整性是指保证数据库中数据的数据的正确性正确性(Correctness)(Correctness)、准确性准确性(AccuracyAccuracy)和)和有效性有效性(Validity)(Validity),防止不合语义的数据进入数据库防止不合语义的数据进入数据库。第2页,共70页,编辑于2022年,星期六例如:学生的年龄必须是整数,取值范围为例如:学生的年龄必须是整数,取值范围为14-2914-29;学生的性别只能是男或
2、女;学生的性别只能是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校开设的系;学生所在的系必须是学校开设的系;第3页,共70页,编辑于2022年,星期六 为维护数据库的完整性,为维护数据库的完整性,DBMSDBMS必须必须提供一种机制来检查数据库的完整性,提供一种机制来检查数据库的完整性,看其是否满足语义规定的条件。看其是否满足语义规定的条件。DBMS DBMS中检查数据是否满足完整性条件中检查数据是否满足完整性条件的机制称为完整性检查。的机制称为完整性检查。第4页,共70页,编辑于2022年,星期六 现代数据库技术采用对数据完整性的语义现代数据库技术采用对数据完
3、整性的语义现代数据库技术采用对数据完整性的语义现代数据库技术采用对数据完整性的语义约束和检查来保护数据库的完整性,其实现方约束和检查来保护数据库的完整性,其实现方约束和检查来保护数据库的完整性,其实现方约束和检查来保护数据库的完整性,其实现方式有两种:一种是通过定义和使用完整性约束式有两种:一种是通过定义和使用完整性约束式有两种:一种是通过定义和使用完整性约束式有两种:一种是通过定义和使用完整性约束规则规则规则规则(系统定义)(系统定义)(系统定义)(系统定义),另一种是通过触发器,另一种是通过触发器,另一种是通过触发器,另一种是通过触发器(TriggerTriggerTriggerTrigg
4、er)和存储过程()和存储过程()和存储过程()和存储过程(Stored Stored Stored Stored ProcedureProcedureProcedureProcedure)(用户自定义)(用户自定义)(用户自定义)(用户自定义)等过程来实现。等过程来实现。等过程来实现。等过程来实现。第5页,共70页,编辑于2022年,星期六 完完完完整整整整性性性性子子子子系系系系统统统统:负负负负责责责责处处处处理理理理数数数数据据据据库库库库的的的的完完完完整整整整性性性性语语语语义义义义约约约约束束束束的的的的定定定定义义义义和和和和检检检检查查查查,防防防防止止止止因因因因错错错错误
5、误误误的的的的更更更更新新新新操操操操作作作作产产产产生生生生的的的的不不不不一一一一致致致致性性性性。用用用用户户户户可可可可以以以以使使使使用用用用完完完完整整整整性性性性保保保保护护护护机制,对某些数据规定一些语义约束。机制,对某些数据规定一些语义约束。机制,对某些数据规定一些语义约束。机制,对某些数据规定一些语义约束。当当当当进进进进行行行行数数数数据据据据操操操操作作作作时时时时,DBMSDBMSDBMSDBMS就就就就由由由由某某某某个个个个完完完完整整整整性性性性语语语语义义义义约约约约束束束束的的的的触触触触发发发发条条条条件件件件激激激激发发发发相相相相应应应应的的的的检检检
6、检查查查查程程程程序序序序,进进进进行完整性语义约束检查。行完整性语义约束检查。行完整性语义约束检查。行完整性语义约束检查。若若若若发发发发现现现现错错错错误误误误的的的的更更更更新新新新操操操操作作作作,立立立立即即即即采采采采取取取取措措措措施施施施处处处处理理理理,或或或或是是是是拒拒拒拒绝绝绝绝执执执执行行行行该该该该更更更更新新新新操操操操作作作作,或或或或是是是是发发发发出出出出警警警警告告告告信息,或者纠正已产生的错误。信息,或者纠正已产生的错误。信息,或者纠正已产生的错误。信息,或者纠正已产生的错误。第6页,共70页,编辑于2022年,星期六 DBMS DBMS的完整性子系统是
7、负责数据库的完的完整性子系统是负责数据库的完整性控制的。整性控制的。它具有它具有3 3个功能:个功能:完整性约束条件定义机制完整性约束条件定义机制 完整性检查机制完整性检查机制 违约反应违约反应 第7页,共70页,编辑于2022年,星期六 完整性约束条件:完整性约束条件:数据模型的组成数据模型的组成部分,约束数据库中数据的语义。部分,约束数据库中数据的语义。DBMS DBMS应提供定义数据库完整性约束条应提供定义数据库完整性约束条件的机制,并把它们作为模式的一部分存件的机制,并把它们作为模式的一部分存入数据库中。入数据库中。一般由一般由SQLSQL的的DDLDDL语句来实现。语句来实现。F 完
8、整性约束条件定义机制完整性约束条件定义机制第8页,共70页,编辑于2022年,星期六 检查用户发出的操作请求是否违背检查用户发出的操作请求是否违背了完整性约束条件的方法了完整性约束条件的方法F 完整性检查机制完整性检查机制第9页,共70页,编辑于2022年,星期六 如果发现用户的操作请求使数据违如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动背了完整性约束条件,则采取一定的动作,如拒绝用户执行该操作,来保证数作,如拒绝用户执行该操作,来保证数据的完整性。据的完整性。F 违约反应违约反应第10页,共70页,编辑于2022年,星期六12.1 12.1 完整性规则完整性规则 数据库完
9、整性子系统是根据数据库完整性子系统是根据“完整性完整性规则集规则集”工作的。完整性规则集包含一组完工作的。完整性规则集包含一组完整性约束规则(整性约束规则(Integrity ConstraintIntegrity Constraint)。)。一个完整性约束规则包含完整性约束条件、一个完整性约束规则包含完整性约束条件、规则的触发条件和规则的触发条件和“ELSEELSE子句子句”。完整性检查是围绕完整性约束条件进行完整性检查是围绕完整性约束条件进行的,因此的,因此数据库的完整性约束条件是完整性数据库的完整性约束条件是完整性控制机构的核心。控制机构的核心。第11页,共70页,编辑于2022年,星期
10、六 一一一一个个个个完完完完整整整整性性性性约约约约束束束束条条条条件件件件可可可可以以以以看看看看作作作作是是是是一一一一个个个个谓谓谓谓词词词词(PredicatePredicatePredicatePredicate),所所所所有有有有正正正正确确确确的的的的保保保保持持持持完完完完整整整整性的数据库状态都应当满足这个谓词。性的数据库状态都应当满足这个谓词。性的数据库状态都应当满足这个谓词。性的数据库状态都应当满足这个谓词。例如,例如,例如,例如,SCORE.GRADE0SCORE.GRADE0SCORE.GRADE0SCORE.GRADE0。规规规规则则则则的的的的触触触触发发发发条条
11、条条件件件件规规规规定定定定何何何何时时时时使使使使用用用用该该该该规规规规则则则则做做做做检检检检查。查。查。查。“ELSEELSEELSEELSE子子子子句句句句”规规规规定定定定当当当当完完完完整整整整性性性性约约约约束束束束条条条条件件件件不不不不满足时须做的操作。满足时须做的操作。满足时须做的操作。满足时须做的操作。第12页,共70页,编辑于2022年,星期六 在关系数据库中,数据的完整性规则一般有以在关系数据库中,数据的完整性规则一般有以下类型。下类型。域完整性规则:定义属性的取值范围;域完整性规则:定义属性的取值范围;关系完整性规则:定义更新操作对数据库关系完整性规则:定义更新操
12、作对数据库中的值的影响和限制;中的值的影响和限制;实体完整性约束:定义在一个关系中,主属性实体完整性约束:定义在一个关系中,主属性不能取空值不能取空值 参参照照完完整整性性约约束束:定定义义在在一一个个或或多多个个关关系系中,属性值间的联系、影响和约束。中,属性值间的联系、影响和约束。第14页,共70页,编辑于2022年,星期六 这些规则是用这些规则是用DDLDDL描述的,一旦一条完整描述的,一旦一条完整性规则输入给系统,系统就开始执行这条规则。性规则输入给系统,系统就开始执行这条规则。这种方法的这种方法的主要优点是由系统处理违反规则主要优点是由系统处理违反规则的情况,而不是由用户处理的情况,
13、而不是由用户处理。其次,规则集。其次,规则集中存放在数据字典中,当需要修改时,可以中存放在数据字典中,当需要修改时,可以很方便地修改。很方便地修改。第15页,共70页,编辑于2022年,星期六 定义域约束规定某个属性的值必须符合定义域约束规定某个属性的值必须符合某种数据类型并且取自某个数据定义域。域某种数据类型并且取自某个数据定义域。域完整性约束施加于单个数据上。完整性约束施加于单个数据上。0 0人的年龄人的年龄150 150 仓库库存量仓库库存量00 0 0一个月的工作天数一个月的工作天数3131 长途电话号码格式为长途电话号码格式为999999999999999999991.1.域完整性约
14、束域完整性约束第16页,共70页,编辑于2022年,星期六 对关系的完整性进行约束的主要目的对关系的完整性进行约束的主要目的是维持用户规定的函数依赖。例如,如果是维持用户规定的函数依赖。例如,如果用户定义了下列函数依赖:用户定义了下列函数依赖:NAMEADDRESSNAMEADDRESS。2.2.关系完整性约束关系完整性约束第17页,共70页,编辑于2022年,星期六 主码(主关键字)是实体完整性约主码(主关键字)是实体完整性约主码(主关键字)是实体完整性约主码(主关键字)是实体完整性约束(束(束(束(Entity ConstraintEntity ConstraintEntity Const
15、raintEntity Constraint)。)。)。)。3.3.实体完整性约束实体完整性约束第18页,共70页,编辑于2022年,星期六 外码(外部关键字)是参照完整性外码(外部关键字)是参照完整性外码(外部关键字)是参照完整性外码(外部关键字)是参照完整性约束(约束(约束(约束(Referential ConstraintReferential ConstraintReferential ConstraintReferential Constraint)的一)的一)的一)的一个典型例子。个典型例子。个典型例子。个典型例子。4.4.参照完整性约束参照完整性约束第19页,共70页,编辑于20
16、22年,星期六 在关系系统中,最重要的完整性约束是在关系系统中,最重要的完整性约束是实体实体完整性约束完整性约束和和参照完整性约束参照完整性约束,其他完整性约束条,其他完整性约束条件则可以归入件则可以归入用户定义的完整性约束用户定义的完整性约束。对于违反实体完整性和用户定义的完整性对于违反实体完整性和用户定义的完整性操作一般都采用拒绝执行的方式进行处理,而操作一般都采用拒绝执行的方式进行处理,而对于违反参照完整性的操作,并不都是简单地对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。的操作,以保
17、证数据库的正确性。12.2 12.2 完整性控制机制完整性控制机制第23页,共70页,编辑于2022年,星期六关系模型的实体完整性关系模型的实体完整性 CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE中用中用中用中用PRIMARY KEYPRIMARY KEYPRIMARY KEYPRIMARY KEY定义定义定义定义单属性构成的码有两种说明方法单属性构成的码有两种说明方法 定义为列级约束条件定义为列级约束条件定义为列级约束条件定义为列级约束条件 定义为表级约束条件定义为表级约束条件定义为表级约束条件定义为表级约束条件对多个属性构成的码只有
18、一种说明方法对多个属性构成的码只有一种说明方法 定义为表级约束条件定义为表级约束条件定义为表级约束条件定义为表级约束条件 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),Sdep
19、t 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 */
20、*/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按照实体完整性规则自动进行检查。按照实体完整性规则自动进行检查。包包括:括:检查主码值是否唯一,如果不唯一则拒绝插入检查主码值是否唯一,如果不唯一则拒
21、绝插入检查主码值是否唯一,如果不唯一则拒绝插入检查主码值是否唯一,如果不唯一则拒绝插入或修改或修改或修改或修改 检查主码的各个属性是否为空,只要有一个检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改为空就拒绝插入或修改第28页,共70页,编辑于2022年,星期六12.2.2 12.2.2 参照完整性参照完整性F关系模型的参照完整性关系模型的参照完整性 在在CREATE TABLECREATE TABLE中用中用FOREIGN KEYFOREIGN KEY短语定短语定义哪些列为外码义哪些列为外码 用用REFERENCESREFERENCES短语指明这些外码参照短语指明这些外码参照哪些表
22、的主码哪些表的主码第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 TAB
23、LE 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),/*/*/*/*在表级定义实体完整性在表级定义实体完整性在表级定义实体完整性在表级定义实体完整
24、性*/*/*/*/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)FO
25、REIGN KEY(Cno)REFERENCES Course(Cno)FOREIGN KEY(Cno)REFERENCES Course(Cno)/*/*/*/*在表级定义参照完整性在表级定义参照完整性在表级定义参照完整性在表级定义参照完整性*/*/*/*/););););第30页,共70页,编辑于2022年,星期六F 参照完整性违约处理参照完整性违约处理拒绝拒绝拒绝拒绝(RESTRICT)(RESTRICT)(RESTRICT)(RESTRICT)执行执行执行执行 默认策略默认策略级联级联级联级联(CASCADE)(CASCADE)(CASCADE)(CASCADE)操作操作操作操作设置为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 应用 幻灯片
限制150内