5.1 DBMS的组成与功能
5.1.1 DBMS软件及其组成
1、数据定义语言(DDL)及其翻译处理程序
数据定义语言:定义数据库的子模式、模式、内模式、各个模式之间的映射、有关的约束条件等。
翻译处理程序:翻译成相应的内部表示。
2、数据操纵语言(DML)及其翻译(或解释)程序
DML:根据能否独立使用可分为宿主型DML和自住型DML。
3、数据库运行控制程序
文件读写及维护、存取路径管理、缓冲区管理等
4、实用程序
数据初始装入、 性能检测、优化、数据转换、通信
5.1.2 DBMS的主要功能
1、数据定义:定义各个模式及映射
2、数据操作:增删改查
3、数据组织、存储和管理:物理存储
4、数据库运行管理:各种约束、安全性检查
5、数据库的建立和维护:数据库初始数据的输入、转换、数据恢复等
6、数据接口:与其他软件系统进行通信
5.1.3 DBMS的工作过程
存取一个记录的过程如下:
1、用户发出指令,包含参数
2、DBMS分析指令,检查权限,决定是否执行
3、DBMS如决定执行,取出对应模式
4、DBMS取出内模式,决定如何读取
5、DBMS向系统发送读取指令
6、OS发出调页指令
7、DBMS根据路径将数据送往程序的工作区
8、DBMS在程序调用的返回点提供成功与否的信息
9、记载工作日志
10、应用程序检查状态信息,并进行处理
5.2 查询优化与系统调优
5.2.1 关系数据库的查询调优
1、查询处理中的优化问
基本途径:用户手动处理、机器自动处理
关系DBMS可自动生成若干候选查询计划并且从中选取较优的查询计划的程序称为查询优化器。
2、查询优化技术
1、规则优化:按照某些启发式规则进行优化,也称代数优化。
2、物理优化:与索引和排序有关的物理优化。
3、代价估算优化:对多个候选策略执行代价估算,从中选择代价最低的策略。
3、查询优化的一般策略
一般系统都是选用规则优化方法。
1、尽可能先做选择运算,允许的情况下再有限执行投影运算。(最重要、最基本)
2、合并笛卡尔积与其后的选择为连接运算。
3、把投影运算与选择运算同时进行。
4、让投影运算与其前后的其他运算同时进行。
5、在执行连接前对关系适当地预处理。
6、找出公共子表达式。
5.2.2 数据库系统调优
数据库调优:修改一个数据库应用系统并调整DBMS参数以提高性能的过程。
性能:以执行一个任务的响应时间和和吞吐量衡量。
数据库调优的层次:最底层硬件层、DBMS层、应用层。
1、数据库模式调优
1、设置索引
1、聚集索引与非聚集索引的选择
当一次访问较多的行时(超过20%),需要谨慎考虑是否创建索引。
2、嵌套查询与索引(应尽量避免嵌套查询)
3、使用GROUPE BY的查询
4、连接查询与索引
5、外键约束(考虑删除某列时候,相关联的外键约束的检查开销)
6、使用聚集函数(索引扫描的开销很小,可以考虑用索引扫描代替表扫描)
2、反规范化设计
采用模式合并、增加冗余信息的方式提升查询性能。
缺点:需要额外的存储空间、额外的开销维持数据一致性。
3、行、列的选择
4、数据分割
2、SQL语句调优
1、尽量避免排序
2、谨慎使用视图(有些查询直接查询相关表即可,如果通过视图查询会增加额外的查询开销)
3、考虑查询重构
4、数据库调优工具(创建实验数据库,查看DBMS生成的查询佳话)
5.3 数据库的安全性
5.3.1 安全性的基本概念
1、数据库安全性问题
系统安全问题可分为三大类:技术安全、管理安全、政策法律类
2、数据库系统安全模型
5.3.2 安全性控制技术
1、身份认证
通过用户名和密码鉴定
2、存取控制
DBMS的安全子系统主要包括两方面:
定义用户权限、合法权限检查(拒绝超出权限范围的操作)
三种常用的存取控制方法:
1、自主访问控制(DAC):用户对不同的对象有相对应的权限,并且可以把自己的权限授权给其他用户
2、强制访问控制(MAC):每个对象有一个密级,每个用户有一个相应级别的许可证,大于密级才可以操作对象。由管理员进行授权。
3、基于角色访问控制(RBAC):每个角色有相应的权限,每个用户通过系统管理员分配的角色进行访问。
3、视图限制
对不同的用户定义不同的视图,隐藏保密的数据
4、审计追踪
监视用户的存取活动,对危险行为进行警报或者记录。
5、数据加密
5.3.3 自主存取控制的实施
1、用户分类与权限:系统用户、数据对象的属主、一般用户、公共用户
2、授权功能
3、表/视图特权的授予
授予权限示例:
GRANT SELECT,UPDATE(sno)
ON TABLE s_c
TO user1,user2
WITH GRANT OPTION
收回权限:
REVOKE INSERT
ON TABLE S_C
FROME user1
4、数据库权限的授予
一个角色可以授予多个用户,一个用户可以被授予多个角色,一个角色可以授予另外一个角色权限。
1、创建角色
CREATE ROLE role1
2、授予角色权限
GRANT SELSCT sno
ON TABLE stu
TO role1
3、将一个角色授予其他角色或者用户
GRANT role1
TO user1,user2
4、回收权限
REVOKE role2,FROME user2
5.3.4 Web数据库安全策略
异构环境的数据库安全策略:
1、全局范围的身份认证
2、全局的访问控制,以支持各类局部访问控制
3、全局完整性控制,以完善数据库安全
4、网络安全管理,包括网络信息加密、网络入侵防护和检测等
5.4 数据库的完整性
5.4.1 完整性控制功能
1、安全性与完整性的关系
安全性针对用户,防范非法用户和非法操作。
完整性针对数据,防范不合语义的数据加入。
2、完整性控制的功能
1、定义功能;2、检查功能;3、防范功能。
5.4.2 完整性约束设计
1、基本表约束
1、主键与候选键定义
2、检查约束定义
3、外键定义(1、NO ACTION;2、CASCADE;3、RESTRICT;4、SET NULL;5、SET DEFAULT)
2、域约束(CREATE DOMAIN):作用于所有属于这个域的属性列的约束
例:定义有效成绩等级网诶:A、B、C、D、E的域约束
CREATE DOMAIN gradess CHAR(1) DEFAULT '?'
CONSTRAINT valid-grade
CHECK (VALUE IN ('A','B','C','D','E'));
3、断言(CHECK):对基本表的单独一行或整个基本表定义有效值集合,或定义存在于多个基本表中的有效值集合。
例:每门课程只允许100个学生选修
CREATE ASSERTION asser1
CHECK(100>=ALL(
SELECT COUNT(sno)
FROM s_c
GROUP BY cno
))
例:撤销断言
DROP ASSERTION asser1;
5.4.3 数据库触发器设计
1、触发器的概念与作用
触发器是对当规定的数据进行操作时,自动执行的数据库操作语句
包括事件、条件、动作三部分。用于完整性保护,而且具有主动性的功能。
2、定义SQL触发器
示例1:将每一从表book中删除的书名插入到一个称为bookdelete的表中
CREATE TRIGGER book-de
AFTER DELETE ON book
REFERENCING OLD AS oldline
FOR EACH ROW
INSERT INTO bookdelete VALUES(oldline.title)
示例2:修改属性grade时,修改之后的成绩不能低于修改之前的成绩。
CREATE TRIGGER trig_grade
AFTER UPDATE OF grade ON s_c
REFERENCE OLD AS oldg,NEW AS newg
FOR EACH ROW
WHEN (oldg.grade>newg.grade)
UPDATE s_c
SET grade=oldg.grade
WHERE cno=newg.cno
示例3、撤销触发器
DROP TRIGGER triggerName