第五章-数据库完整性分析优秀PPT.ppt
《第五章-数据库完整性分析优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第五章-数据库完整性分析优秀PPT.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 数据库 完整性 分析 优秀 PPT
限制150内