数据库期末模拟测试

数据库期末模拟测试

一、简答题

1.简述事务所具有的ACID特性。

事务:用户的操作由一系列数据库操作组成的,这一系列操作应该作为整体执行,要么全部执行,要么全部不执行。

  1. A:原子性(Atomic)
    事务的操作作为整体执行,要么全部执行,要么全部失败
  2. C:一致性(Consistency)
    数据在事务执行之前和执行之后,处于一致状态
  3. I:隔离性(Isolation)
    多个事务之间是隔离的,互不影响
  4. D:持久性(Durability)
    一旦事务提交了,对数据库的修改是永久性的

2.登记日志文件时为什么必须先写日志文件,后写数据库?

先写日志文件为保证数据库的可恢复性,日志文件能够用来进行事务故障恢复、系统故障恢复,并能够协助后备副本进行介质故障恢复。当数据库文件毁坏后,可重新装入后备副本把数据库恢复到转储结束时刻的正确状态,再利用建立的日志文件,可以把已完成的事务进行重做处理,而对于故障发生时尚未完成的事务则进行撤消处理,这样不用运行应用程序就可把数据库恢复到故障前某一时刻的正确状态。

3.什么是数据字典?数据字典的作用是什么?

数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。

4.并发操作会产生几种不一致情况?用什么方法避免各种不一致的情况?

  1. 丢失数据修改
    两个事务T1和T2读入同一个数据并修改,T2提交的结果破坏了T1提交的结果,导致了T1的修改被丢失
  2. 不可重复读
    事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取的结果。
  3. 读脏数据
    读“脏”数据指的是事务T1修改了某一数据,并将其写回磁盘,事务T2读取某一数据后,T1由于某种原因撤销了操作,恢复原值,这时T2读到的数据就和数据库中的数据不一致,称为读“脏”数据。
  4. 产生幽灵数据
    当事务T1从数据库中读取了某些记录,事务T2删除了其中部分记录,或者添加了一些记录,T1再次读取时,会少或者多一些数据,这些数据对T1即为幽灵数据。

主要用封锁技术来避免不一致的情况。

5.为什么要设立日志文件?

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

6.试述查询优化的一般步骤。

  1. 把查询转换成某种内部表示,通常用的内部表示是语法树。 
  2. 把语法树转换成标准(优化)形式。即利用优化算法,把原始的语法树转换成优化的形式。 
  3. 选择低层的存取路径。 
  4. 生成查询计划,选择代价最小的。

二、应用题

7.设有下列四个关系模式:

 S(SNO,SNAME,CITY)
 P(PNO,PNAME,COLOR,WEIGHT)
 J(JNO,JNAME,CITY)
 SPJ(SNO,PNO,JNO,QTY)

其中,供应商表S由供应商号(SNO)、供应商姓名(SNAME)、供应商所在城市(CITY)组成,记录各个供应商的情况;零件表P由零件号(PNO)、零件名称(PNAME)、零件颜色(COLOR)、零件重量(WEIGHT)组成,记录各种零件的情况;工程项目表J由项目号(JNO)、项目名(JNAME)、项目所在城市(CITY)组成,记录各个工程项目的情况;供应情况表SPJ由供应商号(SNO)、零件号(PNO)、项目号(JNO)、供应数量(QTY)组成,记录各供应商供应各种零件给各工程项目的数量。分别用SQL语言完成下列查询:
(1)求供应工程项目号为J1工程零件的供应商号SNO;
(2)求供应工程项目号为J1工程零件号为P1的供应商号SNO;
(3)求供应工程项目号为J1工程红色零件的供应商号SNO;
(4)求至少使用天津供应商生产的红色零件的工程号JNO;
(5)求至少用了S1供应商所供应的全部零件的工程号JNO;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
(1) SELECT SNO FROM SPJ
WHERE JNO='J1'

(2) SELECT SNO FROM SPJ
WHERE JNO='J1' AND PNO='P1'

(3) SELECT SNO FROM SPJ
WHERE JNO='J1' AND PNO IN(
SELECT PNO FROM P
WHERE COLOR='红'
)

(4) SELECT JNO FROM SPJ
WHERE SNO IN(
SELECT SNO FROM S
WHERE CITY='天津'
)AND PNO IN(
SELECT PNO FROM P
WHERE COLOR='红'
)

