数据库复习题

简答题

1.什么是基本表?什么是视图?两者的区别和联系是什么?

基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。

2.试述视图的优点

1视图能够简化用户的操作。2视图使用户能以多种角度看待同一数据。3视图对重构数据库提供了一定程度的逻辑独立性。4视图能够对机密数据提供安全保护。5.适当利用视图可以更清晰地表达查询。

3.哪类视图是可以更新的,哪类视图是不可更新的?各举一例说明。

答:基本表的行列子集视图一般是可更新的。若视图的属性来自聚集函数、表达式,则该视图肯定是不可以更新的。DB2规定:

(1)若视图是由两个以上基本表导出的,则此视图不允许更新。(2)若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。(3)若视图的字段来自聚集函数,则此视图不允许更新。(4)若视图定义中含有GROUPBY子句,则此视图不允许更新。(5)若视图定义中含有DISTINCT短语,则此视图不允许更新。(6)若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。(7)一个不允许更新的视图上定义的视图也不允许更新。应该指出的是,不可更新的视图与不允许更新的视图是两个不同的概念。前者指理论上已证明其是不可更新的视图。后者指实际系统中不支持其更新,但它本身有可能是可更新的视图。

4.在数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?
答:数据库是共享资源,通常有多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。
并发控制可以保证事务的一致性和隔离性。
5.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?
并发操作带来的数据不一致性包括三类:(1)丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。

(2)不可重复读
不可重复读是指事务T1,读取某一数据后,事务T2对其执行更新操作,使T1无法再现前一次读取结果。不可重复读包括三种情况:①事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值。②事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了。③事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影(phantom row)现象。
(3)读“脏”数据:读“脏”数据是指事务T1,修改某一数据,并将其写回磁盘,事务T,1读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,7.读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法就是并发控制。常用的并发控制技术包括封锁方法、时间戳方法、乐观控制方法和多版本并发控制方法等。

6.文件系统有三个缺陷:(1)数据冗余性 (redundancy)。由于文件之间缺乏联系,造成每个应用程序都有对应的文件,有可能同样的数据在多个文件中重复存储。(2)数据不一致性(inconsistency)。这往往是由数据冗余造成的,在进行更新操作时,稍不谨慎,就可能使同样的数据在不同的文件中不一样。(3)数据联系弱,这是由文件之间相互独立,缺乏联系造成的。

7.试述数据库系统的特点。解析:数据库系统主要有以下4方面的特点。
①数据结构化。数据库系统实现整体数据的结构化,这是数据库系统与文件系统的本质区别。②数据的共享性高,冗余度低,易扩充。③数据独立性高。数据独立性包括数据的物理独立性和数据的逻辑独立性。所谓“独立性”即相互不依赖。数据独立性是指数据和程序相互不依赖。即数据的逻辑结构或物理结构改变了,程序不会跟着改变

④数据由DBMS统一管理和控制。DBMS必须提供统一的数据控制功能,包括:数据的安全性保护:保护数据以防止不合法的使用造成的数据泄密和破坏;数据的完整性检查:将数据控制在有效的范围内或保证数据之间满足一定的关系,一定的约束条件;并发控制:对多用户的并发操作加以控制和协调,保证并发操作的正确性;数据库恢复:当计算机系统发生硬件故障、软件故障,或者由于操作员的失误以及故意的破坏影响数据库中数据的正确性,甚至造成数据库部分或全部数据的丢失时,能将数据库从错误状态恢复到某一已知的正确状态,亦称为完整状态或一致状态。

8.试述数据库系统三级模式结构,并说明这种结构的优点是什么?

答:数据库系统的三级模式结构由外模式、模式和内模式组成。外模式,亦称子模式或用户模式,是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。
模式,亦称逻辑模式,是数据库中全体数据的逻辑结构和特性的描述,是所有用户的公共数据视图。模式描述的是数据的全局逻辑结构。外模式通常是模式的子集。内模式,亦称存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。为了能够在内部实现这三个抽象层次的联系和转换,数据库系统在这三级模式之间提供了两级映像:外模式/模式映像和模式/内模式映像。正是这两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
9.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?

答:数据与程序的物理独立性:当数据库的存储结构发生改变时,由数据库管理员对模式内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变,这就是数据与程序的物理独立性,简称数据的物理独立性。

数据与程序的逻辑独立性:当数据的逻辑结构即模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变,从而应用程序不必修改,这就是数据与程序的逻辑独立性,简称数据的逻辑独立性。DBMS在三级模式之间提供的两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

10. 试述SQL的特点

答:1综合统一。SQL语言集数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)的功能于一体。2高度非过程化。用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无须了解存取路径。存取路径的选择以及SQL语句的操作过程由系统自动完成。3面向集合的操作方式。SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。4以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。5 语言简洁,易学易用。

11.什么是数据库的安全性?答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。

