第五章-数据库完整性分析优秀PPT.ppt

上传人:1398****507 文档编号:57464392 上传时间:2022-11-05 格式:PPT 页数:79 大小:774KB
返回 下载 相关 举报
第五章-数据库完整性分析优秀PPT.ppt_第1页
第1页 / 共79页
第五章-数据库完整性分析优秀PPT.ppt_第2页
第2页 / 共79页
点击查看更多>>
资源描述

《第五章-数据库完整性分析优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第五章-数据库完整性分析优秀PPT.ppt(79页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、An Introduction to Database System第五章第五章 数据数据库完整性完整性主主讲老老师:姜季春:姜季春数据库完整性数据库完整性v数据库完整性的概念数据库完整性的概念vRDBMS数据库完整性的实现机制,包括实体完整数据库完整性的实现机制,包括实体完整性、参照完整性和用户定义完整性的定义机制、性、参照完整性和用户定义完整性的定义机制、完整性检查机制和违反完整性约束条件时完整性检查机制和违反完整性约束条件时RDBMS实行的预防措施实行的预防措施v触发器的概念和在数据库完整性检查中的应用触发器的概念和在数据库完整性检查中的应用An Introduction to Data

2、base SystemAn Introduction to Database System数据库完整性数据库完整性v数据库的完整性数据库的完整性:数据的正确性和相容性数据的正确性和相容性v正确性正确性:数据是符合现实世界语义,反映了当前实数据是符合现实世界语义,反映了当前实际状况的际状况的v相容性相容性:数据库同一对象在不同关系表中的数据是数据库同一对象在不同关系表中的数据是符合逻辑的符合逻辑的v例例:学生的年龄必需是整数,取值范围为学生的年龄必需是整数,取值范围为14-29v 学生的性别只能是男或女学生的性别只能是男或女v 学生的学号确定是唯一的学生的学号确定是唯一的v 学生所在的系必需是学

3、校开设的系学生所在的系必需是学校开设的系v完整性:是否真实地反映现实世界完整性:是否真实地反映现实世界An Introduction to Database System数据库完整性(续)数据库完整性(续)v数据的完整性和平安性是两个不同概念数据的完整性和平安性是两个不同概念v数据的完整性数据的完整性v防止数据库中存在不符合语义的数据,也防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据就是防止数据库中存在不正确的数据v防范对象:不合语义的、不正确的数据防范对象:不合语义的、不正确的数据v数据的平安性数据的平安性v爱护数据库防止恶意的破坏和非法的存取爱护数据库防止恶意的破坏和

4、非法的存取v防范对象:非法用户和非法操作防范对象:非法用户和非法操作An Introduction to Database System数据库完整性数据库完整性(续续)为维护数据库的完整性,为维护数据库的完整性,DBMS必需:必需:1.供应定义完整性约束条件的机制供应定义完整性约束条件的机制2.供应完整性检查的方法供应完整性检查的方法3.违约处理违约处理An Introduction to Database System第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字

5、句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结An Introduction to Database System5.1 实体完整性实体完整性v5.1.1 实体完整性定义实体完整性定义v5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理An Introduction to Database System5.1.1 实体完整性定义实体完整性定义v关系模型的关系模型的实体完整性实体完整性CREATE TABLE中用中用PRIMARY KEY定义定义v单属性单属性构成的码有构成的码有两种两种说明方法说明方法 定义为定义为列级列级约束条件约束条件定义为定义为

6、表级表级约束条件约束条件v对对多个属性多个属性构成的码只有构成的码只有一种一种说明方法说明方法定义为定义为表级表级约束条件约束条件 An Introduction to Database System实体完整性定义实体完整性定义(续续)例例1 将将Student表中的表中的Sno属性属性定义为码定义为码 (1)在在列级列级定义主码定义主码 CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);An Introduction to