(5) SELECT JNO FROM SPJ
WHERE SNO='S1'

8.设有下列关系模式:

STUDENT(NO,NAME,SEX,BIRTHDAY,CLASS)
TEACHER(NO,NAME,SEX,BIRTHDAY,PROF,DEPART)
COURSE(CNO,CNAME,TNO)
SCORE(NO,CNO,DEGREE)

其中,学生信息表STUDENT由学号(NO)、学生姓名(NAME)、性别(SEX)、出生年月日(BIRTHDAY)、班级(CLASS)组成,记录学生的情况;教师信息表TEACHER由教师号(NO)、教师姓名(NAME)、性别(SEX)、出生年月日(BIRTHDAY)、职称(FROF)、教师所在系(DEPART)组成,记录教师的情况;课程表COURSE由课程号(CNO)、课程名称(CNAME)、任课教师号(TNO)组成,记录所开课程及任课教师情况;成绩表SCORE由学生学号(NO)、课程号(CNO)、成绩(DEGREE)组成,记录学生选课情况及相应的成绩。用SQL语句实现以下操作
(1)显示STUDENT表中每个学生的姓名和出生日期。
(2)显示STUDENT表中所有姓“王”的学生记录。
(3)显示成绩表中成绩在60分到80分之间的所有记录。
(4)显示“男”教师及其所上的课程。(显示该教师的姓名和所上的课程名)
(5)选出和“李军”同学同性别并同班的学生姓名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(1) SELECT NAME,BIRTHDAY FROM STUDENT

(2) SELECT * FROM STUDENT
WHERE NAME LIKE '王%'

(3) SELECT DEGREE FROM SCORE
WHERE DEGREE BETWEEN 60 AND 80

(4) SELECT NAME,CNAME FROM TEACHER,COURSE
WHERE TEACHER.NO=COURSE.TNO AND SEX='男'

(5) SELECT NAME FROM STUDENT
WHERE SEX IN(
SELECT SEX FROM STUDENT
WHERE NAME='李军'
)AND CLASS IN(
SELECT CLASS FROM STUDENT
WHERE NAME='李军'
)

三、综合题

9.设某工商业集团数据库有3个实体集。

一是“商品”实体集,属性有商品号、商品名、规格、单价等;二是“商店”实体集,属性有商店号、商店名、地址等;三是“供应商”实体集,属性有供应商编号、供应商名、地址等。供应商与商品之间存在“供应”关系,每个供应商可供应多种商品,每种商品可向多个供应商订购,每个供应商供应每种商品有个月供应量;商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品可在多个商店销售,每个商店销售每种商品有个月计划数。
(1) 试画出ER图,并在图上注明属性、联系的类型。
(2) 将ER图转换成关系模式集,并指出每个关系模式的主键和外键。

9.答:

(1)
ER图

(2)
商店(商店号,商店名,地址)。
商品(商品号,商品名,规格,单价)。
供应商(供应商编号,供应商名,地址) 。
销售(商品号商店号,月计划数),其中,”商品号”为引用”商品”关系模式的外码,”商店号”为引用”商店”关系模式的外码。
供应(商品号供应商编号,月供应量),其中,”商品号”为引用”商品”关系模式的外码,”供应商编号”为引用”供应商”关系模式的外码。

10.设有如下所示的关系R(主码为:课程名)。

关系R
(1) 该关系模式为第几范式?为什么?
(2) 是否存在删除操作异常?若存在,则说明在什么情况下发生的?
(3) 将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题的?

10.答:

(1) 第二范式。因为关系R不包含重复组的关系,首先是第一范式,其次,关系R不存在非主码属性对主码的部分函数依赖,所以它也是第二范式,但教师名依赖于课程名,教师地址又依赖于教师名,所以教师地址依赖于课程名,存在传递函数依赖,所以它不是第三范式,所以关系R为第二范式。
(2) 存在。当删除某门课程时,会删除掉不该删除的教师的有关信息。
(3) 分解后的关系:分解后的关系R
分解后,若对课程进行删除操作,仅对R1进行操作,而教师信息仍然会保留在R2中,解决了删除操作异常问题。



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!