1、1 什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性? 答: 数据与程序的物理独立性:当数据库的存储结构发生改变时,由数据库管理员对模式内模式映像作相应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。 数据与程序的逻辑独立性:当模式改变时(如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式模式的映像作相应的改变,可以使外模式保持不变。应用程序依据数据的外模式编写,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。 数据库管理系统在三级模式之
2、间所供的二层映像保证了数据库系统中的据具有较高的逻辑独立性和物理独立性。2 什么是基本表?什么是视图?两者之间的区别和联系是什么? 答:基本表是独立存在的表。在 SQL中,一个关系对应于一个表。 视图是从一个或多个基本表所导出的表。视图本身并不独立存储在数据库中,是一个虚表,即数据库中只存放视图的定义而不存放其所对应的数据,这些数据仍然存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以像使用基本表那样使用视图,可以在视图上再定义视图。3 试述实现数据库安全性控制的常用方法和技术。 答: (1)用户标识和鉴别:由系统供一定的方式,让用户标识自己的名字或身份。每次用户要求进入系统时,由系
3、统进行核对,通过鉴定后系统才能供使用权。 (2)存取控制:通过用户权限定义和合法权限检查确保只有拥有合法权限的用户才能访问数据库,所有未授权人员均无法存取数据。 (3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权限用户隐藏起来,从而自动地对数据供一定程度的安全保护。 (4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来并放入审计日志中。DBA 可以利用审计跟踪信息来重现导致数据库现状的一系列事件,找出非法存取数据的人、时间和内容等。 (5)数据加密:对所存储和传输的数据进行加密处理,从而使得不掌握解密算法的人无法获知数据。 4 理解并解释MAC机制中主体、客体、敏
4、感度标记的含义。 答:主体是系统中的活动实体,既包括 DBMS 所管理的实际用户,也包括代表用户的各个进程。 客体是系统中的被动实体,受到主体操纵,包括文件、基表、索引、视图等。 对于主体和客体,DBMS 为每个实例(值)指派一个敏感度标记((label)。敏感度标记被分成若干级别,例如绝密(top secret)、机密(secret)、可信(confidential)、公开(public)等。主体的敏感度标记称为许可证级别(clearance level),客体的敏感度标记称为密级(classification level). 5 数据库的完整性概念与数据库的安全性概念之间存在什么区别和联系
5、? 答:数据库的完整性和安全性是两个不同的概念,但是它们存在一定的联系。 前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(Garbage In Garbage Out)所造成的无效操作和错误结果。 后者是保护数据库,防止被恶意破坏和非法存取。 也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。6 试述事务的概念及事务的 4 个特性。恢复技术能保证事务的哪些特性? 答:事务是用户所定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务具有 4 个特性:原子性(Atomicity )
6、、一致性(Consistency) 、隔离性Isolation)和持续性(Durability)。这 4 个特性简称为事务的 ACID 特性。 原子性:事务是数据库的逻辑单位,事务中所包括的诸项操作要么都做,要么都不做。 一致性:事务执行的结果必须是使数据库从某个一致性状态转变到另一个一致性状态。 隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及所使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 持续性:持续性也称为永久性(permanence),是指事务一旦交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应对其执行结果产生任何影响。
7、为了保证事务的原子性、一致性与持续性,DBMS 必须对事务故障、系统故障和介质故障进行恢复;为了保证事务的隔离性和一致性,DBMS 需要对并发操作进行控制。 7 数据库转储的意义是什么?试比较各种数据转储方法。 答:数据转储是数据库恢复中所采用的基本技术。所谓转储即 DBA 定期地将数据库复制到磁带或另一个磁盘上保存起来。当数据库遭到破坏后,可以将后备副本重新装入,将数据库恢复到转储时的状态。 静态转储:指在系统中无运行事务时所进行的转储操作,如上图所示。静态转储的实现简单,但必须等待正在运行的用户事务结束后才能进行。同样,新的事务必须等待转储结束后才能运行。显然,这样会降低数据库的可用性。
8、动态转储:指转储期间允许对数据库进行存取或修改。动态转储能够克服静态转储的缺点,无须等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后备副本中的数据并不能保证正确性和有效性。因为转储期间的运行事务可能修改了某些数据,使得后备副本中的数据不是数据库的一致版本。 为此,必须把转储期间各个事务对数据库所做的修改活动记录下来,建立日志文件(logfile)。这样,后备副本加上日志文件就能得到数据库某一时刻的正确状态。 转储还可以分为海量转储和增量转储两种方式。 海量转储是指每次都转储全部数据库。增量转储是指每次只转储上一次转储后被更新的数据。从恢复的角度来看,使用海量转储所得的后备
9、副本进行恢复时更简单一些。但是如果数据库容量很大,事务处理又十分频繁,则增量转储方式更实用、更有效。 8 什么是死锁?试给出预防死锁的办法。 答:如果事务 Tl 封锁了数据 ,事务T2 封锁了数据 R2,然后事务 Tl 又请求封锁数据 R2,因 T2 已封锁了 R2,于是 Tl 等待 T2 释放 R2 上的锁。接着事务 T2又申请封锁 Rl ,因 Tl 已封锁了 Rl ,T2 也只能等待 Tl 释放 Rl 上的锁。这样就出现了 Tl 在等待 T2,而T2又在等待 T1 的局面, T1 和 T2 两个事务永远不能结束,形成死锁。 防止死锁的发生其实是要破坏产生死锁的条件。预防死锁通常可以有两种方法: (1)一次封锁法 要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能执行。 (2)顺序封锁法 预先对数据对象规定一个封锁顺序,所有事务都按照这个顺序实行封锁。但是预防死锁的策略不大适合数据库系统的特点。Welcome ToDownload !欢迎您的下载,资料仅供参考!