数据库系统概论(第6版)模拟题2

(仅供参考,欢迎指正)

一、选择题(每题1分,共10分)

1.数据库系统与文件系统的主要区别在于( )。

A. 数据结构化程度高

B. 数据共享性差

C. 数据冗余度高

D. 数据独立性低

答案:A。

数据管理技术确实经历了人工管理、文件系统和数据库系统三个阶段。

对比维度 人工管理阶段 (20世纪50年代中期前) 文件系统阶段 (50年代后期至60年代中期) 数据库系统阶段 (60年代后期以来)
数据管理者 用户(程序员) 文件系统 数据库管理系统(DBMS)
面向对象 某一特定应用程序 某一特定应用 整个组织/现实世界(多应用)
数据共享 无共享,冗余度极大 共享性差,冗余度大 共享性高,冗余度小
数据独立性 不独立,完全依赖程序 独立性差 独立性高(物理独立 & 逻辑独立)
数据结构化 无结构 记录内有结构,整体无结构 整体结构化,用数据模型描述
数据控制能力 应用程序自己控制 应用程序自己控制 由DBMS统一提供安全性、完整性、并发控制和恢复

1.人工管理阶段

这个阶段计算机主要用于科学计算,还没有出现专门管理数据的软件。

  • 数据不保存:计算任务完成后,数据空间会被释放,通常不长期保存。

  • 程序与数据绑定 :数据由应用程序自己管理,程序员需要在代码中设计数据的存储结构和存取方法。一组数据严格对应一个程序,无法被其他程序使用

  • 无独立性:数据的逻辑或物理结构一旦改变,必须修改对应的应用程序。

2.文件系统阶段

随着磁盘等直接存取设备出现,操作系统开始提供文件系统来专门管理数据。

  • 数据可长期保存:数据可以"文件"的形式长期保存在磁盘上。

  • 程序与数据初步分离:文件的存取操作由文件系统完成,减轻了程序员的负担。

  • 仍存在根本缺陷

    • 共享性差,冗余度高 :文件是基于特定应用创建的,即使不同程序需要部分相同数据,也必须创建各自的文件,导致数据大量重复

    • 数据独立性差:文件的逻辑结构通常仍嵌入在应用程序代码中,两者修改时会相互影响。

    • 数据整体无结构 :文件内部(记录)有结构,但文件之间是孤立的,不能反映数据之间的整体联系。

3.数据库系统阶段

为满足大规模数据管理和多应用共享的需求,出现了数据库管理系统(DBMS),这是数据管理技术的飞跃。

  • 数据结构化 :这是与文件系统的本质区别。数据按某种数据模型(如关系模型)组织,不仅描述数据本身,还描述数据之间的联系,形成一个结构化的整体。

  • 高共享、低冗余:数据面向整个系统设计,可被多个应用共享使用。这大大减少了数据冗余,并避免了因冗余可能导致的数据不一致问题。

  • 高独立性 :通过DBMS的三级模式结构和二级映射功能,实现了物理独立性 (存储结构改变不影响应用)和逻辑独立性(逻辑结构改变不影响部分应用),极大减少了维护工作量。

  • 统一的数据控制:DBMS提供了专业的数据控制功能,包括数据的安全性保护、完整性检查、并发控制和数据库恢复,保障了数据的安全可靠。

简单来说,这三个阶段的演进路径是:数据从程序的附属品 (人工管理),变成了由系统软件管理的独立文件 (文件系统),最终进化为由专业系统统一管理的、结构化的、可共享的数据资源(数据库系统)。

2.在关系模型中,实现"关系中不允许出现相同元组"的约束是通过( )实现的。

A. 实体完整性

B. 参照完整性

C. 用户定义完整性

D. 主码约束

答案:D。

解析:主码是在一个关系(即一张表)中,能够唯一标识每一个元组(即每一行)的一个属性(字段)或属性组。

主码通过其唯一性非空性,强制保证了表中任意两个元组在主码属性上的值都不相同,从而确保了元组的唯一性。

