文档库 最新最全的文档下载
当前位置:文档库 › 数据库十章作业答案

数据库十章作业答案

数据库十章作业答案
数据库十章作业答案

1.试述事务的概念及事务的4 个特性。

答:

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

2 .为什么事务非正常结束时会影响数据库数据的正确性,请列举一例说明之。

答:

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。例如某工厂的库存管理系统中,要把数量为Q 的某种零件从仓库1

移到仓库2 存放。则可以定义一个事务T , T 包括两个操作;Ql = Ql 一Q , Q2= Q2 + Q。如果T 非正常终止时只做了第一个操作,则数据库就处于不一致性状态,库存量无缘无故少了Q 。

3 .数据库中为什么要有恢复子系统?它的功能是什么?

答:

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

4 .数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?

答:

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

5 .数据库恢复的基本技术有哪些?

答:

数据转储和登录日志文件是数据库恢复的基本技术。当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据

库恢复到故障前的某个一致性状态。

6 .数据库转储的意义是什么?试比较各种数据转储方法。

答:

数据转储是数据库恢复中采用的基本技术。所谓转储即DBA 定期地将数据库复制到磁带或另一个磁盘上保存起来的过程。当数据库遭到破坏后可以将后备副本重新装入,将数据库恢复到转储时的状态。

静态转储:在系统中无运行事务时进行的转储操作,如上图所示。静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件( 109 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 事务重新执行日志文件登记的操作。即将日志记录中“更新后的值”Afte , Image )写入数据库。

介质故障的恢复:介质故障是最严重的一种故障。恢复方法是重装数据库,然后重做已完成的事务。具体过程是:

( 1 ) DBA 装入最新的数据库后备副本(离故障发生时刻最近的转储副本), 使数据库恢复到转储时的一致性状态;( 2 ) DBA 装入转储结束时刻的日志文件副本;( 3 ) DBA 启动系统恢复命令,由DBMS 完成恢复功能,即重做已完成的事务。

10 .什么是检查点记录?检查点记录包括哪些内容?

答:检查点记录是一类新的日志记录。它的内容包括:①建立检

查点时刻所有正在执行的事务清单

②这些事务的最近一个日志记录的地址。

11 .具有检查点的恢复技术有什么优点?试举一个具体的例子加以说明。答

答:

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

在采用检查点技术之前,恢复时需要从头扫描日志文件,而利用检查点技术只需要从T 。开始扫描日志,这就缩短了扫描日志的时间。事务Tl 的更新操作实际上已经写到数据库中了,进行恢复时没有必要再REDO 处理,采用检查点技术做到了这一点。

12 .试述使用检查点方法进行恢复的步骤。

答:

(1)从重新开始文件(见第11 题的图)中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。(2)由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE 一LIST 。这里建立两个事务队列:1 ) UNDO 一LIST :需要执行undo 操作的事务集合;2 ) REDO 一LIST :需

要执行redo 操作的事务集合。把ACTIVE 一LIST 暂时放入UNDO 一LIST 队列,REDO 队列暂为空。

3 )从检查点开始正向扫描日志文件:①如有新开始的事务T * ,把T *暂时放入uNDO 一LlsT 队列;②如有提交的事务毛,把毛从UNDO 一LIST 队列移到REDO 一LIST 队列,直到日志文件结束;

4 )对UNDO 一LIST 中的每个事务执行UNDO 操作,对REDO 一LIST 中的每个事务执行REDO 操作。

13 .什么是数据库镜像?它有什么用途?

答:

数据库镜像即根据DBA 的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS 自动把更新后的数据复制过去,即DBMS 自动保证镜像数据与主数据的一致性。数据库镜像的用途有:一是用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS 自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。

二是提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。

在数据库中为什么要并发控制?

答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。

若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。

2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?

答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。( l )丢失修改(lost update ) 两个事务Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl 提交的结果,导致Tl 的修改被丢失。( 2 )不可重复读(Non 一Repeatable Read ) 不可重复读是指事务Tl 读取数据后,事务几执行更新操作,使Tl 无法再现前一次读取结果。( 3 )读“脏”数据(Dirty Read ) 读“脏’夕数据是指事务Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl 由于某种原因被撤销,这时Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。

答:封锁就是事务T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T 就对该数据对象有了一定的控制,在事务T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。

基本的封锁类型有两种:排它锁(Exclusive Locks ,简称x 锁)和

共享锁( Share Locks,简称S 锁)。排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A ,其他任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。这就保证了其他事务在T 释放A 上的锁之前不能再读取和修改 A 。共享锁又称为读锁。若事务T 对数据对象 A 加上S 锁,则事务T 可以读A但不能修改A ,其他事务只能再对A 加S 锁,而不能加X 锁,直到T 释放 A 上的S 锁。这就保证了其他事务可以读 A ,但在T 释放A 上的S 锁之前不能对A 做任何修改。

4 .如何用封锁机制保证数据的一致性?

答:DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务Tl 在对 A 进行修改之前先对 A 执行xock ( A ) ,即对A 加x 锁。这样,当几请求对A 加x 锁时就被拒绝,几只能等待Tl 释放A 上的锁后才能获得对A 的x 锁,这时它读到的 A 是Tl 更新后的值,再按此新的 A 值进行运算。这样就不会丢失Tl 的更新。

