数据库原理与技术-ppt课件.ppt

上传人(卖家):三亚风情 文档编号:3539304 上传时间:2022-09-14 格式:PPT 页数:106 大小:674.01KB
下载 相关 举报
数据库原理与技术-ppt课件.ppt_第1页
第1页 / 共106页
数据库原理与技术-ppt课件.ppt_第2页
第2页 / 共106页
数据库原理与技术-ppt课件.ppt_第3页
第3页 / 共106页
数据库原理与技术-ppt课件.ppt_第4页
第4页 / 共106页
数据库原理与技术-ppt课件.ppt_第5页
第5页 / 共106页
点击查看更多>>
资源描述

1、数据库原理与技术北京师范大学经济与工商管理学院课程内容数据库的完整性(重点)实体完整性实体完整性参照完整性参照完整性用户定义的完整性用户定义的完整性完整性约束命名字句完整性约束命名字句触发器触发器数据库的安全性(略讲)计算机安全性概述计算机安全性概述数据库安全性控制数据库安全性控制视图机制视图机制审计(审计(Audit)数据加密数据加密统计数据库安全性统计数据库安全性网上书店的关系模式书(书号,书名,出版社,出版社地址,出版社电话,定价,作者,简介,仓库号码,仓库地址,仓库联系人,库存量)会员(编号,姓名,性别,单位,电话,邮箱,通讯地址,邮编,会员级别,折扣率)订单(号码,会员号码,下单日期

2、,送书日期,地点,收件人,联系人,书号,数量,备注)数据库完整性数据库的完整性数据的正确性和相容性n数据的完整性和安全性是两个不同概念数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据防范对象:不合语义的、不正确的数据数据的安全性保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作数据库完整性(续)为维护数据库的完整性,DBMS必须:n1.提供定义完整性约束条件的机制n2.提供完整性检查的方法n3.违约处理实体完整性实体完整性定义实体完整性定义实体完整性检查和违约处理实体完整性检查和违约处理实体完整性定义关系模型的实体完整性CREATE TABLE中用

3、PRIMARY KEY定义单属性构成的码有两种说明方法 定义为列级约束条件定义为表级约束条件对多个属性构成的码只有一种说明方法定义为表级约束条件 实体完整性定义(续)例1 将Student表中的Sno属性定义为码 (1)在列级定义主码在列级定义主码 CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20);实体完整性定义(续)(2)在表级定义主码在表级定义主码 CREATE TABLE Student (Sno CHAR(9),Sna

4、me CHAR(20)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno);实体完整性定义(续)例2将SC表中的Sno,Cno属性组定义为码 CREATE TABLE SC (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno)/*只能在表级定义主码*/);实体完整性检查和违约处理插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:检查主码值是否唯一,如果不唯一则拒绝插入或修改检查主码的各个

5、属性是否为空,只要有一个为空就拒绝插入或修改实体完整性检查和违约处理(续)检查记录中主码值是否唯一的一种方法是进行全表扫描实体完整性检查和违约处理(续)索引 2 参照完整性参照完整性定义参照完整性定义参照完整性检查和违约处理参照完整性检查和违约处理参照完整性定义关系模型的参照完整性定义在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码用REFERENCES短语指明这些外码参照哪些表的主码 参照完整性定义(续)例:关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码 例3 定义S

6、C中的参照完整性 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)/*在表级定义参照完整性*/);参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理被参照表(例如Student)参照表(例如SC)违约处理可能破坏参照完整性 插入元组拒绝可能破

7、坏参照完整性 修改外码值拒绝删除元组 可能破坏参照完整性拒绝/级连删除/设置为空值修改主码值 可能破坏参照完整性拒绝/级连修改/设置为空值违约处理参照完整性违约处理1.拒绝(NO ACTION)执行默认策略2.级联(CASCADE)操作3.设置为空值(SET-NULL)对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值违约处理(续)例4 显式说明参照完整性的违约处理示例 CREATE TABLE SC (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno),FOREIGN KEY(Sno

8、)REFERENCES Student(Sno)ON DELETE CASCADE /*级联删除SC表中相应的元组*/ON UPDATE CASCADE,/*级联更新SC表中相应的元组*/FOREIGN KEY(Cno)REFERENCES Course(Cno)ON DELETE NO ACTION /*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ON UPDATE CASCADE /*当更新course表中的cno时,级联更新SC表中相应的元组*/);3 用户定义的完整性用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 RDBMS提供,而不必由应用程序承担3