实体完整性 :这是一个更上层的完整性规则 ,它规定 了"主码不能取空值"。可以理解为,实体完整性规则是通过主码约束这个具体手段来实现的。题目问的是具体"实现"的机制,而非规则本身。

参照完整性:它约束的是不同表之间的关联关系(外码与主码的匹配),与防止同一表内出现重复元组无关。

用户定义完整性:这是针对特定应用语义的约束(如年龄大于0),也不是用于保证元组唯一性的通用机制。

3.SQL中,用于删除表中所有数据但保留表结构的语句是( )。

A. DELETE

B. DROP

C. TRUNCATE

D. REMOVE

答案:C。

解析:

DELETE 语句虽然不带WHERE子句时也能删除所有数据并保留表结构,但它是DML操作,逐行删除并记录日志,因此性能较低,且可能触发触发器。

DROP 语句会删除整个表,包括表结构和所有数据,不符合"保留表结构"的要求。

TRUNCATE 语句用于快速删除表中的所有数据,但完全保留表结构(包括列定义、索引、约束等)。它是一种DDL操作,通常比DELETE更高效,因为它不记录逐行删除,并且重置表的存储空间。

REMOVE 不是标准SQL语句,在主流数据库(如MySQL、Oracle、SQL Server等)中不支持。

SQL语言中两大最基本的操作类别,其根本区别在于操作对象不同。

类别 中文全称 操作对象 主要功能 常见命令关键字
DDL 数据定义语言 数据库、表本身的结构 创建、修改、删除数据库对象(如库、表、视图、索引等) CREATE, ALTER, DROP, TRUNCATE, RENAME
DML 数据操纵语言 表中的数据/记录 对表中的数据进行增、删、改、查 SELECT, INSERT, UPDATE, DELETE

MySQL、Oracle、SQL Server、DB2、PostgreSQL等,都属于关系数据库管理系统。IMS是层次型数据库。

4.在数据库安全性控制中,授权和收回权限的SQL语句是( )。

A. GRANT 和 REVOKE

B. ALLOW 和 DENY

C. PERMIT 和 FORBID

D. AUTHORIZE 和 CANCEL

答案:A。

5.若关系模式R(A,B,C)中存在函数依赖A→B和B→C,则R最高属于( )。

A. 1NF

B. 2NF

C. 3NF

D. BCNF

答案:B。

L:A。

R:C。

LR:B。

候选码:A。

主属性:A。非主属性:B,C。

不存在非主属性对候选码的部分依赖,满足2NF。

存在非主属性对候选码的传递依赖,违反3NF。

所以,R最高属于2NF。

6.数据库逻辑结构设计阶段的主要任务是( )。

A. 将E-R图转换为关系模式

B. 设计用户子模式

C. 建立数据字典

D. 设计存取路径

答案:A。

解析:

在数据库设计流程中,逻辑结构设计阶段 的核心任务是将独立于具体DBMS的概念模型 (通常是E-R图)转换 为某个特定DBMS所支持的数据模型(如关系模型)的过程。

将E-R图转换为关系模式 :这是最主要且核心的任务。该任务需要定义出关系数据库中的表、表的属性、主码、外码等,确保概念模型被正确地映射为关系模式。

设计用户子模式 :这属于外模式设计,它是在逻辑模式的基础上,根据特定用户或应用程序的视图需求来定制,并非逻辑结构设计阶段的主要任务。

建立数据字典 :这是需求分析阶段的主要成果。数据字典用于在项目早期全面定义和描述系统中的所有数据项,为后续设计提供依据。

设计存取路径 :这属于物理设计阶段的任务,主要涉及为关系模式设计索引、聚簇等存储和访问机制,以优化性能。

7.事务的持久性是指( )。

A. 事务中包括的所有操作要么都做,要么都不做

B. 事务一旦提交,对数据库的改变就是永久的

C. 一个事务内部的操作及使用的数据对并发的其他事务是隔离的

D. 事务必须是使数据库从一个一致性状态变到另一个一致性状态

答案:B。

A指的是原子性。

C指的是隔离性。

