关于数据库的基本概念性问题2

关于数据库的基本概念性问题2
2009-06-22 13:28
59.什么是数据库结构的物理设计?试述其具体步骤。
答:数据库结构的物理设计是指对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,所谓数据库的物理结构主要指数据库在物理设备上的存储结构和存取方法。
物理设计的步骤为:(1)设计存储记录结构,包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射;(2)确定数据存储安排;(3)设计访问方法,为存储在物理设备上的数据提供存储和检索的能力;(4)进行完整性和安全性的分析、设计;(5)程序设计。

60. 试叙事务的四个性质,并解释每一个性质对DBS有什么益处?
答:事务的四个性质是:原子性、一致性、隔离性和持久性。
原子性:是保证数据库系统(DBS)完整性的基础。一个事务中所有对数据库的操作是一个不可分割的操作序列。
一致性:一个事务独立执行的结果将保证数据库的一致性,即数据不会因事务的执行而遭受破坏。
隔离性:隔离性要求在并发事务被执行时,系统应保证与这些事务先后单独执行时结果一样,使事务如同在单用户环境下执行一样。
持久性:要求对数据库的全部操作完成后,事务对数据库的所有更新应永久地反映在数据库中。

62 事务的COMMIT操作和ROLLBACK操作各做些什么事情?
答:COMMIT操作表示事务成功地结束(提交),此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都已交付实施。
ROLLBACK操作表示事务不成功地结束,此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的更新必须被撤销,数据库应恢复该事务到初始状态。

63 UNDO操作和REDO操作各做些什么事情?
答:UNDO操作是反向扫描"日志"文件,撤销对数据库的更新操作,使数据库恢复到更新前的状态;REDO操作正向扫描日志文件,重新做一次更新,使数据库恢复到更新后的状态。

64 DBS中有哪些类型的故障?哪些故障破坏了数据库? 哪些故障未破坏数据库,但其中某些数据变得不正确?
答:数据库系统故障有事务故障、系统故障、介质故障。其中介质故障破坏数据库,系统故障未破坏数据库但使其中某些数据变得不正确。

65 什么是“运行记录优先原则”?其作用是什么?
答:在数据库系统中,写一个修改到数据库中和写一个表示这个修改的登记记录到日志文件中是两个不同的操作,为了避免在完成这两个操作时,由于发生故障而破坏数据库的一致性,应先将运行记录写下来,这就是“运行记录优先原则”。

66 什么是数据库的恢复?恢复的基本原则是什么,恢复如何实现?
答:数据库的恢复是指当数据库系统遭到破坏时,通过一些技术,使数据库恢复到遭到破坏前的正确状态。恢复的基本原则就是冗余,即数据的重复存储。恢复的常用方法有:定期对整个数据库进行复制或转储;建立日志文件;恢复。

67 数据库的并发操作会带来哪些问题?如何解决?
答:数据库的并发操作会带来三类问题:丢失更新问题;不一致分析问题和“脏数据”的读出。解决的办法就是采用“封锁”技术。

68 有哪些“丢失更新”问题?如何处理?
答:如两个事务要对某数据进行操作,但是由于并发调度的的原因,使得在一个事务对某数据的更新不能被另一事务所接受,导致更新操作的丢失。处理的办法就是对并发操作采用封锁技术,在一个事务操作时,另一事务进入等待状态直到前一事务解锁。
还有一种丢失更新问题是由事务的ROLLBACK引起 的,如事务T2依赖于事务T1,在T1更新后未提交(COMMIT)而是ROLLBACK(回退),使得T2读取脏数据。处理的办法是使用PXC协议,不 允许事务T1执行解锁操作直到事务执行到终点(COMMIT或提交)。

69 为什么DML只提供解除S封锁的操作,而不提供解除X封锁的操作?
答:在DML中,PX协议并不完善,修正后的PXC协议 规定:X封锁必须保留到事务终点(COMMIT或ROLLBACK),这个协议能防止由恢复引起的更新丢失现象。而多个事务可以对同一数据加上S封锁(读 取但不能修改)因此可以由事务用UNLOCK解除各自对数据的封锁。

70 为什么有些封锁需保留到事务终点,而有些封锁可随时解除?
答:因为有的封锁需要更新数据,保留到终点才能确认是否提交或回退以避免脏数据的读出,所以这些封锁需要保留到事务终点。而有些事务全部或部分操作只是读取数据,那么这一部分操作的封锁可以随时解除,因为它不涉及更新数据操作。

71 死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?
答:死锁的发生即是坏是又是好事,说是坏是是因为它使并发事务不能继续执行下去,造成时间开销却不产生结果。说是好事是因为在某些时候我们要利用它来解决更新操作导致的数据库不一致状态。通过系统的死锁解决机制挑选一个事务作为牺牲品,撤消并恢复到初始状态。

72 试叙述"串行调度"与"可串行化调度"的区别。
答:串行调度是多个事务按照一定的次序依次执行;而可串行化调度是指一个并发调度的结果与某一串行调度执行的结果等价时的并发调度。串行调度在某一时刻只有一个事务在执行,而可串行调度在某一时刻有多个事务同时被处理。

73 什么是数据库的完整性? DBMS的完整性子系统的功能是什么?
答:数据库的完整性是指数据的正确性和相容性。DBMS完整性子系统的功能是:(1)监督事务的执行,并测试是否违反完整性规则;(2)如有违反,则采取恰当的操作,如拒绝、报告违反情况,改正错误等方法进行处理。