DBMS 按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读“脏’夕数据等数据不一致性。

5 .什么是活锁?什么是死锁?

答:

如果事务Tl 封锁了数据R ,事务几又请求封锁R ,于是几等待。几也请求封锁R ,当Tl 释放了R 上的封锁之后系统首先批准了

几的请求,几仍然等待。然后几又请求封锁R ,当几释放了R 上的封锁之后系统又批准了几的请求… … 几有可能永远等待,这就是活锁的情形。活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。如果事务Tl 封锁了数据Rl ,几封锁了数据凡,然后Tl 又请求封锁几,因几已封锁了几,于是Tl 等待几释放几上的锁。接着几又申请封锁Rl ,因Tl 已封锁了Rl ,几也只能等待Tl 释放Rl 上的锁。这样就出现了Tl 在等待几,而几又在等待T }的局面,T }和几两个事务永远不能结束,形成死锁。

6 .试述活锁的产生原因和解决方法。

答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

11 .请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?答:数据库系统一般采用允许死锁发生,DBMS 检测到死锁后加以解除的方法。DBMS 中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。DBMS 并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个

处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。

12 .什么样的并发调度是正确的调度?

答:可串行化(Serializable )的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。

9 .设Tl ,几,几是如下的3 个事务:

Tl :A : = A + 2 ;

T2:A : = A * 2 ;

T3:A : = A **2 ; ( A <-A*A)

设A 的初值为0 。

( l )若这3 个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。

答:A 的最终结果可能有 2 、 4 、8 、16 。因为串行执行次序有Tl T2T3、Tl T3T2、T2T1T3、T2T3Tl 、T3T1T2、T3T2 Tl 。对应的执行结果是16 、8 · 4 · 2 · 4 · 2 。

( 2 )请给出一个可串行化的调度,并给出执行结果

答:

最后结果A 为16 ,是可串行化的调度。

( 3 )请给出一个非串行化的调度,并给出执行结果。

答:

最后结果A 为0 ,为非串行化的调度。

( 4 )若这3 个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。

答:

( 5 )若这3 个事务都遵守两段锁协议,请给出一个产生死锁的调度。答:

11.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。

证明:首先以两个并发事务Tl 和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:

( l )事务Tl 写某个数据对象A ,T2读或写A ;

( 2 )事务Tl 读或写某个数据对象A ,T2写A 。

下面称A 为潜在冲突对象。

设Tl 和T2访问的潜在冲突的公共对象为{A1,A2 … ,An }。不失一般性,假设这组潜在冲突对象中X =(A 1 , A2 ,… ,Ai }均符合情况1 。Y ={A i + 1 ,… ,An }符合所情况(2 )。VX ∈x , Tl 需要XlockX ①

T2 需要Slockx 或Xlockx ②

1 )如果操作①先执行,则Tl 获得锁,T2等待

由于遵守两段锁协议,Tl 在成功获得x 和Y 中全部对象及非潜在

冲突对象的锁后,才会释放锁。

这时如果存在w ∈x 或Y ,T2已获得w 的锁,则出现死锁;否则,Tl 在对x 、Y 中对象全部处理完毕后,T2才能执行。这相当于按Tl 、T2的顺序串行执行,根据可串行化定义,Tl 和几的调度是可串行化的。

2 )操作②先执行的情况与(l )对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。证毕。

12 .举例说明,对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段锁协议。

答:

13 .为什么要引进意向锁?意向锁的含义是什么?

答:引进意向锁是为了提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁― 显式封锁和隐式封锁。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突,显然,这样的检查方法效率很低。为此引进了意向锁。意向锁的含义是:对任一结点加锁时,必须先对它的上层结点加意向锁。例如事务T 要对某个元组加X 锁,则首先要对关系和数据库加ix 锁。换言之,对关系和数据库加ix 锁,表示它的后裔结点― 某个元组拟(意向)加X 锁。引进意向锁后,

系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。例如,事务T 要对关系R 加X 锁时,系统只要检查根结点数据库和R 本身是否已加了不相容的锁(如发现已经加了ix ,则与X 冲突),而不再需要搜索和检查R 中的每一个元组是否加了X 锁或S 锁。

14 .试述常用的意向锁:IS 锁、ix 锁、SIX 锁,给出这些锁的相容矩阵。

答:IS锁:如果对一个数据对象加IS 锁,表示它的后裔结点拟(意向)加S 锁。例如,要对某个元组加S 锁,则要首先对关系和数据库加IS 锁