D指的是一致性。

8.解决并发操作带来的数据不一致性问题通常采用( )。

A. 恢复技术

B. 封锁技术

C. 存取控制技术

D. 加密技术

答案:B。

封锁技术 是数据库管理系统实现并发控制 最主要、最核心的技术。其基本思想是,事务在对数据进行操作(读/写)前,先向系统申请对其加锁 。通过锁的互斥规则(如共享锁、排他锁)来控制多个事务对同一数据对象的访问顺序,从而避免产生脏读、不可重复读、幻读等数据不一致问题。

恢复技术 用于在系统发生故障(如断电、软硬件错误)后,将数据库恢复到某个一致的状态 。它解决的是故障 导致的数据破坏问题,而非并发导致的不一致。

存取控制技术 (如授权GRANT和收回REVOKE)属于数据库安全性范畴,用于确保只有合法用户才能访问其被允许的数据,防止非法访问和恶意破坏。

加密技术 同样属于数据库安全性范畴,用于保护数据的机密性,防止数据在存储或传输过程中被窃取而泄露。

9.关系代数中,从两个关系的笛卡尔积中选取满足连接条件的元组的操作称为( )。

A. 选择

B. 投影

C. 连接

D. 除

答案:C。

选择(Selection) 是对单个关系进行水平筛选,选取满足条件的元组,不涉及多个关系。

投影(Projection) 是对单个关系进行垂直筛选,选取指定的属性列。

连接(Join) 操作正是从两个关系的笛卡尔积中选取满足给定连接条件的元组,它是关系代数中最常用的双目操作之一。

除(Division) 是一种特殊的操作,用于解决"包含所有"类型的查询,与笛卡尔积和连接条件无关。

10.数据库恢复的基本原理是( )。

A. 备份与复制

B. 冗余

C. 审计

D. 加密

答案:B。

冗余是数据库恢复最核心、最根本的理论基础。它的思想是:在正常运行期间,系统有意存储超出其本身运行所必需的额外数据。当故障发生后,就可以利用这些提前存储的冗余数据,将数据库"重做"或"回滚"到故障前的某个一致性状态。

备份与复制 是一个具体的实现手段或操作,是创建"冗余"数据的主要方法之一,但并非原理本身。

审计 是一种安全性 技术,用于记录和检查用户对数据库的所有操作,目的是追责和监控,与恢复数据无关。

加密 是一种安全性技术,用于保护数据的机密性,防止数据被非法读取,与恢复数据无关。

(附加题)11.有一个网络数据库应用系统,其中一台计算机A存有DBMS软件、所有用户数据和应用程序,其余各节点作为终端通过通信线路向A发出数据库应用请求,这种方式属于( )。

A. 集中式数据库体系结构

B. 主从式数据库体系结构

C. 客户机/服务器数据库体系结构

D. 分布式数据库体系结构

答案:A。

解析:

各数据库系统体系结构的特点及区分:

1.集中式数据库体系结构

特点:所有数据、DBMS和应用程序都驻留在单台计算机上,用户通过终端(通常为哑终端)访问系统,终端仅负责输入和输出,无独立处理能力。

区分:单一主机完成所有处理,终端无智能,存在单点故障和扩展性限制。

2.客户机/服务器数据库体系结构

特点:系统分为客户端和服务器。服务器运行DBMS,负责数据管理和处理;客户端运行应用程序,提供用户界面并发送请求给服务器。

区分:客户端和服务器分工明确,通过网络交互,支持多客户端并发访问。

3.并行数据库体系结构

特点:利用多个处理器和存储设备并行执行数据库操作,以提高性能和可用性。常见架构包括共享内存、共享磁盘和无共享。

区分:紧密耦合的多处理器系统,专注于高速并行处理,常用于大数据和高并发场景。

4.分布式数据库体系结构

特点:数据物理分布在多个节点上,每个节点可能运行独立的DBMS,但逻辑上是一个整体,支持局部自治和全局协作。

区分:数据分布透明,节点通过网络连接,可独立处理局部查询,协作处理全局查询。

