数据库5版讲稿第四章-高级SQL.ppt
《数据库5版讲稿第四章-高级SQL.ppt》由会员分享,可在线阅读,更多相关《数据库5版讲稿第四章-高级SQL.ppt(65页珍藏版)》请在三一办公上搜索。
1、DATABASE SYSTEM CONCEPTS,第4章 高级SQL,2023/11/14,2,数据库系统概念-SQL,4.2 完整性约束,完整性数据的正确性和相容性完整性检查DBMS必须提供一种机制来检查数据库中的数据是否满足规定的条件,以保证数据库中数据是正确的,避免非法的不合语义的错误数据的输入和输出,即所谓的“垃圾进垃圾出”(Garbage In Garbage Out)所造成的无效操作和错误结果,2023/11/14,3,数据库系统概念-SQL,完整性约束,完整性子系统数据库的非法更新数据本身是错误的数据原来是正确的,操作或程序错误导致输入数据错误由于系统故障,导致数据错误事务的并发
2、执行产生不正确结果人为故意破坏完整性子系统功能监督事务执行,检查是否违反完整性规则如有违反,采取相应措施(拒绝、报告、改正),2023/11/14,4,数据库系统概念-SQL,完整性控制,完整性规则完整性规则集由DBA或程序员事先提供的有关数据约束的一组规则规则的构成约束条件:要检查什么样的错误(性别为男女)触发条件:什么时候使用规则进行检查(插入元组)ELSE子句:若检查出错误,该怎样进行处理(显示错误)规则的分类域完整性规则:属性取值范围域联系规则:在一个或多个关系中,属性间的联系影响约束关系完整性规则:更新操作对数据库中值的影响和限制,2023/11/14,5,数据库系统概念-SQL,完
3、整性控制,在属性值上的约束非空约束:要求某属性取值不能为空值SNAME CHAR(8)NOT NULL基于属性的检查子句CHECK(AGE15)域约束子句用CREATE DOMAIN定义域时,可以出现 CHECKCREATE DOMAIN AGE SMALLINT CHECK(VALUE=15)AND VALUE=25),2023/11/14,6,数据库系统概念-SQL,完整性控制,主码约束主码值不允许空,也不允许出现重复意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的主码定义形式主码子句:PRIMARY
4、 KEY(Sno)主码短语:Sno CHAR(4)PRIMARY KEY,2023/11/14,7,数据库系统概念-SQL,完整性控制,外码约束(参照完整性)关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码,如 S关系中的Dno属性如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1 中某个元组的Pk 值,或者为空值意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在例如关系S在Dno上的取值有两种可能 空值,表示该学生尚未分到任何系中;若非空值,则必须是DEPT关系中某个元组的Dno值
5、,表示该学生不可能分到一个不存在的系中,2023/11/14,8,数据库系统概念-SQL,完整性控制,定义形式在SC表中,定义 FOREIGN KEY(Sno)REFERENCES S(Sno)Sno在SC中是外码,在S中是主码,Sno在SC中取值或为空或为S中某个Sno值作为主码的关系称为基本(参照)关系,作为外码的关系称为依赖关系,2023/11/14,9,数据库系统概念-SQL,完整性控制,删除基本关系元组RESTRICT方式只有当依赖关系中没有一个外码值与要删除的基本关系的主码值相对应时,才可以删除该元组,否则系统拒绝此删除操作CASCADE方式将依赖关系中所有外码值与基本关系中要删除
6、的主码值所对应的元组一起删除SET NULL方式删除基本关系中元组时,将依赖关系中与基本关系中被删主码值相对应的外码值置为空值如FOREIGN KEY(Sno)REFERENCES S(Sno)ON DELETE CASCADE|SET NULL,2023/11/14,10,数据库系统概念-SQL,完整性控制,修改基本关系主码RESTRICT方式只有当依赖关系中没有一个外码值与要修改的基本关系的主码值相对应时,才可以修改该元组主码,否则系统拒绝此次修改CASCADE方式将依赖关系中所有与基本关系中要修改的主码值所对应的外码值一起修改为新值SET NULL方式:修改基本关系中元组主码时,将依赖关
7、系中与基本关系中被修改主码值相对应的外码值置为空值如FOREIGN KEY(Sno)REFERENCES S(Sno)ON UPDATE CASCADE|SET NULL,2023/11/14,11,数据库系统概念-SQL,完整性控制,全局约束全局约束涉及多个属性间的或多个关系间的联系CREATE TABLE SC(Sno CHAR(4),Cno CHAR(4),GRADE SMALLINT,PRIMARY KEY(Sno,Cno),CHECK(Sno IN(SELECT Sno FROM S),CHECK(Cno IN(SELECT Cno FROM C),S中删除元组,不会触发CHECK子
8、句,只有对SC表的更新才会触发,2023/11/14,12,数据库系统概念-SQL,完整性控制,对约束的命名、撤消和添加命名CONSTRAINT 约束名 示例Sno CHAR(4)CONSTRAINT S_PK PRIAMRY KEYAGE SAMLLINT CONSTRAINT AGE_VAL CHECK(AGE=15 AND AGE=25),2023/11/14,13,数据库系统概念-SQL,完整性控制,关系上约束的撤消与添加撤消用alter drop添加用alter add示例alter table S drop constraint S_PKalter table SC add con
9、straint SC_CHECK check(Sno in select Sno from S),2023/11/14,14,数据库系统概念-SQL,完整性控制,域约束的创建、撤消与添加create domain AGE_DOMAIN smallintconstraint DC_AGE check(value=15)alter domain AGE_DOMAINadd constraint DC_AGE check(value=15)alter domain AGE_DOMAINdrop constrain DC_AGE,2023/11/14,15,数据库系统概念-SQL,完整性控制,关系上约
10、束的撤消与添加撤消用alter drop添加用alter add示例alter table S drop constraint S_PKalter table SC add constraint SC_CHECK check(Sno in select Sno from S),2023/11/14,16,数据库系统概念-SQL,完整性控制,域约束的创建、撤消与添加create domain AGE_DOMAIN smallintconstraint DC_AGE check(value=15)alter domain AGE_DOMAINadd constraint DC_AGE check(
11、value=15)alter domain AGE_DOMAINdrop constrain DC_AGE,2023/11/14,17,数据库系统概念-SQL,完整性控制,断言定义:CREATE ASSERTION CHECK 断言是谓词,表达数据库总应该满足的条件一旦定义了断言,系统验证其有效性,并且对每个可能违反该断言的更新操作都进行检查这种检查会带来巨大的系统负载,因此应该谨慎使用断言对断言“所有X,P(X)”,是通过检查“not exists X,P(X)”来实现的,2023/11/14,18,数据库系统概念-SQL,完整性控制,示例:不允许男同学选修张老师课程create asser
12、tion ASSE2 check(not exists(select*from SC where Cno in(select Cno from C where TEACHER=张)and Sno in(select Sno from S where SEX=M),2023/11/14,19,数据库系统概念-SQL,完整性控制,示例:每门课最多50名男同学选修create assertion ASSE1 check(50=all(select count(SC.Sno)from S,SC where S.Sno=SC.Sno and SEX=M group by Cno)撤消:drop asse
13、rtion 断言名drop assertion ASSE1,2023/11/14,20,数据库系统概念-SQL,完整性控制,触发器:触发器是一条语句,当对数据库做修改时,它自动被系统执行触发器的定义指明什么条件下触发器被执行指明触发器执行的动作是什么触发器的作用示警满足特定条件时自动执行某项任务触发器事件Insert、delete、update,2023/11/14,21,数据库系统概念-SQL,完整性控制,2023/11/14,22,数据库系统概念-SQL,完整性控制,EMP(ENO,ENAME,SAL,JOB)职工工资增幅不得超过10%create trigger RAISE_LIMIT
14、after update of SAL on EMPreferencing new row as nrow old row as orowfor each rowwhen(nrow.SAL 1.1*orow.SAL)begin atomicsignal SQLSTATE(7500,Salary increase 10%)end,2023/11/14,23,数据库系统概念-SQL,完整性控制,当帐户透支时,将帐户余额设为0,并建一笔贷款,其金额为透支额create trigger overdraft-trigger after update on accountreferencing new r
15、ow as nrow for each rowwhen nrow.balance 0begin atomic insert into borrower(select customer-name,account-number from depositor where nrow.account-number=depositor.account-number);insert into loan values(nrow.account-number,nrow.branch-name,nrow.balance);update account set balance=0where account.acco
16、unt-number=nrow.account-numberend,2023/11/14,24,数据库系统概念-SQL,4.3 授权,安全性控制定义安全性控制保护数据库以防止不合法的使用所造成的数据泄露和破坏。其基本措施是存取控制安全性措施物理级人际级操作系统级网络级数据库系统级,2023/11/14,25,数据库系统概念-SQL,数据控制功能,权限的转授和回收允许用户把已获得的权限转授给其他用户,也可以把已授给其他用户的权限再回收上来权限图结点是用户,根结点是DBA,有向边UiUj,表示用户Ui把某权限授给用户Uj一个用户拥有权限的充分必要条件是在权限图中有一条从根结点到该用户结点的路径,2
17、023/11/14,26,数据库系统概念-SQL,数据控制功能,2023/11/14,27,数据库系统概念-SQL,数据控制功能,授权命令grant 表级权限 on 表名|视图名 to 用户,用户|public with grant option表级权限包括:select,update,insert,delete,index,alter,drop,resource以及它们的总和all,其中对select,update可指定列名with grant option表示获得权限的用户可以把权限再授予其它用户,2023/11/14,28,数据库系统概念-SQL,数据控制功能,示例grant selec
18、t,insert on S to Liming with grant optiongrant all on S to public,2023/11/14,29,数据库系统概念-SQL,数据控制功能,回收权限revoke 表级权限 on 表名|视图名 from 用户,用户|public收回权限时,若该用户已将权限授予其它用户,则也一并收回。授权路径的起点一定是DBA示例revoke insert on S from Liming,2023/11/14,30,数据库系统概念-SQL,数据控制功能,思考一:grant可以基于列授权,当revoke这样的权限时,结果是什么?思考二:执行完下列语句的结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 讲稿 第四 高级 SQL
链接地址:https://www.31ppt.com/p-6578396.html