当前位置:首页 » 操作系统 » 数据库原理及应用

数据库原理及应用

发布时间: 2022-01-09 04:39:10

数据库原理及应用试题

1.B 2.C 3.B 4.C 5.D 6.C 7.C 8.D 9.C 10.A
11.A 12.A 13.A --不太确定 14.B 15.C 16.A 17.B 18.A 19.D 20.C

1.试述事务的概念及事务的四个特性。
答:
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这个四个特性也简称为ACID特性。
原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

2.为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。
答:
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
例如某工厂的库存管理系统中,要把数量为Q的某种零件从仓库1移到仓库2存放。
则可以定义一个事务T,T包括两个操作;Q1=Q1-Q,Q2=Q2+Q。如果T非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q。

3.数据库中为什么要有恢复子系统?它的功能是什么?
答:
因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。
恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。

4.数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
答:数据库系统中可能发生各种各样的故障,大致可以分以下几类:
(1)事务内部的故障;
(2)系统故障;
(3)介质故障;
(4)计算机病毒。
事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据
库数据。

5.据库恢复的基本技术有哪些?
答:
数据转储和登录日志文件是数据库恢复的基本技术。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。

6. 数据库转储的意义是什么? 试比较各种数据转储方法。
答:
数据转储是数据库恢复中采用的基本技术。所谓转储即DBA定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。
静态转储:在系统中无运行事务时进行的转储操作。静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。
动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。
为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件(log file)。这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。
转储还可以分为海量转储和增量转储两种方式。
海量转储是指每次转储全部数据库。增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。

7. 什么是日志文件?为什么要设立日志文件?
答:
(1)日志文件是用来记录事务对数据库的更新操作的文件。
(2)设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。

8. 登记日志文件时为什么必须先写日志文件,后写数据库?
答:
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。

9. 针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复?系统故障的恢复?介质故障恢复?)
答:
事务故障的恢复:
事务故障的恢复是由DBMS自动完成的,对用户是透明的。
DBMS执行恢复步骤是:
(1)反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
(2)对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。
(3)继续反向扫描日志文件,做同样处理。
(4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。
答:
系统故障的恢复:
系统故障可能会造成数据库处于不一致状态:
一是未完成事务对数据库的更新可能已写入数据库;
二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。
因此恢复操作就是要撤销(UNDO)故障发生时未完成的事务,重做(REDO)已完成的事务。
系统的恢复步骤是:
(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。
(2)对撤销队列中的各个事务进行UNDO处理。
进行UNDO处理的方法是,反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”(Before Image)写入数据库。
(3)对重做队列中的各个事务进行REDO处理。
进行REDO处理的方法是:正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”(After Image)写入数据库。
*解析:
在第(1)步中如何找出REDO队列和UNDO队列?请大家思考一下。
下面给出一个算法
1) 建立两个事务队列:
· UNDO-LIST: 需要执行undo操作的事务集合;
· REDO-LIST: 需要执行redo操作的事务集合;
两个事务队列初始均为空。
2) 从日志文件头开始,正向扫描日志文件
· 如有新开始(遇到Begin Transaction)的事务Ti,把Ti暂时放入UNDO-LIST队列;
· 如有提交的事务(遇到End Transaction)Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列;
直到日志文件结束
答:
介质故障的恢复:
介质故障是最严重的一种故障。
恢复方法是重装数据库,然后重做已完成的事务。具体过程是:
(1)DBA装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到转储时的一致性状态。
(2)DBA装入转储结束时刻的日志文件副本
(3)DBA启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。

*解析
1)我们假定采用的是静态转储,因此第(1)步装入数据库后备副本便可以了。
2)如果采用的是静动态转储,第(1)步装入数据库后备副本还不够,还需同时装入转储开始时刻的日志文件副本,经过处理后才能得到正确的数据库后备副本。
3)第(2)步重做已完成的事务的算法是:
a. 正向扫描日志文件,找出故障发生前已提交的事务的标识,将其记入重做队列
b. 再一次正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。

10. 具有检查点的恢复技术有什么优点?
答:
利用日志技术进行数据库恢复时,恢复子系统必须搜索日志,确定哪些事务需要REDO,哪些事务需要UNDO。一般来说,需要检查所有日志记录。这样做有两个问题:
一是搜索整个日志将耗费大量的时间。
二是很多需要REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,恢复子系统又重新执行了这些操作,浪费了大量时间。
检查点技术就是为了解决这些问题。

11. 试述使用检查点方法进行恢复的步骤。
答:
① 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。
② 由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。
这里建立两个事务队列:
· UNDO-LIST: 需要执行undo操作的事务集合;
· REDO-LIST: 需要执行redo操作的事务集合;
把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。
③ 从检查点开始正向扫描日志文件
· 如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列;
· 如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列,直到日志文件结束;
④ 对UNDO-LIST中的每个事务执行UNDO操作, 对REDO-LIST中的每个事务执行REDO操作。

12. 什么是数据库镜像?它有什么用途?
答:
数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
数据库镜像的用途有:
一是用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
二是提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。

