第五章 数据库完整性.pptx
《第五章 数据库完整性.pptx》由会员分享,可在线阅读,更多相关《第五章 数据库完整性.pptx(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、刘铭皓第五章 数据库完整性数据库系统概论实体完整性用户定义的完整性参照完整性完整性约束命名字句01020304断言触发器0506第节数据库完整性概述数据库的完整性是指:数据的正确性:是指数据是符合现实世界语义,反映了当前实际状况的数据的相容性:是指数据库同一对象在不同关系表中的数据是符合逻辑的例如:学生的学号必须唯一性别只能是男或女本科学生年龄的取值范围为1450的整数学生所选的课程必须是学校开设的课程,学生所在的院系必须是学校已成立的院系等第节数据库完整性概述数据库的完整性与安全性n数据的完整性是防止数据库中存在不符合语义的数据,保证数据库中数据是正确的,避免非法的不合语义的错误数据的输入和
2、输出,即所谓的“垃圾进垃圾出”所造成的无效操作和错误结果。n数据的安全性是保护数据库防止恶意的破坏和非法的存取。即安全性措施的防范对象是非法用户和非法操作;完整性措施的防范对象是不合语义的数据。数据的完整性和安全性是两个不同的概念第节数据库完整性概述DBMS完整性控制机制:提供定义完整性约束条件的机制:提供定义数据完整性约束条件的方法,完整性约束条件作为模式的一部分存入数据库中;a)完整性约束条件也称为完整性规则,是数据库中的数据必须满足的语义约束条件b)SQL标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性c)这些完整性一般由SQL的数据定义语言语句来实
3、现 提供完整性检查的方法:进行完整性检查,检查数据是否满足约束条件;进行违约处理:若有违反,采取相应措施(拒绝、报告、改正)处理。第节数据库完整性概述提供定义完整性约束条件的机制:提供定义数据完整性约束条件的方法,完整性约束条件作为模式的一部分存入数据库中;提供完整性检查的方法:进行完整性检查,检查数据是否满足约束条件;a)数据库管理系统中检查数据是否满足完整性约束条件的机制称为完整性检查。b)一般在INSERT、UPDATE、DELETE语句执行后开始检查,也可以在事务提交时检查 进行违约处理:若有违反,采取相应措施(拒绝、报告、改正)处理。a)数据库管理系统若发现用户的操作违背了完整性约束
4、条件,就采取一定的动作n拒绝(NO ACTION)执行该操作n级连(CASCADE)执行其他操作第1节1.1 实体的完整性定义关系模型的实体完整性在CREATE TABLE操作中用PRIMARY KEY定义n如果是单属性构成的码有两种说明方法,一种是定义为列级约束条件,另一种是定义为表级约束条件n对多个属性构成的码只有一种说明方法,即定义为表级约束条件 第1节1.1 实体的完整性定义例如:将Student表中的Sno属性定义为码在列级定义主码 CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR
5、(2),Sage SMALLINT,Sdept CHAR(20);在表级定义主码CREATE TABLE Student(Sno CHAR(9),Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno);第1节1.1 实体的完整性定义例如:将SC表中的Sno,Cno属性组定义为码CREATE TABLE SC (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno)/*只能在表级定义主码*/);
6、第1节1.2 实体完整性检查和违约处理插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。包括:n检查主码值是否唯一,如果不唯一则拒绝插入或修改n检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改检查主码值是否唯一的一种方法是进行全表扫描第2节2.1 参照完整性定义关系模型的参照完整性在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码,用REFERENCES短语指明这些外码参照哪些表的主码第1节2.1 参照完整性定义例如:关系SC中(Sno,Cno)是主码。Sno,Cno分别参照Student表的主码和Course表的主码,定义SC中的
7、参照完整性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)/*表级定义参照完整性*/);第2节2.2 参照完整性检查和违约处理n一个参照完整性将两个表中的相应元组联系起来n对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查 在被参照关系
8、(主表)中删除元组的问题违约情况:从Student表中删除一个元组,造成SC表中某些元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等。第2节2.2 参照完整性检查和违约处理违约反应策略:a)级联删除(Cascades)将参照关系(子表)中所有外码值与被参照关系(主表)中要删除元组主码值相同的元组一起删除b)受限删除/拒绝(Restricted)仅当参照关系(子表)中没有任何元组的外码值与被参照关系(主表)中要删除元组的主码值相同时,系统才执行删除操作,否则拒绝此操作c)置空值删除(NULLIFIES)删除被参照关系(主表)的元组,并将参照关系(子表)中相应元组的
9、外码置空值。第2节2.2 参照完整性检查和违约处理例如:要删除Student关系中Sno=950001的元组,而SC关系中有4个元组的Sno都等于950001。a)级联删除(Cascades)将SC关系中所有4个Sno=950001的元组一起删除。如果参照关系同时又是另一个关系的被参照关系,则这种删除操作会继续级联下去b)受限删除/拒绝(Restricted)系统将拒绝执行此删除操作c)置空值删除(NULLIFIES)将SC关系中所有Sno=950001的元组的Sno值置为空值。第2节2.2 参照完整性检查和违约处理在参照关系(子表)中插入元组的问题违约情况:SC表中增加一个元组,该元组的Sn
10、o属性的值在表Student中找不到一个元组,其Sno属性的值与之相等违约反应策略:a)受限插入 仅当被参照关系(主表)中存在相应的元组,其主码值与参照关系(子表)中要插入元组的外码值相同时,系统才执行插入操作,否则拒绝此操作b)递归插入首先向被参照关系(主表)插入相应的元组,其主码值等于参照关系(子表)插入元组的外码值,然后向参照关系(子表)插入元组第2节2.2 参照完整性检查和违约处理例如:向SC关系插入(99001,1,90)元组而Student关系中尚没有Sno=99001的学生。a)受限插入系统将拒绝向SC关系插入(99001,1,90)元组b)递归插入系统将首先向Student关系
11、插入Sno=99001的元组,然后向SC关系插入(99001,1,90)元组。第2节2.2 参照完整性检查和违约处理在被参照关系(主表)中修改主码违约情况:修改Student表中一个元组的Sno属性,造成SC表中某些元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等违约反应策略:a)级联修改:修改被参照关系中主码值的同时,用相同的方法修改参照关系中相应的外码值b)受限修改/拒绝:拒绝此修改操作。只当参照关系中没有任何元组的外码值等于被参照关系中某个元组的主码值时,这个元组的主码值才能被修改c)置空值修改:修改被参照关系中主码值,同时将参照关系中相应的外码值置为空值
12、第2节2.2 参照完整性检查和违约处理例如:将S关系中Sno=950001的元组中Sno值改为960123。而SC关系中有 4个元组的Sno=950001。a)级联修改将SC关系中4个Sno=950001元组中的Sno值也改为960123。如果参照关系同时又是另一个关系的被参照关系,则这种修改操作会继续级联下去b)受限修改/拒绝只有SC中没有任何元组的Sno=950001时,才能修改S表中Sno=950001的元组的Sno值改为960123。c)置空值修改:将S表中Sno=950001的元组的Sno值改为960123。而将SC表中所有Sno=950001的元组的Sno值置为空值。第2节2.2
13、参照完整性检查和违约处理在参照关系(子表)中修改外码(同时是主码属性)违约情况:SC表中增加一个元组,该元组的Sno属性的值在表Student中找不到一个元组,其Sno属性的值与之相等违约反应策略:a)受限修改仅当被参照关系(主表)中存在相应的元组,其主码值与参照关系(子表)中要修改元组的外码值相同时,系统才执行修改操作,否则拒绝此操作。b)递归修改首先修改被参照关系(主表)相应的元组,其主码值等于参照关系(子表)要修改元组的外码值,然后修改参照关系(子表)插入元组。第2节2.2 参照完整性检查和违约处理修改关系中主码的问题总结违约反应策略:a)不允许修改主码。b)允许修改主码,但必须保证主码
14、值的唯一性和非空性,否则拒绝修改。n允许修改关系主码的策略:(1)修改的是被参照关系的主码时,还必须检查参照关系,是否存在这样的元组,其外码值等于被参照关系的主码值。(2)当修改的是参照关系的外码(同时是主码属性)时,还必须检查被参照关系,是否存在这样的元组,其主码值等于参照关系的外码值。第2节2.2 参照完整性检查和违约处理对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值外码是否能够取空值:依赖于应用环境的语义例如:职工-部门数据库中 职工表 EMP(职工号,部门号)/“部门号”可取空值 部门表 DEPT(部门号,)例如:学生-选课数据库中:学生表 STUDENT(学号,)选课表
15、 SC(学号,课号,)/“学号”和“课号”不可取空值第2节2.2 参照完整性检查和违约处理例如:显式说明参照完整性的违约处理示例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(C
16、no)ON DELETE NO ACTION/*当删除course 表中元组造成与SC表不一致时拒绝删除*/ON UPDATE CASCADE/*当更新course表中的cno时,级联更新SC表中相应的元组*/);第3节3.1 用户定义的完整性用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求nCREATE TABLE时定义属性上的约束条件列值非空(NOT NULL)列值唯一(UNIQUE)检查列值是否满足一个条件表达式(CHECK)第3节3.1 用户定义的完整性不允许取空值 例如:在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。CREATE TABLE SC (Sn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五章 数据库完整性 第五 数据库 完整性
限制150内