第五章 数据库完整性

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

值与被参照关系中要删除元组的主码值相同时,系
统才执行删除操作,否则拒绝此删除操作。
置空值删除:在删除被参照关系中的元组时,将
参照关系中相应元组的外码值置空值。
西南交通大学 《数据库原理及应用》第五章 第11页
5.2.2 参照完整性检查和违约处理 在最后一种策略中,需要考虑外码能否接受空值问题 根据实际情况的不同,一个关系的外码有时可以
例4 :建立教师表TEACHER,要求教师的应发工资不超过 3000元。应发工资就是实发工资列Sal与扣除项Deduct之和。
CREATE TABLE TEACHER
(Eno CHAR(4), Ename VARCHAR(10),
Sal NUMERIC(7,2), Deduct NUMERIC(7,2),
例3: 建立学生登记表Student,要求学号在 90000至 99999之间,性别只能是‘男’或‘女’。 CREATE TABLE Student
(Sno CHAR(5) CHECK (Sno BETWEEN 90000 AND 99999), Sname VARCHAR(20),
Sage SMALLINT, Ssex CHAR(2) CHECK (Ssex IN ('男', '女')))
• FOREIGN KEY子句:定义外码列 • REFERENCES子句:外码参照哪个表的主码
Create Table SC ( Sno char(9) , Cno char(4) ,
Grade smallint , Primary Key (Sno,Cno),
Foreign Key (Sno) References Student(Sno),
列值唯一(UNIQUE短语) 检查列值是否满足一个布尔表达式(CHECK短语)
西南交通大学
《数据库原理及应用》第五章
第16页
5.3.1 属性上的约束条件的定义 1、不允许取空值 例1: 建立学生登记表Student,要求姓名非空。
CREATE TABLE Student ( Sno CHAR(9),
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
置空值删除:删除被参照关系专业中的主码值,同 时将参照关系学生中相应的外码值置为空值。
语义:某个专业删除了,该专业的所有学生专业未定, 等待重新分配专业。
西南交通大学 《数据库原理及应用》第五章 第13页
5.2 参照完整性 显式说明参照完整性的违约处理示例:
西南交通大学 《数据库原理及应用》第五章 第5页
百度文库
5.1.1 实体完整性定义
例2 在SC表中定义(Sno, Cno)为主码 CREATE TABLE SC (Sno Char(9),
Cno Char(4),
Grade Smallint,
PRIMARY KEY (Sno, Cno))
西南交通大学
《数据库原理及应用》第五章
5.2.2 参照完整性检查和违约处理 例1 删除Student中Sno=’S02’的元组,关系SC中有3 个元组的Sno=’S02’。这时可考虑3种不同的处理策略:
级连删除:将参照关系中外码值与被参照关系中
将要删除元组的主码值相同的所有元组一起删除。
拒绝删除:仅当参照关系中没有任何元组的外码
5.1 实体完整性
• 关系模型的实体完整性在CREATE TABLE语句中
提供了PRIMARY KEY子句,供用户在建表时指 定关系的主码列。
在列级使用PRIMARY KEY子句 在表级使用PRIMARY KEY子句
西南交通大学
《数据库原理及应用》第五章
第4页
5.1.1 实体完整性定义 例1 定义Student表的Sno属性为主码。
1、拒绝执行 不允许该操作执行。该策略一般设置为默认策略。
2、级连操作
删除或修改被参照表的一个元组造成与参照表的不一致, 则删除或修改参照表中的所有造成不一致的元组。 3、设置为空值
删除或修改被参照表的一个元组造成不一致,则将参照 表中所有造成不一致的元组的对应属性设置为空值。
西南交通大学 《数据库原理及应用》第五章 第10页
Foreign Key (Cno) References Course(Cno)
On Delete No Action On Update Cascade)
西南交通大学 《数据库原理及应用》第五章 第14页
5.3 用户定义的完整性
用户定义的完整性就是针对某一具体应用的数据必须
满足的语义要求。
目前的RDBMS都提供了定义和检验这类完整性
CHECK (Sal + Deduct <=3000))
西南交通大学 《数据库原理及应用》第五章 第21页
5.3.4 元组上的约束条件检查和违约处理 当往表中插入元组或修改属性的值时,RDBMS就检查
元组上的约束条件是否被满足,如果不满足则操作被 拒绝执行。
西南交通大学
《数据库原理及应用》第五章
第22页
CREATE TABLE Student (Sno Char(9) PRIMARY KEY, Sname Char(20), Sage Smallint, Sdept Char(20)) 或: CREATE TABLE Student (Sno Char(9), Sname Char(20), Sage Smallint, Sdept Char(20), PRIMARY KEY(Sno))
第五章 数据库完整性
学习要求 掌握数据库完整性概念与数据库安全性概念 之间的区别与联系 掌握DBMS完整性控制机制 掌握SQL定义关系模式的完整性约束条件
西南交通大学
《数据库原理及应用》第五章
第1页
第五章 数据库完整性
• 什么是数据库的完整性 –数据的正确性和相容性 –防止不合语义的数据进入数据库。
例6: 去掉[例5]student表中对性别的限制。 ALTER TABLE Student DROP CONSTRAINT C4 例7:修改[例5]student表中的约束条件,要求学号改为在900 000-999 999之间。 可以先删除原来的约束条件,再增加新的约束条件。
ALTER TABLE Student DROP CONSTRAINT C1 ;
第6页
5.1.2 实体完整性检查和违约处理
• 用户程序对主码列进行更新操作时,系统自动进行
完整性检查
• 违约操作
使主属性值为空值的操作
使主码值在表中不唯一的操作
• 违约反应
系统拒绝此操作,从而保证了实体完整性
西南交通大学 《数据库原理及应用》第五章 第7页
5.2 参照完整性 5.2.1 参照完整性定义
西南交通大学
《数据库原理及应用》第五章
第19页
5.3.2 属性上的约束条件检查和违约处理 当往表中插入元组或修改属性的值时,RDBMS就检
查属性上的约束条件是否被满足,如果不满足则操作 被拒绝执行。
西南交通大学
《数据库原理及应用》第五章
第20页
5.3.3 元组上的约束条件的定义
与属性上约束条件的定义类似,create table中可用CHECK短 语定义元组上的约束条件。同属性值限制相比,元组级的限 制可以设置不同属性之间的取值的相互约束条件。
被参照表(例如Student) 参照表(例如SC) 可能破坏参照完整性 可能破坏参照完整性 删除元组 修改主码值 插入元组 修改外码值 违约处理 拒绝 拒绝
可能破坏参照完整性 拒绝/级连删除/设置为空值 可能破坏参照完整性 拒绝/级连删除/设置为空值
西南交通大学
《数据库原理及应用》第五章
第9页
5.2.2 参照完整性检查和违约处理 当上述不一致发生时,系统可采用以下策略加以处理:
ALTER TABLE Student
ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999)
西南交通大学 《数据库原理及应用》第五章 第25页
作业
P164
2、4、6题
西南交通大学
《数据库原理及应用》第五章
第26页
Create Table SC( Sno char(9) ,
Cno char(4) , Grade smallint ,
Primary Key (Sno,Cno),
Foreign Key (Sno) References Student(Sno) On Delete Cascade On Update Cascade,
Foreign Key (Cno) References Course(Cno))
西南交通大学 《数据库原理及应用》第五章 第8页
5.2.2 参照完整性检查和违约处理 参照完整性中,对被参照表和参照表进行增删改操 作时有可能破坏参照完整性,必须进行检查。
表5.1 可能破坏参照完整性的情况及违约处理
Sname VARCHAR(20) NOT NULL, Sage SMALLINT,
Ssex CHAR(2));
西南交通大学 《数据库原理及应用》第五章 第17页
5.3.1 属性上的约束条件的定义
2、列值唯一 例2:建立部门表DEPT,要求部门名称Dname列取
值唯一,部门编号Deptno列为主码。