⑵ 数据库原理及应用

数据库原理是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。应用:数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML;或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类。

在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展,数据库技术在各个方面的快速的发展。特别是关系型数据库已经成为目前数据库产品中最重要的一员,80年代以来, 几乎所有的数据库厂商新出的数据库产品都支持关系型数据库,即使一些非关系数据库产品也几乎都有支持关系数据库的接口。

这主要是传统的关系型数据库可以比较好的解决管理和存储关系型数据的问题。随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理。

同时,分布式技术等新技术的出现也对数据库的技术提出了新的要求,于是越来越多的非关系型数据库就开始出现,这类数据库与传统的关系型数据库在设计和数据结构有了很大的不同, 它们更强调数据库数据的高并发读写和存储大数据。

(2)数据库原理及应用扩展阅读

数据库管理系统主要完成对数据库的操纵与管理功能,实现数据库对象的创建、数据库存储数据的查询、添加、修改与删除操作和数据库的用户管理、权限管理等。它的安全直接关系到整个数据库系统的安全,其防护手段主要有:

(1)使用正版数据库管理系统并及时安装相关补丁。

(2)做好用户账户管理,禁用默认超级管理员账户或者为超级管理员账户设置复杂密码;为应用程序分别分配专用账户进行访问;设置用户登录时间及登录失败次数限制,防止暴力破解用户密码。

(3)分配用户访问权限时,坚持最小权限分配原则,并限制用户只能访问特定数据库,不能同时访问其他数据库。

(4)修改数据库默认访问端口,使用防火墙屏蔽掉对外开放的其他端口,禁止一切外部的端口探测行为。

(5)对数据库内存储的重要数据、敏感数据进行加密存储,防止数据库备份或数据文件被盗而造成数据泄露。

(6)设置好数据库的备份策略,保证数据库被破坏后能迅速恢复。

(7)对数据库内的系统存储过程进行合理管理,禁用掉不必要的存储过程,防止利用存储过程进行数据库探测与攻击。

(8)启用数据库审核功能,对数据库进行全面的事件跟踪和日志记录。

⑶ 数据库原理及应用与数据结构有什么关系

现在数据库一般分为两种:关系型数据库,比如现在常用的oracle,mysql等.再就是非关系型数据库,比较新兴,用的公司比较少,比较提倡面向对象,前段时间google就换了这种.
数据库就是数据的存储,用哪种数据结构存储会有不一样的效果.
两者关系硬要说的话,数据结构比较基础.

⑷ 数据库原理及应用的目录