IX 锁:如果对一个数据对象加ix 锁,表示它的后裔结点拟(意向功口X 锁。例如,要对某个元组加X 锁,则要首先对关系和数据库加ix 锁。

SIX 锁:如果对一个数据对象加SIX 锁,表示对它加S 锁,再加IX 锁,即SIX = S + IX 。

相容矩阵:

15 .理解并解释下列术语的含义:封锁、活锁、死锁、排它锁、共享锁、并发事务的调度、可串行化的调度、两段锁协议。

答:(略,已经在上面有关习题中解答)

16 .试述你了解的某一个实际的DBMS 产品的并发控制机制。答:(略,参见简单介绍了有关Oracle 的并发控制机制。)

第10章 面向对象设计

第10章面向对象设计 10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析? 在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。 10.2 消除包之间循环依赖性的方法是什么? 本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下: 在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。 10.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。 软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。 在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。 在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。 选择你熟悉的编程语言说明怎样定义一个构件。(略) 10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么? 典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

数据库整理

命令行进入SQLCMD: sqlcmd –s machineName\instanceName 使用数据库: USE db_name GO 删除数据库:(不能删除系统数据库) USE tempdb GO SELECT name,state_desc FROM sys.databases WHERE name=’db_name’ GO DROP DATABASE db_name1,db_name2,… GO 更改数据库文件 ALTER DATABASE db_name {ADD FILE-- 指定要添加的文件 |ADD LOG FILE-- 指定要添加的日志文件| REMOVE FILE logical_file_name -- 指定要删除的数据文件名| MODIFY FILE-- 指定要更改的文件 | MODIFY NAME= new_dbname -- 重命名数据库 } 修改数据库属性: ALTER DATABASE db_name SET ANSI_NULL_DEFAULT ON 更名: USE tempdb GO ALTER DATABASE db_name SET SINGLE_USER ALTER DATABASE db_test MODIFY NAME=db_new_name ALTER DATABASE db_new_name SET MULTI_USER 更改数据库文件组: ALTER DATABASE db_name ADD FILEGROUP filegroup_name [CONTAINS FILESTREAM] |REMOVE FILEGROUP filegroup_nam--(要先删除组中的文件)|[MODIFY FILEGROUP filegroup_name {|DEFAULT|NAME=new_filegroup_name}] 注意:要更改为默认文件组,文件组中至少要包含一个文件。 分离

SQL第6周数据库上机作业答案

第二次(第6周)上机作业 一、用T-SQL语句在E:\DATA\文件夹中创建一个教师信息数据库teacher,该数据库包含:(界面方式也要会) 1、一个主数据文件逻辑名‘teacherdata1 ’, 物理名‘E:\DATA\tdata1.mdf ’, 初始容量1MB,最大容量10MB,每次增长量为15%。 2、一个辅助数据文件逻辑名‘teacherdata2 ’ 物理名‘E:\DATA\tdata2.ndf ’, 初始容量2MB,最大容量15MB,每次增长量为2MB。 3、两个数据文件不单独创建文件组,即使用默认的PRIMARY组; 4、一个事务日志文件逻辑名‘teacherlog’物理名‘E:\DATA\teacherlog.ldf ’,初始容量500KB,最大容量不受限制,每次增长量为500KB。 先确认E:\DATA\文件夹已创建, CREATE DATABASE teacher ON PRIMARY ( NAME = teacherdata1 , FILENAME = 'E:\DATA\tdata1.mdf' , SIZE =5MB , MAXSIZE= 10 , FILEGROWTH = 15% ) , ( NAME = teacherdata2 , FILENAME = 'E:\DATA\tdata2.ndf' , SIZE = 2 , MAXSIZE= 15 , FILEGROWTH = 2MB ) LOG ON /* 创建事务日志文件*/ ( NAME = teacherlog , FILENAME = 'E:\DATA\teacherlog.LDF', SIZE = 500 KB ,/* 初始容量,KB单位不能省略*/ MAXSIZE = UNLIMITED ,/* 日志文件最大容量不受限制*/ FILEGROWTH = 500 KB/* 增长量KB 不能省略*/ ) 二、修改数据库“teacher”,增加两个文件组,文件组名:Gteacher1和Gteacher2。ALTER DATABASE teacher Add filegroup Gteacher1 ALTER DATABASE teacher Add filegroup Gteacher2 三、增加一个辅助数据文件,文件逻辑名teacherdata3,物理名为:E:\data\ teacherdata3.ndf’,初始大小为20MB,最大100MB,增量10MB,归属于文件组“Gteacher1”。 Alter database teacher Add file

数据库作业题目及答案

实验三内容补充 在“教学管理系统”中设计了许多查询,上述只介绍其中具有代表性的部分,其余查询读者可依例完成。本系统包括的所有查询如下所示: 说明:同学们在进行后面的表单设计时,需要用到没有设计过的查询,则再进行对应的查询设计,没有设计到的可以不做。 1.90 以上学生信息 2.按班查不及格学生 3.按班级编号查看学生基本信息 4.按班级查教师信息 5.按班级查选课 6.按教师编号查 7.按教师姓名查看授课信息 8.按课程类别查 9.按课程名查 10.按上课地点查 11.按所选课程查 12.按系名查 13.按姓名查看学生基本信息 14.按学分查 15.按学号查看学生基本信息 16.按学号查选课 17.按职称查 18.不及格人次 19.不及格学生信息 20.低于所在班平均分学生 21.各班学生人数统计 22.各系教师人数 23.各职称教师人数 24.教师基本信息表查询 25.教师每周学时总数 26.每班不及格人次 27.每班每门课平均成绩 28.每班男女生人数 29.每班平均成绩 30.每班平均分 31.每名学生平均成绩 32.某学年某学期教师每周学时总数 33.某学期某课不及格信息 34.统计各系教师的人数 35.统计各职称教师的人数 36.统计每门课教师的人数 37.统计有课教师的人数 38.学生相关信息查询 39.学生选课情况 40.有课教师的人数

实验四数据登录窗体设计一 4.1数据登录窗体的向导创建 在Access中创建窗体有人工方式创建和使用窗体向导创建两种方法。人工方式创建窗体,需要创建窗体的每一个控件,并建立控件和数据源之间的联系。而使用窗体向导创建窗体,用户只需按照向导的提示输入有关信息,一步一步地完成。创建过程既简单、快捷,又效率高,因此,在设计Access数据库应用系统时,往往是先使用窗体向导建立窗体的基本轮廓,然后再切换到设计视图使用人工方式进行调整。我们在创建“登录教师档案”窗体时采用的就是这种方法。 利用窗体向导创建“登录教师档案”,窗体的步骤如下: ①双击“窗体”对象中“使用向导创建窗体”选项,启动“窗体向导”如图2-1所示。 图2-1“窗体向导”第一个窗口 ②单击“表/查询”下拉列表框右侧的箭头,列出所有有效的表或者查询数据源,从中选择“表:教师档案表”。 ③在“可用字段”列表框中选择需要在新建窗体中显示的字段,此处,单击按钮选择所有字段。 ④单击“下一步”按钮,弹出如图2-2所示的窗口。在此对话框中,选择“纵栏表”项,这时可以在左边看到所建窗体的布局。

华师在线数据库应用作业及答案

作业 1.第1题 使用( )身份验证方式需要客户端应用程序连接时提供登录时需要的用户标识和密码。 A.Windows身份验证 B.SQL Server 身份验证 C.以超级用户身份登录时 D.其他方式登录时 您的答案:B 2.第2题 表达式'123’+'456’的值是()。 A.123456 B.579 C.'123456’ D.'123456” 您的答案:B

3.第3题 将多个查询结果返回一个结果集合的运算符是( )。 A.JOIN B.UNION C.INTO D.LIKE 您的答案:B 4.第4题 使用T-SQL创建视图时,不能使用的关键字是:( )。 A.ORDER BY B.WHERE https://www.wendangku.net/doc/918488886.html,PUTE D.WITH CHECK OPTION 您的答案:C 5.第5题 系统存储过程在系统安装时就已创建,这些存储过程存放在( )系统数据库中。 A.master

B.tempdb C.model D.msdb 您的答案:A 6.第6题 下面哪种文件无法与SQL Server数据库进行导入和导出操作()。 A.文本文件 B.EXCEL文件 C.Word文件 D.Access文件 您的答案:C 7.第7题 数据库逻辑结构设计阶段的主要功能是:( )。 A.明确用户需求,确定新系统的功能 B.建立数据库的E-R模型 C.将数据库的E-R模型转换为关系模型 D.选择合适的存储结构和存储路径

您的答案:C 8.第8题 在数据库设计过程使用( )可以很好的描述数据处理系统中信息的变换和传递过程。 A.数据流图 B.数据字典 C.E-R图 D.系统流程图 您的答案:A 9.第9题 下列SQL语句中,能够实现参照完整性控制的语句是:( )。 A.FOREIGN KEY B.PRIMARY KEY C.REFERENCES D.FOREIGNKEY和REFERENCES 您的答案:D 10.第10题 T-SQL中的全局变量以( )作前缀。

北大数据库原理上机考题练习及参考答案 练习二(商品、顾客、购买)

题目: 现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成:商品(商品号,商品名,单价,商品类别,供应商); 顾客(顾客号,姓名,住址); 购买(顾客号,商品号,购买数量); 试用SQL语言完成下列功能: 1 建表,在定义中要求声明: (1)每个表的主外码; (2)顾客的姓名和商品名不能为空值; (3)单价必须大于0,购买数量必须再0到20之间; 2 往表中插入数据: 商品(M01,佳洁士,8.00,牙膏,宝洁; M02,高露洁,6.50,牙膏,高露洁; M03,洁诺,5.00,牙膏,联合利华; M04,舒肤佳,3.00,香皂,宝洁; M05,夏士莲,5.00,香皂,联合利华; M06,雕牌,2.50,洗衣粉,纳爱斯 M07,中华,3.50,牙膏,联合利华; M08,汰渍,3.00,洗衣粉,宝洁; M09,碧浪,4.00,洗衣粉,宝洁;) 顾客(C01,Dennis,海淀; C02,John,朝阳; C03,Tom,东城; C04,Jenny,东城; C05,Rick,西城;) 购买 (C01,M01,3;C01,M05,2; C01,M08,2;C02,M02,5; C02,M06,4;C03,M01,1; C03,M05,1;C03,M06,3; C03,M08,1;C04,M03,7; C04,M04,3;C05,M06,2; C05,M07,8;) 商品有9 条,顾客有5条, 购买有5条

3 用SQL语句完成下列查询: (1)求购买了供应商"宝洁"产品的所有顾客; (2)求购买的商品包括了顾客"Dennis"所购买商品的顾客(姓名);(3)求牙膏卖出数量最多的供应商。 4 将所有的牙膏商品单价增加10%。 5 删除从未被购买的商品记录。 参考答案: create table product ( productno char(10) not null, productname char(15) not null, price float(15), sort char(10), supplier char(20), primary key (productno), check (price > 0) ) create table customer ( customerno char(10) not null, customername char(15) not null, address char(10), primary key (customerno) ) create table buy ( customerno char(10) not null, productno char(10) not null, num smallint, primary key (customerno,productno), foreign key (customerno) references customer (customerno), foreign key (productno) references product (productno), check (num between 0 and 20) )

数据库作业答案

实验六 1、查询所有数学系学生的信息。 --select * from s where 系='数学系' 2、查询李老师所教的课程号、课程名 --select 课程号,课程名from c where 教师like '李%' 3、查询年龄大于20岁的女同学的学号和姓名。 --select 学号,姓名from s where year(getdate())-year(出生日期)>20 and 性别='女' 4、查询学号为‘H0301’所选修的全部课程成绩。 --select 成绩from sc where 学号= 'H0301' 5、查询平均成绩都在80分以上的学生学号及平均成绩。 --select 学号,AVG(成绩) from sc group by 学号having AVG(成绩)>80 6、查询至少有6人选修的课程号。 --select 课程号from sc group by 课程号having count(*)>=6 7、查询C02号课程得最高分的学生的学号 --select 学号from sc where 课程号='c02' and 成绩=(select max(成绩) from sc where 课程号='c02') 8、查询学号为’J0101’的学生选修的课程号和课程名 --select 课程号,课程名from c,sc where 学号='j0101' and c.课程号=sc.课程号 9、‘李小波’所选修的全部课程名称。 --select c.课程名from s,c,sc where s.学号=sc.学号and c.课程号=sc.课程号and 姓名='李小波' 10、所有成绩都在70分以上的学生姓名及所在系。 --select 姓名,系from s,sc where s.学号=sc.学号group by 姓名, 系having min(成绩)>=70 11、英语成绩比数学成绩好的学生 select sc2.学号 from c c1,c c2,sc sc1,sc sc2 where c1.课程名='英语' and c2.课程名='数学' and sc1.成绩>sc2.成绩 and sc1.学号=sc2.学号and c1.课程号=sc1.课程号and c2.课程号=sc2.课程号 或: Select sc1.学号from sc sc1, sc sc2 where sc1.学号=sc2.学号 And (sc1.课程号in (select 课程号from c where 课程名= ‘英语’))

数据库基础知识 答案版

数据库基础知识 (A)1.数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)三者之间的关系是()。 A)DBS包括DB和DBMS B)DBMS包括DB和DBS C)DB包括DBS和DBMS D)DBS就是DB,也就是DBMS (C)2.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。 A)DB包含DBS和DBMS B)DBMS包含DB和DBS C)DBS包含DB和DBMS D)没有任何关系 (B)3.DBMS的含义是:()。 A)数据库系统 B)数据库管理系统 C)数据库管理员 D)数据库(A)4.英文缩写DBMS代表含义是()。 A)数据库管理系统 B)数据库定义语言 C)Visual FoxPro D)数据库操作语言(A)5.数据库系统中对数据库进行管理的核心软件是()。 A)DBMS B)DB C)OS D)DBS (C)6.数据库系统的核心是()。 A)数据库 B)操作系统 C)数据库管理系统 D)文件 (B)7.VFP支持的数据模型是()。 A)层次数据模型 B)关系数据模型 C)网状数据模型 D)树状数据模型(A)8.Visual FoxPro 6.0支持的数据模型是()。 A)关系数据库模型 B)网状数据库模型 C)线性数据库模型 D)层次数据库模型(D)9.用数据二维表来表示实体及实体之间联系的数据模型称为()。 A)实体–联系模型 B)层次模型 C)网状模型 D)关系模型 (C)10.Visual FoxPro 6.0是一种关系型数据库管理系统,所谓关系是指()。 A)各条记录中的数据彼此有一定的关系 B)一个数据库文件与另一个数据库文件之间有一定的关系 C)数据模型符合满足一定条件的二维表格式 D)数据库中各个字段之间彼此有一定的关系 (C)11.关系型数据库管理系统的关系是指()。 A)各条记录中的数据彼此有一定的关系 B)一个数据库文件与另一个数据库文件之间有一定的关系 C)数据模型符合满足一定条件的二维表格式 D)数据库中各个字段之间彼此有一定的关系 (B)12.扩展名为.dbf的文件是()。 A)表单文件 B)表文件 C)数据库文件 D)项目文件 (C)13.在下面的数据类型中默认为.F.的是()。 A)数值型 B)字符型 C)逻辑型 D)日期型 (B)14.在Visual FoxPro中,存储图象的字段类型应该是()。 A)备注型 B)通用型 C)字符型 D)双精度型 (C)15.在VFP中,具有固定字段长度的字段类型包括()。 A)日期型、备注型和数值型 B)字符型、逻辑型和备注型 C)日期型、逻辑型和备注型 D)日期型、逻辑型和字符型 (D)16.已知一个字段的宽度为8,则此字段的类型不.可能是()。 A)数值型 B)日期型 C)字符型 D)备注型 (A)17.假设表文件TEST.DBF已经打开,要修改其结构,可使用的命令()。 A)MODI STRU B)MODI COMM TEST C)MODI DBF D)MODI TYPE TEST (B)18.MODIFY STRUCTURE命令的功能是:()。 A)修改记录值 B)修改表结构 C)修改数据库结构 D)修改数据库或表结构