74 完整性规则由哪几个部分组成?关系数据库的完整性规则有哪几类?
答:完整性规则由三部分组成:
触发条件:即什么时候使用规则进行检查;
约束条件:即要检查什么样的错误;
ELSE子句:即查出错误后如何处理。
完整性规则有以下三类:
域完整性规则,用于定义属性的取值范围;
域联系的规则,定义一个或多个关系中,属性值间的联系、影响和约束。
关系完整性规则,定义更新操作对数据库中值的影响和限制。

75 试详述SQL中的完整性约束机制。
答:SQL中的完整性约束规则有主键约束、外键约束、属性值约束和全局约束等多种形式。
主键约束。它是数据中最重要的一种约束。在关系中主键值不允许空也不允许出现重复,主键可用主键子句或主键短语进行定义。
外键约束。根据参照完整性规则,依赖关系中外键或者为空值,或者是基本关系(参照关系)中的该键的某个值。外键用外键关系子句定义。
属性值约束。当要求某个属性的值不允许空值时,那么可以在属性定义后加上关键字:NOT NULL ,这是非空值约束。还可以用CHECK子句对一个属性值加以限制以及使用域约束子句CREAT DOMAIN 定义新域并加以属性值检查。
全局约束。在关系定义时,可以说明一些比较复杂的完整性约束,这些约束涉及到多个属性间的联系或不同关系间的联系,称为全局约束。主要有基于元组的检查子句和断言。前者是对单个关系的元组值加以约束,后者则可对多个关系或聚合操作有关的完整性约束进行定义。

76 参照完整性规则在SQL可以用哪几种方式实现?删除基本关系的元组时,依赖关系可以采取的做法有哪三种?修改基本关系的主键值时,依赖关系可以采取的做法有哪三种?
答:参照完整性规则要求"不引用不存在的实体",在SQL中可以采用外键子句定义外键以及在属性值上进行约束如基于属性的检查、以及全局约束中的基于元组的检查子句等方式实现。
删除基本关系元组或修改基本关系的主键值时,依赖关系可以采用的做法有:
RESTRICT方式:只有当依赖关系中没有一个外键值与被删除/修改的基本关系中的主键值相对应时,系统才能执行删除操作,否则拒绝删除或修改。
SET NULL方式:删除/修改基本元组或基本关系的主键值时,将依赖关系中所有与基本关系中被删除/修改主键值相对应的外键值置为空值。
CASCADE方式:若删除则将依赖关系中所有外键值与基本关系中要删除的主键值相对应的元组一并删除,若修改则将依赖关系中所有与基本关系中要修改的主键值相对应的外键值一并修改为新值。

77 试对SQL2中的基于属性的检查约束、基于元组的检查约束和断言三种完整性约束进行比较:各说明什么对象?何时激活?能保证数据库的一致性吗?
答:如下表:
约束形式
说明对象
激活条件
是否保证一致性
基于属性的检查
只对一个属性值加以约束
插入或修改属性值时
不一定
基于元组的检查
对单个关系的元组值加以约束
在插入或修改元组时
不一定
断言
多个关系或聚合操作
任何变动
保证

78 设教学数据库的模式如下:
  • S(S#,SNAME,AGE,SEX)
       SC(S#,C#,GRADE)
       C(C#,CNAME,TEACHER)
试用多种方式定义下列完整性约束:
  • (1)在关系S中插入学生年龄值应在16~25岁之间
  • (2)在关系SC中插入元组时,其S#值和C#值必须分别在S和C中出现。
  • (3)在关系SC中修改GRADE值时,必须仍在0~100之间。
  • (4)在删除关系C中一个元组时,首先要把关系SC中具有同样C#的元组全部删去。
  • (5)在关系S中把某个S#值修改为新值时,必须同时把关系SC中那些同样的S#值也修改为新值。
答:(1)定义S时采用检查子句:
CREAT TABLE S(
   S# CHAR(4),
   SNAME char (10) NOT NULL ,
   AGE SMALLINT ,
   primary key(S#)
   CHECK (AGE>=16 and AGE<=25))
(2)采用外键子句约束
CREAT TABLE SC(
   S# CHAR(4),
   C# CHAR(4),
   GRADE SMALLINT,
   FOREIGN key(S#) REFERENCE S(S#)
   FOREIGN key(C#) REFERENCE C(C#)
(3)采用元组检查
CREAT TABLE SC(
   S# CHAR(4),
   C# CHAR(4),
   GRADE SMALLINT,
   FOREIGN key(S#) REFERENCE S(S#)
   FOREIGN key(C#) REFERENCE C(C#)
   CHECK (GRADE>=0 and AGE<=100))
(4)采用外键约束
CREAT TABLE SC(
   S# CHAR(4),
   C# CHAR(4),
   GRADE SMALLINT,
   FOREIGN key(S#) REFERENCE S(S#),
   FOREIGN key(C#) REFERENCE C(C#)
   )
   注,在 ON DELETE 短语缺省的时候表示 RESTRICT 方式。
(5)采用外键约束
CREAT TABLE SC(
   S# CHAR(4),
   C# CHAR(4),
   GRADE SMALLINT,
  
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值