5.云数据库体系结构

特点:数据库以服务形式(DBaaS)在云平台上提供,具备弹性扩展、按需付费和高可用性,底层通常采用分布式和并行技术。

区分:基于云基础设施,通过互联网访问,服务化、可伸缩,运维由云服务商负责。

二、判断题(每题1分,共10分)

1.数据库系统的三级模式结构是指模式、内模式和外模式,其中模式是全局逻辑结构。 ( )

答案:√

2.视图是一个虚表,其数据并不实际存储,而是来自基本表。 ( )

答案:√

3.SQL语言中,INSERT语句用于修改表中的数据。 ( )

答案:×

4.数据库完整性约束包括实体完整性、参照完整性和用户定义完整性。 ( )

答案:√

5.若关系模式R∈3NF,则R一定属于BCNF。 ( )

答案:×

解析:BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF

6.数据库设计步骤中,概念结构设计阶段独立于具体的数据库管理系统。 ( )

答案:√

7.封锁协议中的两段锁协议是保证并发调度可串行化的必要条件。 ( )

答案:×

8.数据库系统的数据独立性包括逻辑独立性和物理独立性。 ( )

答案:√

9.函数依赖A→B表示属性A的值可以唯一确定属性B的值。 ( )

答案:√

10.数据库安全性控制中,自主存取控制(DAC)是通过角色和权限实现的。 ( )

答案:√

三、分析题(15分)

给定关系模式R(A, B, C, D, E),其函数依赖集F={AB→C, C→D, D→E}。

(1)求出R的所有候选码。(5分)

解:

L:A,B。

R:E。

LR:C,D。

所以R的所有候选码为AB。

(2)判断R最高属于第几范式,并说明理由。(5分)

解:R最高属于第二范式。

理由如下:

R的所有候选码为AB。

主属性为:A,B。

非主属性:C,D,E。

不存在非主属性部分依赖于候选码,满足2NF。

存在非主属性传递依赖于候选码,D和E对于候选码的传递函数依赖,违反3NF。

所以R最高属于第二范式。

(3)若R不属于3NF,请将其分解为3NF,要求分解既具有无损连接性又保持函数依赖。(5分)

解:

由于R不满足3NF,需要分解。

首先求出最小函数依赖集:

F={AB→C, C→D, D→E}已经是最小依赖(右边单一属性,左边无多于属性,无冗余依赖)。

将每个函数依赖组成一个关系模式:

R1(A,B,C)对应AB→C;

R2(C,D)对应C→D;

R3(D,E)对应D→E。

检查候选码,R1中包含候选码AB。

无需合并具有相同左部的关系模式。

分解结果为R1(A,B,C),R2(C,D),R3(D,E)。

验证无损连接性,由于包含候选码AB在R1中,所以分解具有无损连接性。

验证保持函数依赖:AB→C在R1中,C→D在R2中,D→E在R3中,所有依赖均保持。

每个关系模式均为3NF:

R1:候选码AB,满足BCNF(也是3NF);

R2:候选码C,满足BCNF;

R3:候选码D,满足BCNF。

因此,分解满足要求。

四、设计题(25分)

某图书馆管理系统需要管理以下信息:

  • 图书:书号,书名,作者,出版社,库存数量

  • 读者:读者号,姓名,性别,年龄,联系方式

  • 借阅:读者号,书号,借书日期,还书日期

其中,每本图书可以被多个读者借阅,每个读者可以借阅多本图书。借阅记录中,借书日期和还书日期记录每次借阅情况。

要求:

(1)根据上述语义,画出E-R图,并注明联系类型和实体属性。(10分)

解:

(2)将E-R图转换为关系模式,并指出每个关系模式的主码和外码(如果有)。(10分)

解:

①图书(书号,书名,作者,出版社,库存数量)

主码:书号。外码:无。

②读者(读者号,姓名,性别,年龄,联系方式)

主码:读者号。外码:无。

③借阅(读者号,书号,借书日期,还书日期)

主码:(读者号,书号,借书日期)。外码:读者号,书号。