《数据库原理及应用》
第1章 绪论
1.1 数据管理技术的发展
1.1.1 人工管理阶段
1.1.2 文件系统阶段
1.1.3 数据库管理阶段
1.2 数据库系统结构
1.2.1 三级模式结构
1.2.2 数据库系统的二级独立性
1.2.3 数据库系统的二级映像
1.3 数据库、数据库管理系统和数据库系统
1.3.1 数据库
1.3.2 数据库管理系统
1.3.3 数据库系统
1.4 数据库技术的发展
小结
习题
第2章 数据模型
2.1 数据模型的概念
2.1.1 数据的三个范畴
.2.1.2 数据模型的组成要素及分类
2.2 e-r模型
2.2.1 基本概念
2.2.2 e-r图设计
2.3 面向对象模型
2.3.1 对象建模的基本知识
2.3.2 类图
小结
习题
第3章 关系数据库
3.1 关系数据模型
3.1.1 关系数据模型概述
3.1.2 基本术语
3.1.3 关系的性质
3.2 关系的完整性
3.3 关系代数
3.3.1 传统的集合运算
3.3.2 专门的关系运算
3.3.3 关系代数运算的应用实例
3.3.4 关系代数的扩充操作
小结
习题
第4章 结构化查询语言sql
4.1 sql概述
4.1.1 sql语言的发展
4.1.2 sql语言的特点
4.1.3 sql语言的基本概念
4.2 数据定义语句
4.2.1 基本表的定义
4.2.2 基本表的修改与删除
4.2.3 基本表的删除
4.3 查询
4.3.1 单表查询
4.3.2 连接查询
4.3.3 嵌套查询
4.3.4 集合查询
4.4 数据操纵
4.4.1 插入数据
4.4.2 修改数据
4.4.3 删除数据
4.5 视图
4.5.1 视图的定义与删除
4.5.2 查询视图
4.5.3 更新视图
4.5.4 视图的作用
小结
习题
第5章 存储过程、触发器和数据完整性
5.1 sql server编程结构
5.1.1 变量
5.1.2 显示信息
5.1.3 注释语句
5.1.4 批处理
5.1.5 流程控制语句
5.2 存储过程
5.2.1 存储过程的基本概念
5.2.2 创建存储过程
5.2.3 使用sql server管理控制台执行存储过程
5.2.4 修改和删除存储过程
5.3 触发器
5.3.1 触发器的基本概念
5.3.2 创建触发器
5.3.3 修改和删除触发器
5.4数据库完整性
5.4.1 约束
5.4.2 默认值
5.4.3 规则
5.4.4 用户定义的数据完整性
小结
习题
第6章 关系数据库设计理论
6.1 问题的提出
6.2 基本概念
6.2.1 函数依赖
6.2.2 码
6.3 规范化
6.3.1 第一范式
6.3.2第二范式
6.3.3 第三范式
6.3.4 bc范式
6.3.5 多值依赖与第四范式
6.3.6 关系模式规范化
6.4 函数依赖的公理系统
6.4.1 armstrong公理系统
6.4.2 闭包
6.4.3 函数依赖集的等到价和最小化
6.5 模式分解
6.5.1 模式分解的准则
6.5.2 分解的函数依赖保持性和无损连接性
6.5.3 模式分解的算法
小结
习题
第7章 索引
7.1 索引的概念
7.1.1 聚集索引
7.1.2 非聚集索引
7.1.3 唯一索引
7.1.4 何时应该创建索引
7.1.5 系统如何访问表中的数据
7.2 sql server 2005中的索引
7.2.1 索引的结构
7.2.2 管理索引
小结
习题
第8章 数据库设计
8.1 数据库设计概述
8.2 数据库设计的过程
8.2.1 数据库设计的步骤
8.2.2 需求分析阶段
8.2.3 概念设计阶段
8.2.4 逻辑设计阶段
8.2.5 物理设计阶段
8.2.6 数据库实现阶段
8.2.7 数据库的运行与维护阶段
8.3 数据库设计实例:电网设备抢修物资管理数据库设计
8.3.1 需求分析
8.3.2 概念模型
8.3.3 逻辑模型
小结
习题
第9章 数据库安全
9.1 安全性概述
9.1.1 用户标识与鉴别
9.1.2 存取控制
9.1.3 自主存取控制方法
9.1.4 强制存取控制方法
9.1.5 视图机制
9.1.6 审计
9.1.7 数据加密
9.2 sql server的安全性
9.2.1 sql server 2005的身份验证模式
9.2.2 sql server 2005的安全机制
9.3 用户管理和角色管理
9.3.1 登录用户和数据库用户
9.3.2 用户管理
9.3.3 角色管理
9.3.4 sql server的固定角色
9.4 权限管理
9.4.1 授予权限
9.4.2 收回权限
9.4.3 禁止权限
9.5 架构
小结
习题
第10章 数据库保护
10.1 事务
10.1.1 事务的定义
10.1.2 事务的acid性质
10.1.3 事务的状态
10.2 并发控制
10.2.1 并发操作与数据的不一致性
10.2.2 封锁
10.2.3 并发操作的调度
10.3 数据库的恢复
10.3.1 存储器的结构
10.3.2 恢复的原则和实现方法
10.3.3 故障类型和恢复方法
10.4 sql server数据库备份与恢复
10.4.1 数据库备份方法
10.4.2 数据库恢复
小结
习题
第11章数据库技术新进展
11.1 数据仓库
11.1.1 数据仓库的概念、特点与组成
11.1.2 数据的技术
11.1.3 数据仓库的几个重要概念
11.1.4 数据仓库的结构
11.1.5 数据仓库的多维数据模型
11.1.6 数据仓库系统设计
11.1.7 数据仓库的未来
11.2 数据挖掘
11.2.1 支持数据挖掘的基础
11.2.2 数据挖掘的分析方法
11.2.3 数据挖掘常用的基本技术
11.2.4数据挖掘技术实施的步骤
11.2.5数据挖掘技术发展
11.3 数据库技术的研究及发展
11.3.1 数据库技术的研究热点
11.3.2 数据库技术的发展方向
11.4 结语
小结
习题
附录a sql server 2005的安装及使用
a.1 sql server简介
a.2 sql server 2005的安装
a.3 sql server配置管理器
a.4 启动sql server服务
a.5 使用sql server management studio管理数据库
附录b 实验
实验一 通过sql server management studio创建及管理数据库
实验二 通过sql语句创建与管理数据表
实验三 单表查询
实验四 复杂查询
实验五 视图的创建与使用
实验六 存储过程
实验七 触发器
实验八 实现数据完整性
实验九 索引及数据库安全
参考文献

⑸ 如何学习数据库原理和应用

去找一个WEB项目,自己练练手。然后再看书,可能效果会好一点。

热点内容
php蚂蚁 发布:2024-05-07 13:49:22 浏览:400
phpfpmpid 发布:2024-05-07 13:44:29 浏览:520
linuxtty1 发布:2024-05-07 13:40:10 浏览:864
linuxshell脚本中if 发布:2024-05-07 13:25:01 浏览:221
phpmysql扩展 发布:2024-05-07 13:25:01 浏览:800
星密码开网店怎么样 发布:2024-05-07 13:23:26 浏览:354
安卓手机java模拟器 发布:2024-05-07 12:43:07 浏览:913
c语言java哪个好学 发布:2024-05-07 12:35:16 浏览:335
奥特曼访问 发布:2024-05-07 12:34:38 浏览:894
离线存储本地存储 发布:2024-05-07 12:30:23 浏览:413