7、Database System实体完整性定义实体完整性定义(续续)(2)在在表级表级定义主码定义主码 CREATE TABLE Student (Sno CHAR(9),Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno);An Introduction to Database System实体完整性定义实体完整性定义(续续)例例2将将SC表中的表中的Sno,Cno属性组属性组定义为码定义为码 CREATE TABLE SC (Sno CHAR(9)NOT NULL,Cno CHAR(

8、4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno)/*只能在表级定义主码只能在表级定义主码*/);An Introduction to Database System5.1 实体完整性实体完整性v5.1.1 实体完整性定义实体完整性定义v5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理An Introduction to Database System5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理v插入或对主码列进行更新操作时,插入或对主码列进行更新操作时,RDBMS依据实体完整依据实体完整性规则自动进行检查。包括:性规则自动

9、进行检查。包括:v1.检查主码值是否唯一,假如不唯一则拒绝插入或修改检查主码值是否唯一,假如不唯一则拒绝插入或修改v2.检查主码的各个属性是否为空,只要有一个为空就拒绝检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改插入或修改v违约反应违约反应v系统拒绝此操作,从而保证了实体完整性系统拒绝此操作,从而保证了实体完整性An Introduction to Database System实体完整性检查和违约处理实体完整性检查和违约处理(续续)v检查记录中主码值是否唯一的一种方法是进行全表扫描检查记录中主码值是否唯一的一种方法是进行全表扫描v依次推断表中每一条记录的主码值与将插入记录上的主

10、码依次推断表中每一条记录的主码值与将插入记录上的主码值(或者修改的新主码值)是否相同值(或者修改的新主码值)是否相同 An Introduction to Database System实体完整性检查和违约处理实体完整性检查和违约处理(续续)v索引索引v例如,例如,v新插入记录的主码值是新插入记录的主码值是25v通过主码索引,从通过主码索引,从B+树的根结点起先查找树的根结点起先查找v读取读取3个结点:根结点(个结点:根结点(51)、中间结点()、中间结点(12 30)、叶结点()、叶结点(15 20 25)v该主码值已经存在,不能插入这条记录该主码值已经存在,不能插入这条记录An Intro

11、duction to Database System第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结An Introduction to Database System5.2 参照完整性参照完整性v5.2.1 参照完整性定义参照完整性定义v5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理An Introduction to Database System5.2.1 参照完整性定

12、义参照完整性定义v关系模型的关系模型的参照完整性参照完整性定义定义在在CREATE TABLE中用中用FOREIGN KEY短语短语定义哪些定义哪些列为列为外码外码用用REFERENCES短语短语指明这些外码参照哪些表的指明这些外码参照哪些表的主码主码 An Introduction to Database System参照完整性定义参照完整性定义(续续)例如,关系例如,关系SC中一个元组表示一个学生选修的某门课程的成果,中一个元组表示一个学生选修的某门课程的成果,(Sno,Cno)是主码。)是主码。Sno,Cno分别参照引用分别参照引用Student表的表的主码和主码和Course表的主码表

13、的主码 例例3 定义定义SC中的参照完整性中的参照完整性 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),/*在表级定义参照完整性在表级定义参照完整性*/FOREIGN KEY(Cno)REFERENCES Course(Cno)/*在表级定义参照完整性在表级定义参照完整性*/);An Introduction to Databas

14、e System5.2 参照完整性参照完整性v5.2.1 参照完整性定义参照完整性定义v5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理v一个参照完整性将两个表中的相应元组联系起来一个参照完整性将两个表中的相应元组联系起来v对被参照表和参照表进行增删改操作时有可能破对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必需进行检查坏参照完整性,必需进行检查 An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(续续)v例如,对表例如,对表SC和和Student有四种可能