注意此处借阅的主码,题目不明确,但是实际中可能存在同一个人同一本书借阅多次的情况,所以(读者号,书号)不一定能唯一确定一条借阅记录,(读者号,书号,借书日期)作为主码更可靠一些。

(3)在转换后的关系模式中,用下划线标出主码,用波浪线标出外码。(5分)

解:

五、应用操作题(40分)

设有以下三个关系模式:

  • 学生(学号,姓名,性别,年龄,所在系)

  • 课程(课程号,课程名,先行课,学分)

  • 选修(学号,课程号,成绩)

用关系代数和SQL语句完成下列查询:

(1)查询选修了课程名为"数据库原理"的学生的学号和姓名。(关系代数,5分)

(2)查询年龄在20岁以下的学生姓名和所在系。(SQL,5分)

sql 复制代码
select 姓名,所在系 from 学生 
    where 年龄<20;

(3)查询选修了课程号"C001"且成绩在90分以上的学生姓名和成绩。(SQL,5分)

sql 复制代码
select s.姓名,sc.成绩 from 学生 s,选修 sc 
    where s.学号=sc.学号 and sc.课程号='C001' and sc.成绩>90;

(4)查询每个学生的学号、姓名和其选修课程的平均成绩(只统计有成绩的学生)。(SQL,5分)

sql 复制代码
select s.学号,s.姓名,avg(sc.成绩) as 平均成绩
    from 学生 s,选修 sc
    where s.学号=sc.学号
    group by s.学号,s.姓名;

(5)将学生"李勇"的年龄改为21岁。(SQL,5分)

sql 复制代码
update 学生
    set 年龄=21
    where 姓名='李勇';

(6)创建视图V_CS,显示计算机系(CS系)学生的学号、姓名和选修的课程名及成绩。(SQL,5分)

sql 复制代码
create view V_CS(学号,姓名,课程名,成绩) as
    select s.学号,s.姓名,c.课程名,sc.成绩
    from 学生 s,课程 c,选修 sc
    where s.学号=sc.学号 and sc.课程号=c.课程号 and s.所在系='计算机系';

(7)授予用户U1对学生表的查询权限。(SQL,5分)

sql 复制代码
grant select on table 学生 to U1;

(8)定义学生表的完整性约束:学号为主码,性别只能取'男'或'女',年龄在15到45之间。(SQL,5分)

sql 复制代码
/*定义表的时候就加以限制*/
create table 学生 (
        学号 varchar(15) primary key,
        姓名 varchar(15),
        性别 varchar(15) constraint c1 check(性别 in ('男','女')),
        年龄 int constraint c2 check(年龄 between 15 and 45),
        所在系 varchar(15)
    );

/*或,表创建完成后单独添加约束*/
alter table 学生 add constraint pk_xuehao primary key(学号);
alter table 学生 add constraint ck_xingbie check(性别 in('男','女'));
alter table 学生 add constraint ck_nianling check(年龄 between 15 and 45);
相关推荐
自不量力的A同学31 分钟前
Redisson 4.2.0 发布,官方推荐的 Redis 客户端
数据库·redis·缓存
Exquisite.33 分钟前
Mysql
数据库·mysql
全栈前端老曹1 小时前
【MongoDB】深入研究副本集与高可用性——Replica Set 架构、故障转移、读写分离
前端·javascript·数据库·mongodb·架构·nosql·副本集
R1nG8631 小时前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
阿钱真强道1 小时前
12 JetLinks MQTT直连设备事件上报实战(继电器场景)
linux·服务器·网络·数据库·网络协议
逍遥德2 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
笨蛋不要掉眼泪2 小时前
Redis哨兵机制全解析:原理、配置与实战故障转移演示
java·数据库·redis·缓存·bootstrap
Coder_Boy_2 小时前
基于SpringAI的在线考试系统-整体架构优化设计方案
java·数据库·人工智能·spring boot·架构·ddd
fen_fen10 小时前
Oracle建表语句示例
数据库·oracle
砚边数影12 小时前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库