《数据库系统概论》第5版数据完整性

上传人:woxinch****an2018 文档编号:35893108 上传时间:2018-03-22 格式:PPT 页数:43 大小:471KB
返回 下载 相关 举报
《数据库系统概论》第5版数据完整性_第1页
第1页 / 共43页
《数据库系统概论》第5版数据完整性_第2页
第2页 / 共43页
《数据库系统概论》第5版数据完整性_第3页
第3页 / 共43页
《数据库系统概论》第5版数据完整性_第4页
第4页 / 共43页
《数据库系统概论》第5版数据完整性_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《《数据库系统概论》第5版数据完整性》由会员分享,可在线阅读,更多相关《《数据库系统概论》第5版数据完整性(43页珍藏版)》请在金锄头文库上搜索。

1、,第五章 数据库完整性,5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名字句*5.5 域中的完整性限制5.6 断言5.7 触发器5.8 小结,5.3 用户定义的完整性,用户定义的完整性是:针对某一具体应用的数据必须满足的语义要求 关系数据库管理系统提供了定义和检验用户定义完整性的机制,不必由应用程序承担,5.3 用户定义的完整性,5.3.1 属性上的约束条件5.3.2 元组上的约束条件,1. 属性上约束条件的定义,CREATE TABLE时定义属性上的约束条件列值非空(NOT NULL)列值唯一(UNIQUE)检查列值是否满足一个条件表达式(CHECK),属性

2、上约束条件的定义(续),(1)不允许取空值 例5.5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。 CREATE TABLE SC ( Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno), /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在 列级不允许取空值的定义 可以不写 * / );,属性上约束条件的定义(续),(2)列值唯一 例5.6建立部门表DEPT,要求部门名称Dname列取值唯一,部门编号Deptno列为主码 C

3、REATE TABLE DEPT ( Deptno NUMERIC(2), Dname CHAR(9) UNIQUE NOT NULL, /*要求Dname列值唯一, 并且不能取空值*/ Location CHAR(10), PRIMARY KEY (Deptno) );,属性上约束条件的定义(续),(3)用CHECK短语指定列值应该满足的条件 例5.7 Student表的Ssex只允许取“男”或“女”。 CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Sse

4、x IN (男,女), /*性别属性Ssex只允许取男或女 */ Sage SMALLINT, Sdept CHAR(20) );,属性上约束条件的定义(续),例5.8 SC表的Grade的值应该在0和100之间。 CREATE TABLE SC ( Sno CHAR(9) , Cno CHAR(4),Grade SMALLINT CHECK (Grade=0 AND Grade =100), /*Grade取值范围是0到100*/ PRIMARY KEY (Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cn

5、o) REFERENCES Course(Cno) );,属性上的约束条件检查和违约处理插入元组或修改属性的值时,关系数据库管理系统检查属性上的约束条件是否被满足如果不满足则操作被拒绝执行,2. 属性上的约束条件检查和违约处理,5.3 用户定义的完整性,5.3.1 属性上的约束条件5.3.2 元组上的约束条件,1. 元组上约束条件的定义,在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件,元组上约束条件的定义(续),例5.9当学生的性别是男时,其名字不能以Ms.打头。 CREATE TABL

6、E 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两个属性值之间的约束条件*/ );性别是女性的元组都能通过该项检查,因为Ssex=女成立;当性别是男性时,要通过检查则名字一定不能以Ms.打头,元组上的约束条件检查和违约处理插入元组或修改属性的值时,关系数据库管理系统检查元组上的约束条件是否被满足如果不满足则

7、操作被拒绝执行,2. 元组上约束条件检查和违约处理,第五章 数据库完整性,5.1 实体完整性5.2 参照完整性5.3 用户定义的完整性5.4 完整性约束命名子句*5.5 域中的完整性限制5.6 断言5.7 触发器5.8 小结,5.4 完整性约束命名子句,1.完整性约束命名子句CONSTRAINT 包括NOT NULL、UNIQUE、PRIMARY KEY短语、FOREIGN KEY短语、CHECK短语等,完整性约束命名子句(续),例5.10建立学生登记表Student,要求学号在9000099999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。 CREATE TABLE Stu

8、dent ( 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) );,完整性约束命名子句(续),2. 修改表中的完整性限制使用ALTER TABLE语句修改表中的完整性限制例5.12去掉例5.10 Student表中对性别的限制。 ALTER TABLE Student DROP CONSTRAINT C4;,完整性约束命名子句(续),例

9、5.13 修改表Student中的约束条件,要求学号改为在900000999999之间,年龄由小于30改为小于40可以先删除原来的约束条件,再增加新的约束条件 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 = (select count(*) /*此断言的谓词涉及聚集操作count的SQL语句*/ From Course,SC Where SC.Cno=Course.Cno and Course.Cname =数据库) );,例5.19限制每一门课程最多60名学生选修CREATE ASSERTION ASSE_SC_CNUM1CHECK(60 = ALL (SELECT count(*) FROM SC GROUP by cno) ); /*此断言的谓词,涉及聚集操作count 和分组函数group by的SQL语句*/,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号