15、破坏参照完有四种可能破坏参照完整性的状况整性的状况:vSC表中增加一个元组,该元组的表中增加一个元组,该元组的Sno属性的值在属性的值在表表Student中找不到一个元组,其中找不到一个元组,其Sno属性的值与属性的值与之相等之相等v修改修改SC表中的一个元组,修改后该元组的表中的一个元组,修改后该元组的Sno属属性的值在表性的值在表Student中找不到一个元组,其中找不到一个元组,其Sno属属性的值与之相等性的值与之相等An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(续续)v例如,对表例如,对表SC和和Student有四

16、种可能破坏参照完有四种可能破坏参照完整性的状况整性的状况(续)(续):v从从Student表中删除一个元组,造成表中删除一个元组,造成SC表中某些表中某些元组的元组的Sno属性的值在表属性的值在表Student中找不到一个元中找不到一个元组,其组,其Sno属性的值与之相等属性的值与之相等v修改修改Student表中一个元组的表中一个元组的Sno属性,造成属性,造成SC表中某些元组的表中某些元组的Sno属性的值在表属性的值在表Student中找不中找不到一个元组,其到一个元组,其Sno属性的值与之相等属性的值与之相等 An Introduction to Database SystemAn In

17、troduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理可能破坏参照完整性的状况及违约处理可能破坏参照完整性的状况及违约处理被参照表(例如被参照表(例如Student)参照表(例如参照表(例如SC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级联删除级联删除/设置为空值设置为空值修改主码值修改主码值 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级联修改级联修改/设置为空值设置为空值

18、An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(例例)学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80S

19、tudent(被参照表)(被参照表)SC(参照表)(参照表)学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215124 3 75插入选课记录插入选课记录An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(例例)学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno

20、 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80Student(被参照表)(被参照表)SC(参照表)(参照表)学号改为学号改为200215124An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(例例)学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏

21、张张立立男男女女女女男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80Student(被参照表)(被参照表)SC(参照表)(参照表)删除学号为删除学号为200215122的学生记录的学生记录An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(例例)学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所

22、在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80Student(被参照表)(被参照表)SC(参照表)(参照表)将学号将学号200215122改为改为200215124An Introduction to Database System违约处理违约处理v参照完整性违

23、约处理参照完整性违约处理v1.拒绝拒绝(NO ACTION)执行执行v默认策略默认策略v2.级联级联(CASCADE)操作操作v当删除或修改被参照表的一个元组造成了与参照表的不一当删除或修改被参照表的一个元组造成了与参照表的不一样,则删除或修改参照表中的全部造成不一样的元组样,则删除或修改参照表中的全部造成不一样的元组v3.设置为空值(设置为空值(SET-NULL)v当删除或修改被参照表的一个元组时造成了不一样,则将当删除或修改被参照表的一个元组时造成了不一样,则将参照表中的全部造成不一样的元组的对应属性设置为空值参照表中的全部造成不一样的元组的对应属性设置为空值v对于参照完整性,除了应当定义

24、外码,还应定义外码列是对于参照完整性,除了应当定义外码,还应定义外码列是否允许空值否允许空值An Introduction to Database System违约处理违约处理(续续)例例 要删除要删除Student关系中关系中Sno=200215122的元组,的元组,而而SC关系中有关系中有2个元组的个元组的Sno都等于都等于200215122。级联删除级联删除 将将SC关系中全部关系中全部2个个Sno=200215122的元组一起的元组一起删除。假如参照关系同时又是另一个关系的被参删除。假如参照关系同时又是另一个关系的被参照关系,则这种删除操作会接着级联下去照关系,则这种删除操作会接着级联

25、下去 An Introduction to Database System参照完整性检查和违约处理参照完整性检查和违约处理(例例)学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90

26、80Student(被参照表)(被参照表)SC(参照表)(参照表)删除学号为删除学号为200215122的学生记录的学生记录级联删除学号为级联删除学号为200215122的选课记录的选课记录An Introduction to Database System置空值:将置空值:将SC关系中全部关系中全部Sno=200215122的的元组的元组的Sno值置为空值值置为空值 学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女

27、男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80Student(被参照表)(被参照表)SC(参照表)(参照表)删除学号为删除学号为200215122的学生记录的学生记录将学号将学号200215122置空置空在学生选课数据库中,明显第在学生选课数据库中,明显第一种方法是对的。其次种方法一种方法是对的。其次种方法不符合应用环境语义不符合应用环境语义An Introduction to Database

28、System违约处理违约处理(续续)例例 将将Student关系中关系中Sno=200215122的元组中的元组中Sno值改为值改为200215124。而。而SC关系中有关系中有 2个元个元组的组的Sno=200215122。级联修改级联修改将将SC关系中个关系中个Sno=200215122元组中的元组中的Sno值值也改为也改为200215124。假如参照关系同时又是另。假如参照关系同时又是另一个关系的被参照关系,则这种修改操作会接一个关系的被参照关系,则这种修改操作会接着级联下去着级联下去An Introduction to Database System参照完整性检查和违约处理参照完整性检

29、查和违约处理(例例)学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女男男20191819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80Student(被参照表)(被参照表)SC(参照表)(参照表)学号改为学号改为200215124将学号将学

30、号200215122级联修改为级联修改为200215124An Introduction to Database System 置空值修改:将置空值修改:将Student表中表中Sno=200215122的元组的元组的的Sno值改为值改为200215124。而将。而将SC表中全部表中全部Sno=200215122的元组的的元组的Sno值置为空值值置为空值 学学 号号 Sno姓姓 名名Sname 性性 别别 Ssex 年年 龄龄 Sage 所所 在在 系系 Sdept200215121200215122200215123200215125李勇李勇刘晨刘晨王敏王敏张张立立男男女女女女男男20191

31、819CSCSMAIS学学 号号Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2 3 92 85 88 90 80Student(被参照表)(被参照表)SC(参照表)(参照表)学号改为学号改为200215124将学号将学号200215122置空置空在学生选课数据库中只有在学生选课数据库中只有第一种方法是正确的第一种方法是正确的An Introduction to Database System违约处理违约处理(续续)例例4 显式说明参照完整性的违约处理示例显式说明参照完整性的违

32、约处理示例 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 CASCADE /*级联删除级联删除SC表中相应的元组表中相应的元组*/ON UPDATE CASCADE,/*级联更新级联更新SC表中相应的元组表中相应的元组*/FOREIGN KEY(Cno)REFERENCES Course(Cno)ON DELETE NO ACTION /*当删除当删除Co

33、urse 表中的元组造成了与表中的元组造成了与SC表不一样时拒绝删除表不一样时拒绝删除*/ON UPDATE CASCADE /*当更新当更新course表中的表中的Cno时,级联更新时,级联更新SC表中相应的元组表中相应的元组*/);An Introduction to Database System第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结An Introduction to D

34、atabase System5.3 用户定义的完整性用户定义的完整性v用户定义的完整性就是针对某一具体应用的数据用户定义的完整性就是针对某一具体应用的数据必需满足的语义要求必需满足的语义要求 vRDBMS供应,而不必由应用程序担当供应,而不必由应用程序担当An Introduction to Database System5.3 用户定义的完整性用户定义的完整性v5.3.1 属性上的约束条件的定义属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义元组上的约束条件的定义 v元组上的约束条件检查和违约处理元组上的约

35、束条件检查和违约处理An Introduction to Database System5.3.1 属性上的约束条件的定义属性上的约束条件的定义vCREATE TABLE时定义时定义v列值非空(列值非空(NOT NULL)v列值唯一(列值唯一(UNIQUE)v检查列值是否满足一个布尔表达式(检查列值是否满足一个布尔表达式(CHECK)An Introduction to Database System属性上的约束条件的定义属性上的约束条件的定义(续续)v1.不允许取空值不允许取空值 v例例5 在定义在定义SC表时,说明表时,说明Sno、Cno、Grade属性不属性不允许取空值。允许取空值。v

36、CREATE TABLE SCv (Sno CHAR(9)NOT NULL,v Cno CHAR(4)NOT NULL,v Grade SMALLINT NOT NULL,v PRIMARY KEY(Sno,Cno),v /*假如在表级定义实体完整性,隐含了假如在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在列级不允许取空值的定义就不必写了不允许取空值,则在列级不允许取空值的定义就不必写了*/v ););An Introduction to Database System属性上的约束条件的定义属性上的约束条件的定义(续续)v2.列值唯一列值唯一 例例6 建立部门表建立部门表DEPT

37、,要求部门名称,要求部门名称Dname列取值唯一,部门编列取值唯一,部门编号号Deptno列为主码列为主码 CREATE TABLE DEPT (Deptno NUMERIC(2),Dname CHAR(9)UNIQUE,/*要求要求Dname列值唯一列值唯一*/Location CHAR(10),PRIMARY KEY(Deptno);An Introduction to Database System属性上的约束条件的定义属性上的约束条件的定义(续续)v3.用用CHECK短语指定列值应当满足的条件短语指定列值应当满足的条件v例例7 Student表的表的Ssex只允许取只允许取“男男”或或

38、“女女”。v CREATE TABLE Studentv (Sno CHAR(9)PRIMARY KEY,v Sname CHAR(8)NOT NULL,v Ssex CHAR(2)CHECK(Ssex IN(男男,女女),v /*性别属性性别属性Ssex只允许取只允许取男男或或女女*/v Sage SMALLINT,v Sdept CHAR(20)v );An Introduction to Database System5.3 用户定义的完整性用户定义的完整性v5.3.1 属性上的约束条件的定义属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理

39、 v5.3.3 元组上的约束条件的定义元组上的约束条件的定义 v元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理An Introduction to Database System5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理v插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMS检查属性上检查属性上的约束条件是否被满足的约束条件是否被满足v假如不满足则操作被拒绝执行假如不满足则操作被拒绝执行 An Introduction to Database System5.3 用户定义的完整性用户定义的完整性v5.3.1 属性上的约束条件的定义属性上的约束

40、条件的定义v5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义元组上的约束条件的定义 v元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理An Introduction to Database System5.3.3 元组上的约束条件的定义元组上的约束条件的定义v在在CREATE TABLE时可以用时可以用CHECK短语定义短语定义元组上元组上的约的约束条件,即束条件,即元组级的限制元组级的限制v同同属性值限制相比属性值限制相比,元组级元组级的限制可以设置的限制可以设置不同属性不同属性之间之间的的取值的相互约束条件取值的相互

41、约束条件 An Introduction to Database System元组上的约束条件的定义元组上的约束条件的定义(续续)例例9 当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.打头。打头。CREATE TABLE Student (Sno CHAR(9),Sname CHAR(8)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno),CHECK(Ssex=女女 OR Sname NOT LIKE Ms.%)/*定义了元组中定义了元组中Sname和和 Ssex两个属性值之间的约束条件

42、两个属性值之间的约束条件*/);性别是女性的元组都能通过该项检查,因为性别是女性的元组都能通过该项检查,因为Ssex=女女成立成立当性别是男性时,要通过检查则名字确定不能以当性别是男性时,要通过检查则名字确定不能以Ms.打头打头An Introduction to Database System5.3 用户定义的完整性用户定义的完整性v5.3.1 属性上的约束条件的定义属性上的约束条件的定义v5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 v5.3.3 元组上的约束条件的定义元组上的约束条件的定义 v5.3.4 元组上的约束条件检查和违约处理元组上的约束条件检查和违约

43、处理An Introduction to Database System5.3.4 元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理v插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMS检查元组上的约束检查元组上的约束条件是否被满足条件是否被满足v假如不满足则操作被拒绝执行假如不满足则操作被拒绝执行 An Introduction to Database System第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名子句完整性约束命名子句*5.5 域中的完整性限制域中

44、的完整性限制5.6 触发器触发器5.7 小结小结敏捷地增加、删除敏捷地增加、删除完整性约束条件完整性约束条件An Introduction to Database System5.4 完整性约束命名子句完整性约束命名子句vCONSTRAINT 约束约束CONSTRAINT PRIMARY KEY短语短语|FOREIGN KEY短语短语|NOT NULL短语短语|UNIQUE短语短语|CHECK短语短语An Introduction to Database System完整性约束命名子句完整性约束命名子句(续续)例例10 建立学生登记表建立学生登记表Student,要求学号在,要求学号在9000

45、099999之间,姓名不能之间,姓名不能取空值,年龄小于取空值,年龄小于30,性别只能是,性别只能是“男男”或或“女女”。CREATE TABLE Student (Sno NUMERIC(6)CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99999),Sname CHAR(20)CONSTRAINT C2 NOT NULL,Sage NUMERIC(3)CONSTRAINT C3 CHECK(Sage=3000);完整性约束命名子句完整性约束命名子句(续续)v练习1:建立一个:建立一个Course表,用完整性表,用完整性约束命名子句定束命名子句定义主主码

46、、外、外码、课程程名唯一,学分取自集合名唯一,学分取自集合1,2,3,4,5。CREATE TABLE Course (Cno CHAR(4),Cname CHAR(40),Cpno CHAR(4),Ccredit SMALLINT,CONSTRAINT C1 PRIMARY KEY(Cno),CONSTRAINT C2 UNIQUE(Cname),CONSTRAINT C3 Ccredit IN(1,2,3,4,5),CONSTRAINT C4 FOREIGN KEY(Cpno)REFERENCES Course(Cno);An Introduction to Database System

47、完整性约束命名子句完整性约束命名子句(续续)v练习2:建立一个:建立一个SC表,用完整性表,用完整性约束命名子句定束命名子句定义主主码、外、外码、C成果的取成果的取值在在0到到100之之间。vCREATE TABLE SCv (Sno CHAR(9),v Cno CHAR(4),v Grade SMALLINT,v CONSTRAINT C1 PRIMARY KEY(Sno,Cno),v CONSTRAINT C2 FOREIGN KEY(Sno)REFERENCES Student(Sno),v CONSTRAINT C3 FOREIGN KEY(Cno)REFERENCES Course(

48、Cno),v CONSTRAINT C4 CHECK(Grade BETWEEN 0 AND 100)v )An Introduction to Database SystemAn Introduction to Database System完整性约束命名子句完整性约束命名子句(续续)v2.修改表中的完整性限制修改表中的完整性限制v运用运用ALTER TABLE语句修改表中的完整性语句修改表中的完整性限制限制An Introduction to Database System完整性约束命名子句完整性约束命名子句(续续)例例13 修改表修改表Student中的约束条件,要求学号改为中的约束条件

49、,要求学号改为在在900000999999之间,年龄由小于之间,年龄由小于30改为小于改为小于40n可以先删除原来的约束条件,再增加新的约束条件可以先删除原来的约束条件,再增加新的约束条件 ALTER TABLE Student DROP CONSTRAINT C1;ALTER TABLE Student ADD CONSTRAINT C1 CHECK(Sno BETWEEN 900000 AND 999999);ALTER TABLE Student DROP CONSTRAINT C3;ALTER TABLE Student ADD CONSTRAINT C3 CHECK(Sage 40)

50、;An Introduction to Database System第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结An Introduction to Database System触发器触发器v触发器(触发器(Trigger)是用户定义在关系表上的一类)是用户定义在关系表上的一类由事务驱动的特殊过程由事务驱动的特殊过程v由服务器自动激活由服务器自动激活一旦定义了触发器,任何一旦定义了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 商业计划书

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

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