对象关系模型数据库解析

面向对象数据库系统(Object Oriented Data Base System,简称OODBS)是数据库技术与面向对象程序设计方法相结合的产物。 对于OO数据模型和面向对象数据库系统的研究主要体现在:研究以关系数据库和SQL为基础的扩展关系模型;以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型;建立新的面向对象数据库系统,支持OO数据模型。 面向对象程序设计方法是一种支持模块化设计和软件重用的实际可行的编程方法。它把程序设计的主要活动集中在建立对象和对象之间的联系(或通信)上,从而完成所需要的计算。一个面向对象的程序就是相互联系(或通信)的对象集合。面向对象程序设计的基本思想是封装和可扩展性。 面向对象数据库系统支持面向对象数据模型(以下简称OO模型)。即面向对象数据库系统是一个持久的、可共享的对象库的存储和管理者;而一个对象库是由一个OO模型所定义的对象的集合体。 一个OO模型是用面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型。一系列面向对象核心概念构成了OO模型的基础。概括起来,OO模型的核心概念有如下一些: (1)对象(Object)与对象标识OID(Object IDentifier) 现实世界的任一实体都被统一地模型化为一个对象,每个对象有一个唯一的标识,称为对象标识(OID)。 (2)封装(Encapsulation) 每一个对象是其状态与行为的封装,其中状态是该对象一系列属性(Attribute)值的集合,而行为是在对象状态上操作的集合,操作也称为方法(Method)。 (3)类(C1ass) 共享同样属性和方法集的所有对象构成了一个对象类(简称类),一个对象是某一类的一个实例(instance)。 (4)类层次(结构) 在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类Cl 称为类C2的超类(或父类)。子类(如C2)还可以再定义子类(如C3)。这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。 (5)消息(Message) 由于对象是封装的,对象与外部的通信一般只能通过显式的消息传递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内部执行所要求的操作,操作的结果仍以消息的形式返回。 OODB语言用于描述面向对象数据库模式,说明并操纵类定义与对象实例。OODB语言主要包括对象定义语言(ODL)和对象操纵语言(OML),对象操纵语言中一个重要子集是对象查询语言(OQL)。OODB语言一般应具备下述功能: (1)类的定义与操纵 面向对象数据库语言可以操纵类,包括定义、生成、存取、修改与撤销类。其中类的定义包括定义类的属性、操作特征、继承性与约束等。 (2)操作/方法的定义 面向对象数据库语言可用于对象操作/方法的定义与实现。在操作实现中,语言的命令