12.试述实现数据库安全性控制的常用方法和技术。答:实现数据库安全性控制的常用方法和技术有以下几种。①用户身份鉴别:系统提供多种方式让用户标识自己的名字或身份。用户要使用数据库系统时由系统进行核对,通过鉴定后才可以使用数据库。②多层存取控制:系统提供用户权限定义和合法权限检查功能,用户只有获得某种权限才能访问数据库中的某些数据。③视图机制:为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。④审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,审计员可以利用审计信息重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。⑤数据加密:对存储和传输的数据进行加密处理,从而使不知道解密算法的人无法获知数据的内容。
13.什么是数据库中的自主存取控制方法和强制存取控制方法? 
自主存取控制方法
:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限,防止不合法用户对数据库的存取。
强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。自主存取控制中自主的含义是:用户可以将自己拥有的存取权限“自主”地授予别人,即用户具有一定的“自主”权。

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

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

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

17.针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复、系统故障的恢复,以及如何进行介质故障恢复。

事务故障的恢复步骤是:1反向扫描文件日志,查找该事务的更新操作。2对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”写入数据库。直至读到此事务的开始标记,该事务故障的恢复就完成了。

系统故障的恢复步骤是:1正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO队列)和未完成的事务队列(UNDO队列)。2对未完成的事务队列中的各个事务进行UNDO处理。3对已经提交的事务队列中的各个事务进行REDO处理。

介质故障的恢复步骤是:1装入最新的数据库后备副本(离故障发生时刻最近的转储副本),使数据库恢复到最近一次转储时的一致性状态。2装入转储结束时刻的日志文件副本。3 启动系统恢复命令,由DBMS完成恢复功能,即重做已完成的事务。
18.什么是检查点记录,检查点记录包括哪些内容?
检查点记录是一类新的日志纪录。它的内容包括:①建立检查点时刻所有正在执行的事务清单,如下图中的T1、T2。②这些事务的最近一个日志记录的地址,如下图中的D1、D2。

19.具有检查点的恢复技术有什么优点?试举一个具体的例子加以说明。
利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量的时间。此外,需要REDO处理的事务实际上已将其更新操作结果写到数据库中,恢复子系统又重新执行了这些操作,浪费了大量时间。检查点技术就是为了解决这些问题。.
在采用检查点技术之前,恢复时需要从头扫描日志文件,而利用检查点技术只需要从tc。开始扫描日志,这就缩短了扫描日志的时间。事务T3的更新操作实际上已经写到数据库中了,进行恢复时没有必要再REDO处理,采用检查点技术做到了这一点。

eg:


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

21.关系模式有好坏之分,一个不好的关系模式存在以下问题:

(1)信息数据冗余太大(2)插入异常(3)删除异常(4)更新异常

对于存在问题的关系模式,可通过模式分解的方法使之规范化。“分解”是解决冗余的主要方法,也是规范化的一条原则:关系模式有冗余问题,就分解它。但是,一个分解方案不是分解程度越大就越优,因为在查询是所付出的连接的代价也会随之增大。所以说,如何改造一个关系模式,就是规范化理论所要讨论的问题。

22.举例说明关系模式和关系的区别

答:关系模式是型;关系是值,是关系模式的实例。例如:
Student(Sno,Sname,Sage)是关系模式,下面的表是关系,即某一时刻关系模式的值。

Sno  Sname Sage
S1 张俊丽18
S2李红钰19
S3 王敏英19

23.试述数据管理的文件系统阶段和数据库系统阶段“数据独立性”有何不同。答:

文件系统中数据被组织成相互独立的数据文件,程序按照文件名访问数据,“数据独立性”是一种“设备独立性”。

数据库系统中的“数据独立性”包括“物理独立性”和“逻辑独立性”,物理独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的;逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。

24.叙述使用文件系统管理数据的缺点。①数据共享性差,冗余度大;②数据独立性差。

25.完整性约束是否能够保证数据库在处理多个事务时处于一致状态

完整性约束能够保证操作后的数据满足某种约束条件,并不能使多个事务被正确调度,无法保证数据库处于一致状态。 

26.解释相关子查询和不相关子查询

在嵌套查询中,如果子查询的查询条件不依赖于父查询,称为不相关子查询;如果子查询的查询条件依赖于父查询,称为相关子查询。

27.一二三 BCNF范式的定义

1NF:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。(第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。)2NF:若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。 3NF:关系模式R<U,F>中若不存在这样的码X、属性组Y及非主属性Z(∉Y),使得X→Y,(Y\→X),Y→Z成立,则称R<U,F> ∈3NF。 BCNF:关系模式R<U,F> ∈1NF。若X→Y且Y∉X时X必含有码,则R<U,F> ∈BCNF。

28.规范化:规范化是指用形式更为简洁、结构更加规范的关系模式取代原有关系模式的过程。

关系模式对数据的要求:关系模式必须满足一定的完整性约束条件以达到现实世界对数据的要求。完整性约束条件主要包括以下两个方面。(1)对属性取值范围的限定。(2)属性值间的相互联系(主要体现在值的相等与否),这种联系称为数据依赖。(3)属性间的联系分为两种:实体内部;实体之间的联系。

29.数据依赖:数据依赖是指通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现 实世界属性间相互联系的抽象,是数据内在的性质。数据依赖有三种:函数依赖,多值依赖和连接依赖。重点是函数依赖和多值依赖

