数据库课件5db数据库完整性.ppt

上传人:资****亨 文档编号:125530469 上传时间:2020-03-18 格式:PPT 页数:28 大小:62.50KB
返回 下载 相关 举报
数据库课件5db数据库完整性.ppt_第1页
第1页 / 共28页
数据库课件5db数据库完整性.ppt_第2页
第2页 / 共28页
数据库课件5db数据库完整性.ppt_第3页
第3页 / 共28页
数据库课件5db数据库完整性.ppt_第4页
第4页 / 共28页
数据库课件5db数据库完整性.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《数据库课件5db数据库完整性.ppt》由会员分享,可在线阅读,更多相关《数据库课件5db数据库完整性.ppt(28页珍藏版)》请在金锄头文库上搜索。

1、单击此处编辑母版标题样式 单击此处编辑母版副标题样式 1 第五章 数据库完整性 第5章 数据库完整性 n数据库的完整性是指数据的正确性和相容性 n为维护数据库的完整性 DBMS必须提供一种机 制来检查数据库中的数据 看其是否满足语义 规定的条件 这些加在数据库数据之上的语义 约束条件称为数据库完整性约束条件 它们作 为模式的一部分存入数据库中 nDBMS中检查数据是否满足完整性条件的机制称 为完整性检查 完整性控制 nDBMS的完整性控制机制应具有三方面的功能 n定义功能 提供定义完整性约束条件的机制 n检查功能 检查用户发出的操作请求是否违背 了完整性约束条件 n处理违约 如果发现用户的操作

2、请求使数据违 背了完整性约束条件 则采取一定的动作来保 证数据的完整性 5 1实体完整性 n实体完整性的定义 例 将Student表中的Sno属性定义为码 CREATE TABLE student sno char 10 PRIMARY KEY sname nvarchar 50 NOT NULL ssex nchar 10 sage smallint sdept char 20 实体完整性 n实体完整性检查和违约处理 n检查主码值是否唯一 如果不唯一则拒绝 插入或修改 n检查主码的各个属性是否为空 只要有一 个为空则拒绝插入或修改 nRDBMS核心一般都在主码上自动建立一个索 引 通过索引查

3、找基本表中是否已经存在 新的主码值 以提高效率 5 2参照完整性 n参照完整性的定义 例 定义SC表中的参照完整性 CREATE TABLE sc sno char 10 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 参照完整性 n参照完整性检查和违约处理 被参照表 参照表违约处理 可能破坏参照完整性 插入元组拒绝 可能破坏参照完整性 修改外码值拒绝 删除元组

4、可能破坏参照 完整性 拒绝 级连删除 设置为空值 修改主码值 可能破坏参照 完整性 拒绝 级连删除 设置为空值 参照完整性 n违约处理 n拒绝执行 默认策略 n级连操作 删除或修改参照表中的所有造成不一致的元 组 n设置空值 将参照表中的所有造成不一致的元组的对应 属性设置为空值 MYSQL 支持 SQL SERVER不支持 nCREATE TABLE Course n Cno CHAR 4 PRIMARY KEY nCname CHAR 40 nCpno CHAR 4 nCcredit SMALLINT nTeachName char 10 nFOREIGN KEY Cpno REFEREN

5、CES Course Cno ON DELETE SET NULL n 参照完整性 例 显式说明参照完整性的违约处理 CREATE TABLE sc sno char 10 NOT NULL cno char 4 NOT NULL grade SMALLINT PRIMARY KEY sno cno FOREIGN KEY sno REFERENCES Student Sno ON DELETE CASCADE ON UPDATE CASCADE FOREIGN KEY cno REFERENCES Course Cno ON DELETE NO ACTION ON UPDATE CASCAD

6、E 5 3用户定义的完整性 n属性上的约束条件的定义 n列值非空 NOT NULL n列值唯一 UNIQUE n检查列值是否满足一个布尔表达式 CHECK n属性上的约束条件检查和违约处理 n当往表中插入元组或修改属性的值时 RDMBS就 检查属性上的约束条件是否被满足 如果不满足 则操作被拒绝执行 用户定义的完整性 n元组上的约束条件的定义 CREATE TABLE TEACHER eno NUMERIC 4 PRIMARY KEY ename CHAR 10 sal NUMERIC 7 2 deduct NUMERIC 7 2 CONSTRAINT C TEA1 CHECK sal ded