数据库上机答案

数据库上机1 1、新建工厂数据库factory。 create database factory on( name=factory_data, filename='d:\factory.mdf') log on(name=factory_log, filename='d:\factory.ldf') 2、数据库factory包括职工表worker、部门表depart和职工工资表salary。用SQL语句建立这三个表并输入数据,其表结构及用例数据分别如下: 职工表结构为: 职工号:int; 姓名:char(8) ; 性别:char(2) ; 出生日期:datetime; 党员否:char(2) ; 参加工作:datetime; 部门号:int; 其中职工号为主码。 部门表结构为:

部门号:int; 部门名:char(10); 其中部门号为主码。 职工工资表结构为: 职工号:int; 日期:datetime; 工资:decimal(6,1) ; 其中职工号和日期为主码。

create table worker ( 职工号int primary key, 姓名char(8) , 性别char(2), 出生日期datetime, 党员否char(2), 参加工作datetime, 部门号int ) create table depart ( 部门号int primary key, 部门名char(10)

) create table salary ( 职工号int, 日期datetime, 工资decimal(6,1), Primary key(职工号,日期) ) 3. 显示部门的详细信息。 select * from depart 4.查询3号职工的工资单。 select * from salary where职工号=3 5.显示所有职工的姓名及年龄,并按姓名升序显示。 select 姓名, 2015-year(出生日期) '年龄' from worker order by姓名6. 求出各部门的部门号及党员人数。 select 部门号,count(党员否) '党员人数' from worker where 党员否='是' group by 部门号 7. 在worker表的“姓名”列创建唯一索引nameindex。 create unique index nameindex on worker (姓名) 数据库上机2 1. 查询12月份过生日的名单。 答:select 姓名from worker where month(出生日期)= 12 2. 查询所有姓刘的职工信息。 select * from worker where 姓名like ‘刘%’ 3. 显示所有职工的职工号和2011年2月份的工资数。 select 职工号,工资from salary where year(日期)=2011 and month(日期)=2 4. 查询1号部门所有职工的姓名和工资,并按工资降序排列。

