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