7、uct 3000 5 4完整性约束命名子句 n完整性约束命名子句 CONSTRAINT PRIMARY KEY短 语 FOREIGN KEY短语 CHECK 短语 完整性约束命名子句 例1 CREATE TABLE student sno char 10 sname varchar 50 CONSTRAINT Cstu2 NOT NULL ssex nchar 10 CONSTRAINT Cstu3 CHECK ssex IN 男 女 sage smallint CONSTRAINT Cstu4 CHECK sage is NULL OR sage BETWEEN 15 AND 60 sdep

8、t char 20 CONSTRAINT C studentkey PRIMARY KEY SNO 完整性约束命名子句 例2 CREATE TABLE TEACHER eno NUMERIC 4 PRIMARY KEY ename CHAR 10 job CHAR 8 sal NUMERIC 7 2 deduct NUMERIC 7 2 deptno NUMERIC 2 CONSTRAINT C TEA1 CHECK sal deduct 3000 完整性约束命名子句 n修改表中的完整性限制 alter table sc add constraint c sc1 check grade bet

9、ween 0 and 100 Alter table sc drop constraint c sc1 SQLSERVER Alter table sc drop FOREIGN KEY c sc1 MYSQL n这些完整性规则足够吗 5 6触发器 n触发器是用户定义在关系表上的一类由事件 驱动的特殊过程 n触发器可以看作是一类特殊的存储过程 它 在满足某个特定条件时自动触发执行 触发 器是为表上的更新 插入 删除操作定义的 也就是说当表上发生更新 插入或删除操 作时触发器将执行 触发器的作用 安全性 可以基于数据库的值使用户具有操作数据库 的某种权利 可以基于时间限制用户的操作 例如不允许

10、下班后和节假日修改数据库数据 可以基于数据库中的数据限制用户的操作 例如不允许股票的价格的升幅一次超过10 审计 可以跟踪用户对数据库的操作 实现复杂的数据完整性规则 如 触发器可回退任何企图吃进超过自己保证 金的期货 在修改或删除时级联修改或删除其它表中的 与之匹配的行 触发器的作用 在修改或删除时把其它表中的与之匹配的行设 成NULL值 在修改或删除时把其它表中的与之匹配 的行级联设成缺省值 同步实时地复制表中的数据 自动计算数据值 如果数据的值达到了一定 的要求 则进行特定的处理 例如 如果公司 的帐号上的资金低于5万元则立即给财务人员 发送警告数据 SQLServer中触发器的使用 n

11、1 AFTER触发器 将在数据变动 INSERT UPDATE和DELETE操作 完成后才被激发 对变动数据进行检查 如果发现错误 将 拒绝或回滚变动的数据 n 2 INSTEAD OF 触发器 将在数据变动以 前被激发 并取代变动数据 INSERT UPDATE和DELETE操作 的操作 转而去执 行触发器定义的操作 触发器 nCREATE TRIGGER trigger name ON table view WITH ENCRYPTION FOR AFTER INSTEAD OF INSERT UPDATE WITH APPEND NOT FOR REPLICATION AS IF UPD

12、ATE column AND OR UPDATE column n IF COLUMNS UPDATED bitwise operator updated bitmask comparison operator column bitmask n sql statement n n两个特殊的表 Inserted表和Deleted表 nDeleted表 存放被删除的记录 存储在 高速缓存中 不能修改里面的数据 nInserted表 存放增加的记录 存储在 高速缓存中 不能修改里面的数据 SQLServer中触发器的使用 Inserted逻辑表 n在学生表中建立插入触发器tr InsertS 该触发

13、器在 往学生表中增加记录时触发 将往成绩表中增加该 同学选修课程的记录 每位学生必修两门课程 数 学 2 英语 9 n CREATE TRIGGER tr InsertS nON student nFOR INSERT nAS ndeclare sno char 10 nselect sno sno from Inserted nInsert into SC sno cno values sno 2 nInsert into Score sno cno values sno 9 Deleted逻辑表 n在学生表中建立删除触发器tr deleteS 该触 发器在删除学生表中的记录时触发 将从与

14、选课表中相应学生记录删除 ncreate trigger tr deleteS n on student n after delete nas n delete from sc n where sno in n select sno from deleted n Mysql中触发器的使用 nCREATE TRIGGER n BEFORE AFTER n INSERT UPDATE DELETE nON nFOR EACH ROW n n触发器自动激活 n一个表上只能建一个Insert Delete 触发器 n删除了触发器不会对表有影响 此课件下载可自行编辑修改 供参考 部分内容来源于网络 如有侵权请与我联系删除

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

当前位置:首页 > 高等教育 > 大学课件

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