数据库作业答案

班级:自动化3班姓名:方超

数据库作业解答: 第二章 1、指明下列实体间联系的种类: (1)教研室和教师(假设一个教师只属于一个教研室,一个教研室可有多名教师)。 答:一对多 (2)商店和顾客。 答:多对多 2、指出下列关系模式的主码: (1)考试情况(课程名,考试性质,考试日期,考试地点)。假设一门课程在不同的日期可以有多次考试,但在同一天只能考一次。多门不同的课程可以同时进行考试。 答:课程名、考试日期 (2)教师授课(教师号,课程号,授课时数,学年,学期)。假设一名教师在同一学年和

学期可以讲授多门课程,也可以在不同学年和学期多次讲授同一门课程,对每门课程的讲授都有一个授课时数。 答:课程号、学年、学期 (3)图书借阅(书号,读者号,借书日期,还书日期)。假设一个读者可以在不同的日期多次借阅同一本书,一个读者可以同时借阅多本不同的图书,一本书可以在不同的时间借给不同的读者。但一个读者不能在同一天对同一本书借阅多次。 答:书号、读者号、借书日期 第三章 1、数据完整性的含义是什么? 答:数据的完整性是为了防止数据库中存在不符合应用语义的数据,为了维护数据的完整性,数据库管理系统提供了一种机制来检查数据库中的数据,看其是否满足语义规定的条件。这些加在数据库数据之上的语义约束条件就是数据完整性约束条件。 2、在对数据进行什么操作时,系统检查Default约束?进行什么操作时,检查Check约束? 答:插入操作且省略了某些列的值时检查DEFAULT约束。插入和修改操作检查CHECK 约束。 3、UNIQUE约束的作用是什么? 答:限制列的取值不重复。 第六章