9、 用户定义的完整性属性上的约束条件的定义属性上的约束条件的定义属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 元组上的约束条件的定义元组上的约束条件的定义 元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理属性上的约束条件的定义CREATE TABLE时定义列值非空(NOT NULL)列值唯一(UNIQUE)检查列值是否满足一个布尔表达式(CHECK)属性上的约束条件的定义(续)1.不允许取空值 例5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。CREATE TABLE SC (Sno CHAR(9)NOT NULL,Cno CHAR(4)NOT N

10、ULL,Grade SMALLINT NOT NULL,PRIMARY KEY(Sno,Cno),/*如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则在列级不允许取空值的定义就不必写了*/);属性上的约束条件的定义(续)2.列值唯一 例6 建立表DEPT,要求名称Dname列取值唯一,编号Deptno列为主码 CREATE TABLE DEPT (Deptno NUMERIC(2),Dname CHAR(9)UNIQUE,/*要求Dname列值唯一*/Location CHAR(10),PRIMARY KEY(Deptno);属性上的约束条件的定义(续)3.用CHECK短语指定列

11、值应该满足的条件例7 Student表的Sex只允许取“男”或“女”。CREATE TABLE Student (Sno CHAR(9)PRIMARY KEY,Sname CHAR(8)NOT NULL,Sex CHAR(2)CHECK(Sex IN(男,女),/*性别属性Sex只允许取男或女*/Sage SMALLINT,Sdept CHAR(20);2 属性上的约束条件检查和违约处理插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足如果不满足则操作被拒绝执行 3 元组上的约束条件的定义在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制同属性

12、值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件 元组上的约束条件的定义(续)例9 当学生的性别是男时,其名字不能以Ms.打头。CREATE TABLE Student (Sno CHAR(9),Sname CHAR(8)NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY(Sno),CHECK(Sex=女女 OR Sname NOT LIKE Ms.%)/*定义了元组中Sname和 Sex两个属性值之间的约束条件*/);性别是女性的元组都能通过该项检查,因为Ssex=女成立;当性别是男性时,要通过检查则名

13、字一定不能以Ms.打头元组上的约束条件检查和违约处理插入元组或修改属性的值时,RDBMS检查元组上的约束条件是否被满足如果不满足则操作被拒绝执行 4 完整性约束命名子句CONSTRAINT 约束CONSTRAINT PRIMARY KEY短语|FOREIGN KEY短语|CHECK短语完整性约束命名子句(续)例10 建立学生登记表Student,要求学号在9000099999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。CREATE TABLE Student (Sno NUMERIC(6)CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99

14、999),Sname CHAR(20)CONSTRAINT C2 NOT NULL,Sage NUMERIC(3)CONSTRAINT C3 CHECK(Sage 30),Ssex CHAR(2)CONSTRAINT C4 CHECK(Ssex IN(男,女),CONSTRAINT StudentKey PRIMARY KEY(Sno);在Student表上建立了5个约束条件,包括主码约束(命名为StudentKey)以及C1、C2、C3、C4四个列级约束。完整性约束命名子句(续)修改表中的完整性限制修改表中的完整性限制使用ALTER TABLE语句修改表中的完整性限制完整性约束命名子句(续)

15、例13 修改表Student中的约束条件,要求学号改为在900000999999之间,年龄由小于30改为小于40n可以先删除原来的约束条件,再增加新的约束条件 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 40);5 触发器触发器(Trigg

16、er)是用户定义在关系表上的一类由事件驱动的特殊过程由服务器自动激活可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力 触发器定义触发器定义触发器 激活触发器激活触发器 删除触发器删除触发器 定义触发器CREATE TRIGGER语法格式 CREATE TRIGGER BEFORE|AFTER ON FOR EACH ROW|STATEMENT WHEN 定义触发器(续)定义触发器的语法说明:1.创建者:表的拥有者2.触发器名3.表名:触发器的目标表4.触发事件:INSERT、DELETE、UPDATE5.触发器类型行级触发器(FOR EACH ROW)语句级触发器(FOR EAC

17、H STATEMENT)定义触发器(续)假设在例11的TEACHER表上创建了一个AFTER UPDATE触发器。如果表TEACHER有1000行,执行如下语句:UPDATE TEACHER SET Deptno=5;如果该触发器为语句级触发器,那么执行完该语句后,触发动作只发生一次如果是行级触发器,触发动作将执行1000次 定义触发器(续)6.触发条件触发条件为真省略WHEN触发条件7.触发动作体触发动作体可以是一个匿名PL/SQL过程块也可以是对已创建存储过程的调用定义触发器(续)例18 定义一个BEFORE行级触发器,为教师表Teacher定义完整性规则“教授的工资不得低于4000元,如

18、果低于4000元,自动改为4000元”。CREATE TRIGGER Insert_Or_Update_Sal BEFORE INSERT OR UPDATE ON Teacher /*触发事件是插入或更新操作*/FOR EACH ROW /*行级触发器*/AS BEGIN /*定义触发动作体,是PL/SQL过程块*/IF(new.Job=教授)AND(new.Sal 4000)THEN new.Sal:=4000;END IF;END;定义触发器(续)例19定义AFTER行级触发器,当教师表Teacher的工资发生变化后就自动在工资变化表Sal_log中增加一条相应记录 首先建立工资变化表S

19、al_log CREATE TABLE Sal_log (Eno NUMERIC(4)references teacher(eno),Sal NUMERIC(7,2),Username char(10),Date TIMESTAMP );定义触发器(续)例19(续)CREATE TRIGGER Insert_Sal AFTER INSERT ON Teacher /*触发事件是INSERT*/FOR EACH ROW AS BEGIN INSERT INTO Sal_log VALUES(new.Eno,new.Sal,CURRENT_USER,CURRENT_TIMESTAMP);END;定

20、义触发器(续)例19(续)CREATE TRIGGER Update_Sal AFTER UPDATE ON Teacher /*触发事件是UPDATE*/FOR EACH ROW AS BEGIN IF(new.Sal old.Sal)THEN INSERT INTO Sal_log VALUES(new.Eno,new.Sal,CURRENT_USER,CURRENT_TIMESTAMP);END IF;END;激活触发器触发器的执行,是由触发事件激活的,并由数据库服务器自动执行一个数据表上可能定义了多个触发器同一个表上的多个触发器激活时遵循如下的执行顺序:(1)执行该表上的BEFORE触

21、发器;(2)激活触发器的SQL语句;(3)执行该表上的AFTER触发器。激活触发器(续)例20执行修改某个教师工资的SQL语句,激活上述定义的触发器。UPDATE Teacher SET Sal=800 WHERE Ename=陈平;执行顺序是:执行触发器Insert_Or_Update_Sal执行SQL语句“UPDATE Teacher SET Sal=800 WHERE Ename=陈平;”执行触发器Insert_Sal;执行触发器Update_Sal 删除触发器删除触发器的SQL语法:DROP TRIGGER ON;触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。例2

22、1 删除教师表Teacher上的触发器Insert_Sal DROP TRIGGER Insert_Sal ON Teacher;小结数据库的完整性是为了保证数据库中存储的数据是正确的RDBMS完整性实现的机制完整性约束定义机制完整性检查机制违背完整性约束条件时RDBMS应采取的动作 数据库安全性 问题的提出数据库的一大特点是数据可以共享数据共享必然带来数据库的安全性问题数据库系统中的数据共享不能是无条件的共享例:军事秘密、国家机密、新产品实验数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据数据库安全性计算机安全性概述计算机安全性概述数据库安全性控制数据库安全性控制

23、视图机制视图机制审计(审计(Audit)数据加密数据加密统计数据库安全性统计数据库安全性计算机安全性概述计算机系统的三类安全性问题计算机系统的三类安全性问题 内容:硬件、软件及数据防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等技术安全类管理安全类政策法律类安全标准简介安全标准简介TCSEC标准CC标准数据库安全性控制概述非法使用数据库的情况编写合法程序绕过DBMS及其授权机制直接或编写应用程序执行非授权操作通过多次合法查询数据库从中推导出一些保密数据数据库安全性控制概述(续)计算机系统中,安全措施是一级一级层层设置计算机系统的安全模型 数据库安全性控制概述(续)数据库安全性控制的

24、常用方法用户标识和鉴定存取控制视图审计密码存储用户标识与鉴别用户标识与鉴别 (Identification&Authentication)系统提供的最外层安全保护措施用户标识与鉴别(续)用户标识口令系统核对口令以鉴别用户身份 用户名和口令易被窃取n每个用户预先约定好一个计算过程或者函数4.2.2 存取控制存取控制机制组成定义用户权限合法权限检查 用户权限定义和合法权检查机制一起组成了 DBMS的安全子系统存取控制(续)常用存取控制方法自主存取控制(Discretionary Access Control,简称DAC)强制存取控制(Mandatory Access Control,简称 MAC)

25、自主存取控制方法通过 SQL 的 GRANT 语句和 REVOKE 语句实现用户权限组成n数据对象n操作类型定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作定义存取权限称为授权 自主存取控制方法(续)关系数据库系统中存取控制对象 对象类型对象操 作 类 型数据库模式CREATE SCHEMA基本表CREATE TABLE,ALTER TABLE模式视图CREATE VIEW索引CREATE INDEX数据基本表和视图SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALL PRIVILEGES数据属性列SELECT,INSERT,UPDATE,RE

26、FERENCESALL PRIVILEGES关系数据库系统中的存取权限 授权与回收一、一、GRANTGRANT语句的一般格式:GRANT,.ON TO,.WITH GRANT OPTION;语义:将对指定操作对象的指定操作权限授予指定的用户 GRANT(续)发出GRANT:DBA数据库对象创建者(即属主Owner)拥有该权限的用户按受权限的用户 一个或多个具体用户PUBLIC(全体用户)WITH GRANT OPTION子句WITH GRANT OPTION子句:指定:可以再授予没有指定:不能传播不允许循环授权例题 例1 把查询Student表权限授给用户U1 GRANT SELECT ON

27、TABLE Student TO U1;例题(续)例2 把对Student表和Course表的全部权限授予用户U2和U3 GRANT ALL PRIVILIGES ON TABLE Student,Course TO U2,U3;例题(续)例3 把对表SC的查询权限授予所有用户 GRANT SELECT ON TABLE SC TO PUBLIC;例题(续)例4 把查询Student表和修改学生学号的权限授给用户U4 GRANT UPDATE(Sno),SELECT ON TABLE Student TO U4;对属性列的授权时必须明确指出相应属性列名 例题(续)例5 把对表SC的INSERT

28、权限授予U5用户,并允许他再将此权限授予其他用户 GRANT INSERT ON TABLE SC TO U5 WITH GRANT OPTION;传播权限执行例5后,U5不仅拥有了对表SC的INSERT权限,还可以传播此权限:例6 GRANT INSERT ON TABLE SC TO U6 WITH GRANT OPTION;同样,U6还可以将此权限授予U7:例7 GRANT INSERT ON TABLE SC TO U7;但U7不能再传播此权限。授权与回收(续)二、二、REVOKE授予的权限可以由DBA或其他授权者用REVOKE语句收回REVOKE语句的一般格式为:REVOKE,.ON

29、 FROM,.;REVOKE(续)例8 把用户U4修改学生学号的权限收回REVOKE UPDATE(Sno)ON TABLE Student FROM U4;REVOKE(续)例9 收回所有用户对表SC的查询权限REVOKE SELECT ON TABLE SC FROM PUBLIC;REVOKE(续)例10 把用户U5对SC表的INSERT权限收回REVOKE INSERT ON TABLE SC FROM U5 CASCADE;将用户U5的INSERT权限收回的时候必须级联(CASCADE)收回 系统只收回直接或间接从U5处获得的权限 REVOKE(续)执行例8到例10的语句后,学生-课

30、程数据库中的用户权限定义表授权用户名被授权用户名数据库对象名允许的操作类型能否转授权DBAU1关系StudentSELECT不能DBAU2关系StudentALL不能DBAU2关系CourseALL不能DBAU3关系StudentALL不能DBAU3关系CourseALL不能DBAU4关系StudentSELECT不能小结:SQL灵活的授权机制DBA:拥有所有对象的所有权限不同的权限授予不同的用户用户:拥有自己建立的对象的全部的操作权限GRANT:授予其他用户被授权的用户“继续授权”许可:再授予所有授予出去的权力在必要时又都可用REVOKE语句收回授权与回收(续)三、创建数据库模式的权限三、创

31、建数据库模式的权限 DBA在创建用户时实现CREATE USER语句格式 CREATE USER WITHDBA|RESOURCE|CONNECT授权与回收(续)拥有的权限可否执行的操作CREATE USERCREATE SCHEMACREATE TABLE登录数据库 执行数据查询和操纵DBA可以可以可以可以RESOURCE不可以不可以不可以不可以CONNECT不可以不可以不可以可以,但必须拥有相应权限权限与可执行的操作对照表 数据库角色数据库角色:被命名的一组与数据库操作相关的权限角色是权限的集合 可以为一组具有相同权限的用户创建一个角色简化授权的过程数据库角色角色的创建角色的创建CREAT

32、E ROLE 给角色授权给角色授权 GRANT ,ON 对象名 TO,数据库角色将一个角色授予其他的角色或用户将一个角色授予其他的角色或用户GRANT ,TO ,WITH ADMIN OPTION 角色权限的收回角色权限的收回 REVOKE,ON FROM,数据库角色(续)例11通过角色来实现将一组权限授予一个用户。步骤如下:1.首先创建一个角色 R1 CREATE ROLE R1;2.然后使用GRANT语句,使角色R1拥有Student表的SELECT、UPDATE、INSERT权限 GRANT SELECT,UPDATE,INSERT ON TABLE Student TO R1;数据库角

33、色(续)3.将这个角色授予王平,张明,赵玲。使他们具有角色R1所包含的全部权限 GRANT R1 TO 王平,张明,赵玲;4.可以一次性通过R1来回收王平的这3个权限 REVOKE R1 FROM 王平;数据库角色(续)例12角色的权限修改 GRANT DELETE ON TABLE Student TO R1数据库角色(续)例13 REVOKE SELECT ON TABLE Student FROM R1;4.2 数据库安全性控制4.2.1 用户标识与鉴别用户标识与鉴别4.2.2 存取控制存取控制4.2.3 自主存取控制方法自主存取控制方法4.2.4 授权与回收授权与回收4.2.5 数据库

34、角色数据库角色4.2.6 强制存取控制方法强制存取控制方法自主存取控制缺点可能存在数据的“无意泄露”原因:这种机制仅仅通过对数据的存取权限来进行安全控制,而数据本身并无安全性标记解决:对系统控制下的所有主客体实施强制存取控制策略 强制存取控制方法强制存取控制(MAC)保证更高程度的安全性用户能不能直接感知或进行控制适用于对数据有严格而固定密级分类的部门 军事部门 政府部门强制存取控制方法(续)主体是系统中的活动实体 DBMS所管理的实际用户 代表用户的各进程客体是系统中的被动实体,是受主体操纵的 文件 基表 索引 视图强制存取控制方法(续)敏感度标记(Label)绝密(Top Secret)机

35、密(Secret)可信(Confidential)公开(Public)主体的敏感度标记称为许可证级别(Clearance Level)客体的敏感度标记称为密级(Classification Level)强制存取控制方法(续)强制存取控制规则(1)仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体(2)仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体修正规则主体的许可证级别 得到的利益小结数据的共享日益加强,数据的安全保密越来越重要DBMS是管理数据的核心,因而其自身必须具有一整套完整而有效的安全性机制TCSEC和CC实现数据库系统安全性的技术和方法存取控制技术视图技术审计技术自主存取控制功能 通过SQL 的GRANT语句和REVOKE语句实现角色 使用角色来管理数据库权限可以简化授权过程 CREATE ROLE语句创建角色GRANT 语句给角色授权 下课了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(数据库原理与技术-ppt课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|