务也是 DBMS 最小的故障恢复任务单元和并发控制任务单元。为了确保数据库共享访问的数据正确性,要求 DBMS 的事务管理机制维护事务的 ACID 特性。事务程序主要解决并发控制和系统恢复。
3)防止死锁的策略:允许用户一次发出当前所需全部资源的锁定,使用完成后,再释放给其它用户访问。规定所有应用程序锁定资源的顺序必须完全相同。当发生死锁时,回滚其中的一个事务,并取消它对数据库所做的改动。
顺序封锁法: 将数据库对象按某种规定的顺序排列,要求事务实行封锁也必须按照这个顺序进行。 一次封锁法: 要求事务在开始执行前先申请到所需的所有封锁,如果有一个封锁没有申请到,则事务中止。
用时间戳的死锁预防:根据事务启动时的时间戳设置事务的优先级,越早开始运行的事务优先级越高。为预防死锁,在事务 Ti 申请的封锁与事务 Tj 已经拥有的封锁发生冲突时,锁管理器可使用如下两种不同的机制:Wait-die 机制:若 Ti 优先级较高,则 Ti 可以等待;否则中止事务 Ti。Wound-wait 机制:若 Ti 优先级较高,则中止 Tj;否则 Ti 等待。
4) 数据库系统安全模型:身份验证:用来确认登录用户是否是合法使用者;权限控制:通过权限机制控制用户对数据的访问;系统防护:OS 系统安全机制防范非法系统访问;权限控制:通过加密算法对数据库中数据进行加密存储。实现方法:用户要访问数据库,必须先在 DBMS 中创建其账号,并成为数据库的用户。此后,用户每次访问数据库,都需要在
DBMS 进行身份验证,只有合法用户才能进入系统,访问操作数据库对象。 5)数据库备份——是指将数据库当前数据和状态进行副本复制,以便当数据库受到破坏或丢失数据时可以进行修复。数据库恢复——是指数据库中数据丢失或被破坏时,从备份副本将数据库从错误状态恢复到某一正确状态。恢复机制涉及两个关键问题:如何建立冗余数据(在数据库正常运行的情况下随时记录数据库的变化),如何利用冗余数据实施数据库恢复(数据库一旦失效,用记录的数据进行恢复)。恢复技术是衡量数据库管理系统优劣的重要指标;恢复机制常用的技术:记录日志文件和数据转储。
备份内容——包括数据文件、日志文件、系统数据库等。所谓转储是指 DBA 定期地将整个数据库复制到某种存储介质(如磁带、磁盘、光盘等)上保存起来的过程。备用的数据文本称为后备副本或后援副本。数据转储是数据库恢复中采用的基本技术。备份时机——当系统数据库被修改、日志被清理、用户数据库创建、用户数据库加载等事件出现时或定期备份。静态转储与动态转储,完全转储与增量转储
第七章
1 单选题 A C C 2. 判断题 对错对错 对对
3 填空题 过程参数;系统存储过程 临时存储过程;存储过程 4 简答题
1) 数据库应用系统从作用范围的角度可分为三种类型:基于单机的数据库应用系统: 特点: 在
单机结构系统中,整个数据库系统都装在一台计算机上,由一个用户进行访问操作,数据不能共享,数据冗余度大。 . 集中式结构: 数据库系统的应用程序、DBMS、数据,都放在同一主机上,所有的处理任务由主机完成,多个用户可同时并发地存取数据,能够共享数据。基于局域网的客户-服务器(C/S)数据库应用系统: 用户将数据传送到服务器进行处理。服务器将结果返回给用户,提高了系统的性能和负载能力,但可能带来网络上数据传数量过大。基于互联网的浏览器-服务器(B/S)的数据库应用系统。分布式结构:用户将数据传送到服务器进行处理。服务器将结果返回给用户,提高了系统的性能和负载能力,但可能带来网络上数据传数量过大。用户将数据传送到服务器进行处理。服务器将结果返回给用户,提高了系统的性能和负载能力,但可能带来网络上数据传数量过大。
2) 数据库开发生命周期是一个设计、实现和维护数据库系统的过程,需要符合组织战略和操
作信息的需求。数据库开发生命周期与信息系统软件开发生命周期是内在关联的。DDLC 与 SDLC 是同步进行的。
a. 系统需求分析系统分析人员与用户交流,按照软件工程方法获取系统数据需求信息,并采用
模型定义系统数据组成,及其数据字典。
b. 系统数据架构设计 系统架构设计人员根据系统功能和性能需求,对系统数据架构模型进行设
计,包括系统数据概念模型、系统数据逻辑模型和系统数据物理模型。
c. 系统数据库实现 系统数据库开发人员根据系统设计方案,对系统数据库进行部署和模型实现,
包括系统数据库创建、数据表创建、索引和约束等对象创建。
d. 系统测试 系统测试人员将测试数据上载到数据库中,对数据库对象进行测试操作访问,实现
数据库功能和性能测试。
e. 系统运行与维护:系统运维人员在系统投入运行过程中,对系统数据库进行定期维护和优化,
以保证数据库系统正常地、高效地运行。
3) 软件开发生命周期包括需求或概念阶段,规格说明阶段:将用户需求写成规格说明文档,阐述软件产品的预期功能。计划阶段:草拟软件项目管理计划,细化软件开发的各个方面。设计阶段:为实现软件规格说明文档中的功能而经历两个连续的设计阶段。第一个阶段是概要设计阶段;第二个阶段是详细设计阶段。这两个设计阶段的文档描述如何实现软件产品。编程(编码或实现)阶段:用特定的计算机编程语言编写各个模块的代码。, 集成(测试)阶段:完成模块的单独测试和集成测试,经历 Alpha 测试和 Beta 测试。维护阶段:完成所有维护工作。当增强和更改软件时,需要更新相应的软件规格说明文档。 4)应用程序在访问数据库时,需要与 DBMS 建立通信连接。但是,不同厂家的 DBMS 提供不同的数据库访问应用程序接口(Application Programming Interface,API)。因此,需要提供一种统一的数据库通信方式来屏蔽不同厂家的 DBMS 的 API 差异性。数据库连接中间件正是这样一种技术。主要 ODBC、JDBC 和嵌入式 SQL 技术。
ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA, Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准 API。这些 API 利用 SQL 来完成其大部分任务。
JDBC(Java Data Base Connectivity,Java 数据库连接)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。
有了 JDBC API,就不必为访问 Sybase 数据库专门写一个程序,为访问 Oracle 数据库又专门写一个程序,或为访问 SQL Server 数据库又编写另一个程序等。作为 API,JDBC 为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。
JDBC 使用已有的 SQL 标准并支持与其他数据库连接标准,如 ODBC 之间的桥接。JDBC 实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。JDBC 实际上做了 3 件事:建立与数据库的连接、发送 SQL、处理结果。
SQL 语言可以独立使用,称为交互式(Interactive SQL,ISQL)。但 ISQL 的功能仅限于数据库上操作,缺少数据处理能力。而一个应用程序既要访问数据,又要处理数据,把 SQL 嵌入到程序设计语言,如 C,C++,Java 等,即宿主语言中,将两者的功能相结合起来,是目前解决这个问题的实现途径。这样使用的 SQL 称为嵌入式 SQL(Embedded SQL,ESQL)。
5)DBMS 通过游标(Cursor)提供了一种从记录集中逐一访问记录的灵活手段。就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条 SQL 选择语句(Select)相关联。Transact_SQL 游标是由 DECLARE CURSOR 语法定义,主要用在 Transact_SQL 脚本、存储过程和触发器中。Transact_SQL 游标主要用在服务器上,由从客户端发送给服务器的 Transact_SQL 语句或是批处理、存储过程、触发器中的 Transact_SQL 进行管理。 Transact_SQL 游标不支持提取数据块或多行数据。
6)存储过程是一组已被编辑在一起的,存储在服务器上的,执行某种功能的预编译 SQL 语句。它是一种封装重复任务操作方法,支持用户提供的参数变量,具有强大的编程能力。存储过程非常类似于 DOS 系统中的批处理文件。它将完成某项任务的许多 SQL 语句写在一起,组成命令集合的形式,然后通过执行该存储过程就可以完成相应的任务。
优点:加快程序的执行速度、减少网络的流量、提供一种安全机制、允许程序模块化设计、提高编程的灵活性
7)从本质上看,触发器是一种特殊的存储过程,它不同于我们前面介绍过的存储过程。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。触发器在插入、删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力。当使用 INSERT、DELETE、UPDATE 命令对触发器所保护的数据进行修改时,触发器能够被自动激活,从而确保对数据的处理必须符合由这些 SQL 语句所定义的规则。它除了能够完成复杂的完整性约束以外,还可以在主动数据库(Active Database)
的应用中对不同的外部事件做出及时反应。
作用:维护约束:前面讨论了触发器可以用于维护外码和语义约束。这种类型的触发器通常形式是使用 ON DELETE 和 ON UPDATE 子句。
业务规则:业务是对基本规则简洁的正式陈述,这些基本规则是企业中业务运作的基础。监控:由于在数据库中每条新记录的插入都是一个事件,触发器可以间接地用于监控这些对象的状态。 辅助高速缓存数据的维护:物化视图(MATERIALIZED VIEW)是这类应用的实例。每当物化视图的基础表发生改变时,与该基础表相连的触发器就会更新物化视图。
简化应用设计:将核心编程逻辑从异常处理中分离出来,可以相当大地简化某些应用。若异 常可以被模型化为数据库中的更新操作,则触发器是此类应用的理想实现途径。
CREATE TRIGGER 触发器名称 ON { table | view } { { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [DELETE ] } AS
} }