数据库上机实验(有答案)

数据库上机实验内容及要求(第二部分) 1.建立工厂管理数据库 工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息: (1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话; (2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种; (3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产; (4)一个车间制造多种零件,一种零件也可能为多个车间制造。零件有零件号、重量和价格; (5)一种产品可由多种零件组成,一种零件也可以装配出多种产品; (6)产品和零件均存入仓库; (7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。 根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。 ◆分析实体及联系,设计E-R图。 ◆将E-R图转换成关系模式,并规范化到3NF。 ◆在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主 码,外码,索引,约束等)。 ◆测试数据入库 2.基于“查询分析器”,完成并保存下述题目的SQL脚本 (1)建立“工种”是“钳工”的所有职工详细信息的视图; create view View_工人_钳工 as select* from职工表 where工种='钳工' with check option (2)建立“车间号”是“CJ01”的钳工详细信息的视图; create view View_钳工_CJ01 as select* from View_工人_钳工 where车间号='CJ01' (3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图; create view View_产品_零件LJ0002 as select产品表.产品号,价格,车间号,仓库号 from装配表,产品表 where装配表.产品号=产品表.产品号and零件号='LJ0002'(4)对零件表按照“零件号”建立唯一索引; create unique index Index_U_零件号on零件表(零件号) (5)对职工表按照“性别”建立聚簇索引; create clustered index Index_C_性别on职工表(性别) (6)查询使用了“零件号”是“LJ0002”的产品的生产车间号;

数据库课后题答案 第6章 管理数据库其他对象

第6章管理数据库其他对象 本章要点: 1、视图及视图与表的关系 2、视图的创建、管理和操作 3、规则、默认值的概念及创建、捆绑、修改和删除 4、自定义数据类型的创建、修改、删除和查看 5、触发器的概念、作用及两种触发器的工作原理和执行过程 6、触发器的创建及管理 6.1 视图 6.1.1 视图的概念 视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图的结构和数据是对数据表进行查询的结果。 视图被定义后便存储在数据库中,通过视图看到的数据只是存放在基表中的数据。当对通过视图看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。 视图可以是一个数据表的一部分,也可以是多个基表的联合。 6.1.2 视图的优点 ?视图可以屏蔽数据的复杂性,简化用户对数据库的操作。 ?视图可以让不同的用户以不同的方式看到不同或者相同的数据集。 ?可以使用视图重新组织数据。 ?视图可以定制不同用户对数据的访问权限。 6.1.3 创建视图 1、创建视图之前的注意事项: ?只能在当前数据库中创建视图。 ?一个视图中行、列的限制。 ?如果视图中某一列是函数、数学表达式、常量或者来自多个表的列名相同,则必须为列定义名称。

?视图与基表的关系 ?不能在视图上创建索引,不能在规则、默认的定义中引用视图。 2、创建视图 (1)使用企业管理器创建视图 在企业管理器中展开要创建视图的数据库,用鼠标右键单击“视图”选项, 在弹出的快捷菜单中选择“新建视图”命令,打开后,这个界面我们在前 面介绍select语句的时候已经给大家介绍过了。在此不再赘述了,请大家 对照书本的例子练习。 (2)使用Transact-SQL语句创建视图 CREATE VIEW [ < database_name > .] [ < owner > .] view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ] AS select_statement [ WITH CHECK OPTION ] < view_attribute > ::= { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } 举例: 在“studentborrow”数据库中,创建一个仅包含“高等教育出版社”出版图书的视图 语句: create view 高等教育出版社 as select * from 图书信息 where 出版社名称='高等教育出版社'

全国计算机三级数据库技术上机试题100道

1.【考点分析】本题考查对4位整数的排序。考查的知识点主要包括:数组元素的排序算法,if判断语句和逻辑表达式,以及求余算术运算。 【解题思路】此题属于4位数排序问题。本题需主要解决3个问题:问题1如何取4位数的后3位进行比较;问题2如何按照题目要求的条件(按照每个数的后3位的大小进行降序排列,如果后3位相等,则按照原始4位数的大小进行升序排列)排序;问题3如何将排完序的前10个数存到数组bb中去。 本题的解题思路为:使用双循环对数组按条件进行排序,然后将排完序的前10个数存到数组bb中。对于问题1可以通过算术运算的取余运算实现(aa[i]%1000);问题2通过包含if判断语句的起泡排序法就可以实现。 【参考答案】 void jsSort() { int i,j; /*定义循环控制变量*/ int temp; /*定义数据交换时的暂存变量*/ for(i=0;i<199;i++) /*用选择法对数组进行排序*/ for(j=i+1;j<200;j++) { if(aa[i]%1000aa[j]) /*则要按原4位数的值进行升序排序*/ { temp=aa[i]; aa[i]=aa[j]; aa[j]=temp; } } for(i=0;i<10;i++) /*将排序后的前10个数存入数组b中*/ bb[i]=aa[i]; } 【易错提示】取4位数后三位的算法,if判断语句中逻辑表达式的比较运算符。 2.【考点分析】本题主要考查的知识点包括:C语言循环结构,if判断语句和逻辑表达式,以及分解多位整数的算术运算。 【解题思路】分析题干,本题除给出条件"SIX+SIX+SIX = NINE+NINE"之外,还可得出2个隐含的条件:条件1:SIX和NINE分别是3位和4位的正整数;条件2:SIX的十位数字等于NINE的百位数字,NINE的千位数字和十位数字相等。 本题解题思路:通过嵌套的循环结构可以遍历到所有的3位和4位数,对于每一个3位数及4位数的组合进行题设条件(SIX+SIX+SIX = NINE+NINE)的判断,满足条件的对其分解得到各数位的数字,再进一步判断各位数字是否满足本题隐含的条件(条件1及条件2),如果满足则个数加1,并将该3位数及4位数添加到和值中。 【参考答案】 void countValue() { int i,j; int s2; int n2,n3,n4; for(i=100;i<1000;i++)

信息管理 数据库 作业答案

信息管理数据库作业答案 下载office文档附件 1. 2.视图消解 因为视图没有真实数据,所以对视图的查询要转换为对相应表的查询,这个过程叫视图消解,视图消解过程由DBMS自动完成 正确答案: 视图是从一个或几个基本表(或视图)导出的表,是一个虚表。将对视图的查询转换为对基本表的查询的过程称为视图的消解。 3.函数依赖 函数依赖是从数学角度来定义的,在关系中用来刻画关系各属性之间相互制约而又相互依赖的情况。其类型包括部分函数依赖、完全函数依赖、传递函数依赖。 正确答案: 设R(U)是属性集U上的关系模式。X,Y是U 的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X?Y。 4.事务 事务(Transaction)是用户定义的一个对数据库读写操作序列,是一个不可分割的工作单位,也是数据库恢复和并发控制的基本单位。数据库系统中通常有多个事务并行运行。在关系数据库中,事务可以是一条、一组SQL语句,或整个程序。 正确答案: 事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

5.数据字典 数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由 DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。正确答案: 数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。 6. 数据库角色 对某个 Analysis Services 数据库具有相同访问权限的用户和组的集合。可以将数据库角色指派给数据库中的多个多维数据集,从而将该角色的用户访问权限授予这些多维数据集。正确答案: 对某个数据库具有相同访问权限的用户和组的集合。 7.简述数据库恢复的基本技术 当系统运行过程中发生故障时,数据库恢复技术将数据库从错误状态恢复到某个一致状态,它是数据库可靠性的保证。数据库恢复的基本原理是利用存储在系统别处的冗余数据来重建其恢复技术的两个关键:(1)如何建立冗余数据(2)如何利用冗余数据恢复数据库正确答案: 数据转储:所谓转储即DBA定期地将整个数据库复制到磁盘或另一个磁盘上保存起来的过程。这些备用的数据文本成为后备副本或后援副本。静态转储:在系统中无运行事物时进行的转储操作。动态转储:在转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。海量转储:每次转储全部数据库增量转储:每次只转储上一次转储后更新过的数据。登记日志文件:日志文件是用来记录事务对数据库的更新操作的文件。为保证数据库是可恢复的,登记日志文件时必须

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.wendangku.net/doc/918488886.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.wendangku.net/doc/918488886.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

数据库系统原理教程课后习题及答案(第十章)

第11章并发控制 1 .在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。 2 .并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。( l )丢失修改(lost update ) 两个事务Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl 提交的结果,导致Tl 的修改被丢失。( 2 )不可重复读(Non 一Repeatable Read ) 不可重复读是指事务Tl 读取数据后,事务几执行更新操作,使Tl 无法再现前一次读取结果。( 3 )读“脏”数据(Dirty Read ) 读“脏’夕数据是指事务Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后,Tl 由于某种原因被撤销,这时Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。 3 .什么是封锁?基本的封锁类型有几种?试述它们的含义。 答:封锁就是事务T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T 就对该数据对象有了一定的控制,在事务T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。 基本的封锁类型有两种:排它锁(Exclusive Locks ,简称x 锁)和共享锁( Share Locks,简称S 锁)。排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A ,其他任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。这就保证了其他事务在T 释放A 上的锁之前不能再读取和修改A 。共享锁又称为读锁。若事务T 对数据对象A 加上S 锁,则事务T 可以读A但不能修改A ,其他事务只能再对A 加S 锁,而不能加X 锁,直到T 释放A 上的S 锁。这就保证了其他事务可以读A ,但在T 释放A 上的S 锁之前不能对A 做任何修改。 4 .如何用封锁机制保证数据的一致性? 答:DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务Tl 在对A 进行修改之前先对A 执行xock ( A ) ,即对A 加x 锁。这样,当几请求对A 加x 锁时就被拒绝,几只能等待Tl 释放A 上的锁后才能获得对 A 的x 锁,这时它读到的A 是Tl 更新后的值,再按此新的A 值进行运算。这样就不会丢失Tl 的更新。

相关文档
相关文档 最新文档