数据库系统概论(第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);
相关推荐
爱学习的小可爱卢2 小时前
数据库MySQL——MySQL 可重复读隔离级别:Read View 底层原理与幻读问题深度剖析(面试必知)
数据库·mysql
lifewange3 小时前
数据库索引里面的游标是什么?
数据库·oracle
PhDTool3 小时前
计算机化系统验证(CSV)的前世今生
数据库·安全·全文检索
banpu3 小时前
Spring相关
数据库·spring·sqlserver
老年DBA3 小时前
Ora2Pg 迁移Oracle至 PostgreSQL 之实战指南
数据库·postgresql·oracle
我是苏苏3 小时前
MSSQL04: SQLserver的用户权限管理
数据库
l1t3 小时前
达梦数据库和Oracle兼容性和性能比较
数据库·sql·oracle·达梦
lkbhua莱克瓦244 小时前
基础-事务
开发语言·数据库·笔记·mysql·事务
weixin_436525074 小时前
NestJS-TypeORM QueryBuilder 常用 SQL 写法
java·数据库·sql