a.函数依赖:假设给定一个属性的值,就可以唯一确定(查找到)另一个属性的值。比如在设计学生表时,一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号,对于现实来说,就是如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖。

函数依赖又分为非平凡依赖,

平凡依赖;从性质上还可以分为完全函数依赖、部分函数依赖和传递函数依赖。

①.平凡函数依赖:当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。

②.非平凡函数依赖:当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。

③.完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

④.部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

⑤.传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

30.(1)联系类型为1:1时,先将两个实体分别转换两个关系模式,然后在任意一个关系模式中加入另一个关系模式的键和联系类型的属性。(2)1:N-先将两个实体分别转换为两个关系模式,然后在N端实体转换的关系模式中加入1端实体转换的关系模式的健和联系类型的属性。(3)M:N -先将两个实体分别转换为两个关系模式,然后将联系类型转换为第三个关系模式,其属性由两端实体的键和联系类型的属性构成。

习题1:

1.考虑关系模式R(A,B,C,D),写出满足下列函数依赖时R的码,并给出R属于哪种范式(1NF、2NF、3NF或BCNF)。

① B→D,AB→C

②A→B,A→C,D→A

③BCD→A,A→C

④B→C,B→D,CD→A

⑤ ABD→C

①R的码为AB;R是1NF。

②R的码为D;R是2NF。

③R的码为BCD、ABD;R是3NF。

④R的码为B;R是2NF。

⑤ R的码为ABD;R是BCNF

2,设某汽车运输公司数据库中有三个实体集。一是“车队”实体集,属性有车队号、车队名等;二是“车辆”实体集,属性有牌照号、厂家、出厂日期等;三是“司机”实体集,属性有司机编号、姓名、电话等。

设车队与司机之间存在“聘用”联系,每一个车队可聘用若干司机,但每一个司机只能应聘于一个车队,车队聘用司机有个聘期;车队与车辆之间存在“拥有”联系,每一个车队可拥有若干车辆,但每辆车只能属于一个车队;司机与车辆之间存在着“利用”联系,司机利用车辆有利用日期和千米数两个属性,每一个司机可利用多辆汽车,每辆汽车可被多个司机利用。

(1)试画出ER图,并在图上注明属性、联系类型、实体标识符;

(2)将ER图转换成关系模型,并说明主键和外键。

3.某医院病房计算机管理中需要如下信息:科室:科名,科地址,科电话,医生姓名 。病房:病房号,床位号,所属科室名。医生:姓名,职称,所属科室名,年龄,工作证号。病人:病历号,姓名,性别,诊断,主管医生,病房号其中,一个科室有多个病房、多个医生,一个病房只能属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。完成如下设计:

(1)设计该计算机管理系统的E-R图;(2)将该E-R图转换为关系模式结构;(3)指出转换结果中每个关系模式的候选码。

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
sql语句来练习题。1. 写出创建图书表的SQL语句。 Create table book( Book_id char (10) primary key, (主码primary key) Name varchar(30) not null, (非空not null) Author varchar(20) Publish varchar(30) Price decimal(6,2) (,前表示有几位有效数字 ,后表示小数部分有几位) ) 2. 将编号为“NEU1105101”的图书的定价改为50元。 Update book (修改数据update语句) Set price=50 Where book_id=‘NEU1105101’ 3. 查询所有男性读者的姓名和出生日期。 Select name.birthdate From reader Where sex=‘男’ 4. 查询图书表中出现过哪些出版社,每个出版社名称只显示一次,并且按照出版社名称升序排列显示。 Select publish From book Order by publish ASC (按照出版社升序排列显示) 5. 查询借阅过定价介于20元到40元(包括两个边界值)图书的读者的姓名。 Select Name (建立多表连接查询) From borrow join book on borrow.book_id=book.book_id Join reader on borrow.reader_id=reader.readerid Where price >=20 and price <=40 6. 查询每个读者借阅过图书的数量,只显示借阅过图书的读者的读者编号以及借书数量。 Select count(book_id),reader_id (建立多表连接查询) From borrow join book on borrow.book_id=book.book_id Join reader on borrow.reader_id=reader.readerid Group by reder_id 7. 如果有一个名为user001的用户,请写出给他分配对图书表进行数据修改的权限的SQL语句。 Grant update on book to user001 (授权grant语句) 8. 创建一个名为view001的视图,其中包含每个出版社的名称、该出版社出版图书的数量、该出版社出版图书的最高定价、以及该出版社出版图书的最低定价。 Create view view001 (创建视图格式,聚集函数) AS Select publish,count(book_id),MAX(price),MIN(price) From student 9. 显示借阅过书名包含“数据库”字样的女性读者的编号和姓名。 Select Name,reader_id (建立多表连接查询) From borrow join book on borrow.book_id=book.book_id Join reader on borrow.reader_id=reader.readerid Where name like ‘%数据库%’ 10. 显示出版图书数量超过100本的出版社的名称及其出版图书的数量。 Select count(book_id),publish (查询图书数量,出版社名称) From book Group by publish (根据出版社的名称来分组) Having count(book_id)>100 (条件约束) 这里用having 不用where 原因是它不能和聚集函数一起使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值