DBMS应提供定义数据库完整性约束条件,并把它们作 为模式的一部分存入数据库中
2.完整性检查机制

检查用户发出的操作请求是否违背了完整性约束条件
3.违约处理
如果发现用户的操作请求使数据违背了完整性约束条 件,则采取一定的动作来保证数据的完整性。

西南交通大学 《数据库原理及应用》第五章 第3页
CREATE TABLE DEPT (Deptno NUMBER,
Dname VARCHAR(9) UNIQUE, Location VARCHAR(10), PRIMARY KEY (Deptno))
西南交通大学 《数据库原理及应用》第五章 第18页
5.3.1 属性上的约束条件的定义 3、用CHECK短语指定列值应该满足的条件
例: 学生的年龄必须是整数,取值范围为14--29; 学生的性别只能是男或女; 学生的学号一定是唯一的;
学生所在的系必须是学校开设的系;
– 完整性:是否真实地反映现实世界
西南交通大学 《数据库原理及应用》第五章 第2页
第五章 数据库完整性
完整性控制机制
1.完整性约束条件定义机制
完整性约束条件:数据模型的组成部分,约束数据库 中数据的语义
Sname VARCHAR(20) NOT NULL,
Sage SMALLINT,
Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN('男','女')))
西南交通大学
《数据库原理及应用》第五章
第24页
5.4 完整性约束命名子句
2、修改表中的完整性限制
使用ALTER TABLE语句修改表中的完整性限制
的机制,使用了和实体完整性、参照完整性相同
的技术和方法来处理它们,而不必由应用程序承 担这一功能。
西南交通大学
《数据库原理及应用》第五章
第15页
5.3.1 属性上的约束条件的定义 在create table中定义属性的同时可以根据应用要求, 定义属性上的约束条件,即属性值限制,包括:
列值非空(NOT NULL短语)
西南交通大学
《数据库原理及应用》第五章
第23页
5.4 完整性约束命名子句
例5: 建立学生登记表Student,要求学号在90000至99999 之间,性别只能是‘男’或‘女’,姓名非空。
CREATE TABLE Student3 (Sno CHAR(5)
CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
5.4 完整性约束命名子句
SQL还在CREATE TABLE语句中提供了完整性约束命
名子句CONSTRAINT,用来对完整性约束条件命名,可 以灵活地增加、删除一个完整性约束条件。
1、完整性约束命名子句
CONSTRAINT<完整性约束条件名> [PRIMARY KEY短语|FOREIGN KEY短语|CHECK短语]
取空值,有时又不能取空值。
例1中, 在学生-选课数据库中,Student为被参照关 系,其主码为Sno。关系SC的外码Sno同时也是SC的主
码中的一个属性,所以其外码不能取空值。
西南交通大学
《数据库原理及应用》第五章
第12页
5.2.2 参照完整性检查和违约处理 例2 假设专业表中某个元组被删除,即删除了某个专 业号。
相关文档
最新文档