数据库原理与应用期末复习试卷1
一.单项选择题
- 数据库系统是采用了数据库技术的计算机系统,由系统数据库,数据库管理系统,应用系统和(C)组成。
A.系统分析员 B.程序员 C.数据库管理员 D.操作员
- 数据库系统的体系结构是(C)
A.两级模式结构和一级印象 B.三级模式结构和一级印象
C.三级模式结构和两级印象 D.三级模式结构和三级印象
- SQL语言种,删除一个表的命令是(B)
A.DELETE B.DROP C.CLEAR D.REMOVE
- 一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的(D)
A.记录 B.行 C.分量 D.属性
- 概念模型是现实世界的第一层抽象,这一类模型种常用的模型是(D)
A.层次模型 B.关系模型 C.网状模型 D.实体-联系模型
- 如果对于实体集A中的每一个实体,实体集B中也可有多个实体与之联系;反之,对于实体集B中的每一个实体,实体集合A中也可以有多个实体与之联系,则称实体集A与B具有(C)
A.1:1联系 B.1:n联系 C.n:m联系 D.多种联系
- 悲观并发控制普遍采用(A)技术。
A.封锁 B.存取控制 C.游标 D.协商
- 下列情况中,属于数据库安全性遭到破坏(C)。
A.用户读取未提交事务中修改过的"脏数据" I
B.由于系统断电而破坏了数据库中的数据
C.非法用户读取数据库中的数据
D.丢失更新问题
- 设关系数据库中表S的结构为: S(Snane, Cname, Grade),其中Sname为学生姓名,Cname
为课程名,二者均为字符型:Grade为成绩,数值型,取值范图0-100,若要更正张立的化学成绩为90分,则 可用(A )。
A.UPDATE S SET Grade=90 WHERE Sname='张立' AND Cname='化学'
B.UPDATE S SET Grade='90' WHERE Sname='张立' AND Cname='化学'
C.UPDATE Grade=90 WHERE Sname='张立' AND Cname='化学'
D.UPDATE Grade='90' WHERE Sname='张立' AND Cname='化学'
10.在一个关系型数据库中,参照完整性约束可以通过©来实现。
A.主码 B.候选码 C.外码 D.锁
- 在关系数据库系统中,为了简化用户的查询操作。而又不增加数据的存储空间,常用的方法是创建(C )。
A.另一个表 B.游标 C.视图 D.索引
- SQL 语言的GRANT和REVOKE语句主要是用来维护数据库的(C)。
A.完整性 B.可靠性 C.安全性 D.一致性
- 对于某查询语句的条件 where Sdept like C_er%y,将筛选出以下(A)值。
A.Cherry B. Csherry C.Cherr D. C_er%y
- 事务具有ACID,其中C是指事务的(D)。
A.原子性 B.持续性 C.隔离性 D.一致性
- o p1 (o p2 ®)等价于(B)。
A.o p1 v p2 ® B.o p1^p2® C.op1® D.op2®
- 在数据库系统中,死锁属于(B)。
A.系统故障 B.事务故障 C.介质故障 D.程序故障
- 如果事务了获得了数据项Q上的排他锁,则T对Q(C)。
A.只能读不能写 B.只能写不能读
C.既可读又可写 D.不能读也不能写
- 以下有关索引的描述错误的是( D)。
A.聚簇索引的顺序与数据行存放的物理顺序相同
B.指定主键后系统自动在主键上建立聚簇索引
C.一个表可以有多个非聚簇素引
D. 当一个表创建了多个聚簇索引时,同一时刻只有一个聚簇索引起作用
- 事务日志用于保存(C)。
A.程序运行过程 B.程序的执行结果 C.对数据的更新操作 D.数据
- 在以下子句中,放在SELECT语句最后的应该是(D)子句。
A.GROUP BY B.HAVING C.WHERE D.ORDER BY
二.判断题
-
登记日志文件时必须遵守的一条原则是:必须先写数据库,后写日志文件。(×)
-
可串行化的调度一定遵守两段锁协议。(×)
-
在关系模式中,主码和候选码可以有多个。(×)
-
因为视图是一个虚拟表,因此不能通过视图插入、修改或删除数据。(×)
-
关系模式R(A,B,C)上成立的FD集为F=(A→B,C→B),设p=(AB,AC),则该分解不具有保持函数依赖性。(√)
-
左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。(√)
-
事务故障、系统故障和介质故障影响事务的正常执行,事务故障还破坏数据库数据。(×)
-
外模式/模式映像可以保证数据与程序的逻辑独立性。(√)
三.填空题
-
如果一个事务中对数据进行了更新,但该事务还没有提交,另一个事务可以"看到"该事务没有提交的更新结果,这种现象称为(读"脏'数据)。
-
在SELECT语句中,与关系代数中运算符等价的是(select distinct)子句。
-
系统故障可能会造成数据库处于不一致状态:一是未完成事务对数据库的更新可能已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区,没来得及写入数据库。因此恢复操作就是要(撤销UNDO)故障发生时未完成的事务,(重做REDO)已完成的事务。
-
事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,如果仅仅是读数据则不对其加锁,这是(一级)封锁协议。
-
关系数据库完整性约束包括(实体)完整性、参照完整性和用户定义完整性。
-
已知关系r(a,b,c,d,e,f),其中F=(a->b,b->c,a->d,e->t),则a+为(a,b,c,d)
四.分析解答题
- 设关系模式R的属性集是U=(A,B,C,D】,函数依赖集是F=(A->B,B->C)。
(1)求出R的所有侯选关键字;(2分)
AD
(2)并分析该关系R属于第几范式.。(2分)
1NF的分析过程必须合理,关键是非主属性对候选码的依赖
(3)将其规范到3NF。(2分)
R1(A B)R2(B C) R3(AD)
- 一个商业管理信息系统的需求描述如下,
①有若干商店,每个商店需记录:商店号、商店名、地点、经理
②有若干仓库,每个仓库需记录:仓库号、仓库名、地点、面积
③有若干商品,每个商品需记录:商品号、商品名、规格、单价
④有若干职工,每个职工需记录:职工号,姓名,年龄,薪水
⑤每个商店可销售多种商品,每种商品可在多个商店销售;商店销售商品时,必须记录销售日期和销售数 量。
⑥每种商品只能在一个仓库存储,每个仓库可以存储多种商品;仓库存储商品时,须记录存储的数量。
⑦每个职工只能在一个商店工作,一个商店可以有多个职工。
要求:
(1)画出系统的E-R图。(4分)
(2)将你的E-R图转化为关系模型,注意标出关系的主键。(4分)
商品(商品号,商品名,规格,单价,仓库号,存储数量)
仓库(仓库号,仓库名,地点,面积)
职工(商店号,职工号,姓名,年龄,薪水)
商店(商店号,商店名,地点,经理)
销售(商店号,商店号,销售数量,销售日期)
五.请用SQL语句完成下列操作
现有关系数据库如下:
图书表(书号,书名,作者,出版社,单价).
读者表(读者号,姓名,性别,电话).
借阅表(读者号,书号,借出日期,归还日期)
根据以上内容,写出以下SQL语句:
-
创建读者表,约束条件:读者号是主键,姓名不能为空,性别只能取'男"或'女',电话默认'880000'
create table 读者表(
读者号 varchar(20) primary key,
姓名 varchar(20) not null,
性别 char(2) check(性别='男' or 性别='女')
电话 varchar(20) default '880000'
)
-
插入一条记录到读者表,其中读者号:050039,姓名李为,性别;男,电话:80008111。
insert into 读者表 (读者号,姓名,性别,电话) values ('050039','李为','男','80008111')
-
创建一个名为 borrow_counts的存储过程,功能为:输入某个读者号,返回该读者借阅书籍的数目。
create proc borrow_counts @readerid char(6),@borrow_c int output
AS
select @ borrow_c=counts(*)
from 读者表
where 读者号=@readerid
-
查询出哪些读者借阅图书本数超过2本的读者号、总本数,并按借阅本数值从大到小排序。
select 读者号,count(distinct 书号)借阅书籍数
from 借阅表
group by 读者号
order by 借阅书籍数 desc
-
查询每个出版社价格最高的图书,列出这些图书的书号和书名。
select 书号,姓名
from 图书表 T1
where 单价=(select max(单价)
from 图书表 T2
where T2.出版社=T1.出版社
)
-
查询出哪些图书小明借阅过,但是小红没借阅过。列出对应书号,书名。
select 书号,书名
from 借阅表 join 读者表
where 姓名='小明' and 书号 not in(
select 书号
from 借阅表 join 读者表
where 姓名='小红'
)