直接模拟考:
第 1 章 概述:单选题
1.数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)之间的关系是( )。
A)DB包含DBS和DBMS B)DBMS包含DB和DBS
C)DBS包含DB和DBMS D)没有任何关系
2.数据库系统的核心是( )。
A)数据模型 B)数据库管理系统 C)数据库 D)数据库管理员
3.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。
A)数据与程序独立存放
B)不同的数据被存放在不同的文件中
C)不同的数据只能被对应的应用程序所使用
D)以上三种说法都不对
4.下列关于数据库的正确叙述是( )。
A)数据库中只存在数据项之间的联系
B)数据库的数据项之间和记录之间都存在联系
C)数据库的数据项之间无联系,记录之间存在联系
D)数据库的数据项之间和记录之间都不存在联系
5.在DBMS提供的数据语言中,负责数据的模式定义与数据的物理存取构建的是( )。
A)数据定义语言 B)数据转换语言 C)数据操纵语言 D)数据控制语言
6.数据库系统的三级模式结构中,下列不属于三级模式的是( )。
A)内模式 B)抽象模式 C)外模式 D)概念模式
7.下面关于数据系统叙述正确的是( )。
A)数据库系统避免了一切冗余
B)数据库系统减少了数据冗余
C)数据库系统比文件系统能管理更多的数据
D)数据库系统中数据的一致性是指数据类型的一致
8.下列叙述中,错误的是( )。
A)数据库技术的根本目标是要解决数据共享的问题
B)数据库设计是指设计一个能满足用户要求,性能良好的数据库
C)数据库系统中,数据的物理结构必须与逻辑结构一致
D)数据库系统是一个独立的系统,但是需要操作系统的支持
9.在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是( )。
A)外模式 B)内模式 C)存储模式 D)模式
10.( )是存储在计算机内有结构的数据的集合。
A)数据库系统 B)数据库 C)数据库管理系统 D)数据结构
11.( )是位于用户与操作系统之间的一层数据管理软件。
A)数据库系统 B)数据库应用系统 C)数据库管理系统 D)数据库
12.数据库系统的三级模式中,表达物理数据库的是( )。
A)外模式 B)模式 C)用户模式 D)内模式
13.数据库中不仅能够保存数据本身,而且能保存数据之间的相互联系,保证了对数据修改的( )。
A)独立性 B)安全性 C)共享性 D)一致性
14.一个数据库系统的外模式( )
A)只能有一个 B)最多只能有一个 C)至少两个 D)可以有多个
15.在数据库中,数据的物理独立性是指( )
A)数据库与数据管理系统的相互独立
B)用户程序与DBMS的相互独立
C)用户的应用程序与存储磁盘上数据的相互独立
D)应用程序与数据库中数据的逻辑结果相互独立
16.为了保证数据库的逻辑独立性,需要修改的是( )
A)模式与外模式之间的映射 B)模式与内模式之间的映射
C)模式 D)三级模式
第 2 章 概念模型:设计题
4.经过需求分析可知,某医院病房管理系统中需要管理以下信息。
科室:科室名、科室地址、科室电话、科室医生姓名
病房:病房号、床位号、所属科室
医生:工作证号、姓名、性别、联系电话、职称、所属科室名
病人:病历号、姓名、性别、出生日期、诊断记录、主管医生、病房号
其中,一个科室有多个病房、多名医生,一个病房只属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人被多个科室治疗,但每次治疗的科室及主管医生只有一个。
根据以上需求分析的情况,设计该系统中的E-R图。
5.某企业的供应商、商品、仓库之间存在多对多的三元联系集“入库”,如图2-20所示。请将该三元联系转化为二元联系表达的E-R图。
图2-20 入库联系
6.假定一个销售公司的业务涉及如下基本信息:
职工:职工号、姓名、性别、电话、住址
商品:商品编号、商品名称、型号、供货商、进货单价、库存数量、销售单价
供货商:供货商编号、供货商名称、联系电话、通信地址
客户:客户编号、客户名称、联系电话、通信地址
假设每种商品可从多个供货商采购,每个供货商可供应多种商品;每个供货商的每种商品可销售给多个客户,每个客户可购买多个供货商提供的多种商品,客户购买时一次可以购买多种商品,也可能会重复购买某种商品。
请根据对销售公司业务的理解进行数据库R-R图设计。
7.大学期末考试安排系统,供学生和教师查询考试信息。要求如下:
(1)一门课程的所有开课班应安排在相同时间进行考试,不同课程的开课班可以安排在相同或不同的时间进行考试。
(2)一个开课班的学生可能安排在多个考场参加考试,一个考场也可以包含同一门课程的多个开课班的学生,但不允许将选修不同课程的学生安排在同一考场考试。
(3)一个考场根据参加考试的学生人数安排2至4名监考老师,其中指定一名老师为主监考老师。
(4)一个学生选修的多门课程不能安排在同一时间进行考试。
(5)一个老师不能安排在同一时间参加多个考场的监考。
(6)一个教室在同一时间不能安排多场考试。
(7)安排在同一考场参加考试的学生人数不能超过该教室的考试容量(假设一个教室的考试容量不会超过其上课容量的一半)。
请你在对教务处进行调研的基础上进行数据库设计,设计该考试安排的E-R图。
第 3 章 关系模型:单选题、设计题
1.关系代数运算是以( )为基础的运算。
A)关系运算 B)谓词运算 C)集合运算 D)代数运算
2.一个关系只有一个( )。
A)超码 B)外码 C)候选键 D)主键
3.在关系模型中,以下有关关系键的描述正确的是( )。
A)可以由任意多个属性组成
B)至多由一个属性组成
C)由一个或多个属性组成,其值能唯一标识关系中的一个元组
D)以上都不对
4.同一个关系模型的任两个元组值( )。
A)不能完全相同 B)可以完全相同
C)必须完全相同 D)以上都不对
5.关系模式的任何属性( )。
A)不可再分 B)可再分
C)命名在关系模式中可以不唯一 D)以上都不对
6.设有关系R和S,关系代数表达式R-(R-S)表示的是( )。
A)R∩S B)R∪S C)R-S D)R×S
7.关系运算中花费时间可能最长的是( )。
A)选取 B)投影 C)除 D)笛卡儿积
8.E-图向关系模型转换时,一个1:N联系转换为关系模式时,该关系模式的码是( )。
A)1端实体的主码 B)N端实体的主码
C)1端实体主码与N端实体主码组合 D)重新选取其他属性
9.将一个非多值联系的对多关系转换为一个独立模式时,应取( )为主码。
A)一个实体型的主码 B)多端实体型的主码
C)两个实体型的主码属性组合 D)联系型的全部属性
10.在E-R模型中,如果有3个不同的实体集、3个m:n联系,根据E-R模型转换为关系模型的规则,至少转换( )个关系模式。
A)4 B)5 C)6 D)7
5.请将第2章课后习题第4题所设计的E-R图转换为关系模式。
6.请将第2章课后习题第6题所设计的E-R图转换为关系模式。
7.请将第2章课后习题第7题所设计的E-R图转换为关系模式。
第 4 章 数据操纵与定义:填空题
1.如果关系R2的外部关系键X与关系R1的主关系键相符,则外部关系键X的每个值必须要么来自R1主键,要么设置为_______。
2.三种完整性约束中,能影响到DROP TABLE操作的是___________。
3.数据库文件最基本的两种类型是___________和___________。
4.设置关系R2的外键X与关系R1的主键X的参照关系,使用的命令语句是_________。
第 5 章 数据查询:SQL 应用题
(1) 查询在“清华大学出版社”出版、书名为“数据库原来”图书的作者名;
(2) 查询最近三年出版的跟“数据库”有关的图书名称、作者及出版日期;
(3) 查询“哈尔滨工业大学出版社”出版的各类图书的平均价格及最新出版日期;
(4) 查找书名为“高等数学”且价格比“人民邮电出版社”出版同名图书价格低的出版社名称、价格及出版日期;
(5) 查找书名为“大数据”且价格高于同名图书价格的图书编号、出版社及出版日期;
(6) 查询跟“张明明”同学专业情况相同的同学姓名及班级,如果张明明没有专业,则显示全部没有专业的同学
(7) 查询至少借阅了张明明同学所借阅的全部图书的学生姓名;
(8) 查询已经超期未归还的借阅信息;
(9) 查询每一个同学的借阅统计信息,包括借阅次数,最新借阅日期;
(10) 查询目前被借阅次数最多的图书名。
第 6 章 视图与索引:多选题、填空题
以下关于视图的描述中,不正确的是( )。
A) 视图是外模式 B) 使用视图可以加快查询语句的执行速度
C) 视图是虚表 D) 使用视图可以加快查询语句的编写
2.关于索引作用的描述,不正确的是( )。
A) 索引可以加快数据查询速度 B) 索引可以加快数据更新速度
C) 索引可以加快表之间的链接 D) 索引可以保证数据的唯一性
3.视图优点不包括( )。
A) 简化用户查询操作 B) 重新定制数据
C) 提高数据查询速度 D) 合并分割数据
4.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建( )。
A) 视图 B) 游标 C) 另一个表 D) 索引
5.索引项的顺序与表中记录的物理顺序一致的索引,称之为( )。
A) 复合索引 B) 唯一性索引 C) 聚集索引 D) 非聚集索引
6.下面关于索引的说法中正确的是( )。
A) 索引依附于表,因此索引数据也存储在表中
B) 索引只要创建了,就必然有用
C) 索引创建后,用户无法验证索引是否有效
D) 索引尽管删除,不会影响到所依附的表
1.按照索引记录的存放位置,索引可分为________和_________。
2.视图是虚表,其数据不进行存储,只在数据库中存储其_________。
3.创建视图时,若想限制对视图的更新,则需要在创建语句中加上_____________。
4.创建索引时,默认创建的索引属于_______结构。
第 7 章 关系规范化:计算题
设有关系模式R(A,B,C,D),函数依赖F={A→C,C→A,B→AC,D→AC,BD→A}
(1)求出R 的所有候选键。
(2)根据函数依赖关系,确定关系模式R 属于第几范式。
(4)将R分解为3NF。并说明有无保持无损连接性和函数依赖性。
4.设有关系模式R(A,B,C,D,E,F),函数依赖集F={A→BC,BC→A,BC,D→EF,E→C}。试问:关系模式R是否为3NF,并证明结论。
5.关系模式R(A,B,C,D,E,F),其函数依赖集F={AB→E,AC→F,AD→B,B→C,C→D}。求该关系模式的所有候选键。
第 9 章 数据库安全与备份还原:单选题
1.在数据库中,使用( )语句为用户授权。
A) REVOKE B) GRANT C) INSERT D) CREATE
2.下列有关MySQL角色的说法,错误的是( )。
A) 角色是权限的集合 B) 可以为一个用户授予多个角色
C) MySQL角色授予用户后立即生效 D) 删除角色可回收用户的角色
3.MySQL日志文件的各种类型中,用于记录数据操作信息的是( )。
A) 慢日志 B) 索引日志 C) 权限日志 D) 二进制日志
4.按备份时服务器是否在线进行划分,数据库备份不包括( )。
A) 热备份 B) 冰备份 C) 冷备份 D) 温备份
5.使用MySQL时,想要实时记录数据库中所有修改、插入和删除操作,需要启用( )。
A) 二进制日志 B) 通用日志 C) 错误日志 D) 慢查询日志
6.( )备份是在某一次完整备份的基础上,只备份其后数据的变化。
A) 比较 B) 区别 C) 增量 D) 二次
7.使用SQL定义事务的命令中,不包括( )。
A) BEGIN TRANSACTION B) COMMIT
C) ROLLBACK D) END TRANSACTION
8.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的( )。
A) 可靠性 B) 一致性 C) 完整性 D) 安全性
9.事务的隔离性是指( )。
A) 事务中包括的所有操作要么都做,要么都不做
B) 事务一旦提交,对数据库的改变是永久的
C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D) 事务必须是使数据库从一个一致性状态变到另一个一致性状态
10.事务的持久性是指( )。
A) 事务中包括的所有操作要么都做,要么都不做
B) 事务一旦提交,对数据库的改变是永久的
C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D) 事务必须是使数据库从一个一致性状态变到另一个一致性状态
11.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为( )。
A) 事务故障 B) 系统故障 C) 介质故障 D) 运行故障
12.日志文件是数据库重要的文件类型,其用于记录( )。
A) 程序运行过程 B) 数据查询操作
C) 对数据的所有更新操作 D) 程序执行的结果
13.在数据系统中,对存取权限的定义称为( )。
A) 命令 B) 授权 C) 定义 D) 审计
14.( )是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
A) 程序 B) 命令 C) 事务 D) 文件
15.安全性控制的防范对象是( )。
A) 合法用户 B) 不合语义的数据 C) 非法操作 D) 不正确的数据
第 10 章 数据库并发控制:单选题
1.数据库的并发操作,会导致各种数据不一致问题出现,这些问题不包括( )。
A) 丢失更新 B) 脏读 C) 不可重复读 D) 死锁
2.对并发操作若不加以控制,可能会带来数据库的( )问题。
A) 不安全 B) 死锁 C) 死机 D) 不一致
3.关系数据库中并发控制的基本单位是( )。
A) 事务 B) 进程 C) 程序 D) 脚本
4.解决并发操作带来的数据不一致性总是普遍采用( )。
A) 封锁 B) 恢复 C) 存取控制 D) 协商
5.若事务T对数据R已经加排它锁,则其他事务对数据R( )。
A) 可以加共享锁不能加排它锁 B) 不能加共享锁可以加排它锁
C) 可以加共享锁也可以加排它锁 D) 不能加任何锁
6.事务的隔离级别中,( )可以解决幻象读问题。
A) READ UNCOMMITTED B) READ COMMITTED
C) REPEATABLE READ D) SERIALIZABLE
7.关于“死锁”,下列说法中正确的是( )。
A) 死锁是操作系统中的问题,数据库操作中不存在
B) 在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库
C) 当两个用户竞争相同资源时不会发生死锁
D) 只有出现并发操作时,才有可能出现死锁
第 11 章 存储过程与触发器:多选题、填空题
1.MySQL中用户会话变量名的前面应加的字符是( )。
A) @ B) @@ C) # D) *
2.在MySQL编程中,可用于跳出循环的语句是( )。
A) BREAK B) CONTINUE C) EXIT D) LEAVE
3.以下说法中正确的是( )。
A) 存储过程是所在数据库中的一个对象
B) 存储过程必须有至少一个参数。
C) 调用有参函数时,实参的个数可根据实际需要进行个数调整
D) 要删除函数可以使用DELETE FUNCTION语句
4.下面有关触发器的叙述错误的是( )。
A) 触发器是一种特殊的存储过程 B) 触发器可以引用所在数据库以外的对象
C) 一个表上可以定义多个触发器 D) 触发器创建之后不能修改
5.创建存储过程应使用的语句是( )。
A) CREATE PROCEDURE B) DROP PROCEUDRE
C) CREATE FUNCTION D) DROP FUNCTION
6.下列关于触发器的描述正确的是( )。
A) 触发器被触发的时刻可以指定为BEFORE或者AFTER
B) 利用触发器可以维护数据的完整性
C) 删除一个表的同时也会删除该表上所有的触发器
D) 以上都正确
7.下列关于存储过程的优点描述中,不正确的是( )。
A) 有利于减少网络流量 B) 可以作为安全机制使用
C) 可以保证数据的完整性 D) 预编译之后,执行速度快
8.在关系数据库中,当数据表被修改时,系统会自动执行的数据库对象是( )。
A) 存储过程 B) 触发器 C) 视图 D) 其他数据库对象
9.下面关于触发器的描述,错误的是( )。
A) 触发器是一种特殊的存储过程,用户可以直接调用
B) 触发器在执行时会有跟触发器表结构相同的临时对象存在
C) 触发器可以用来定义比CHECK约束更复杂的规则
D) 删除触发器可以使用DROP TRIGGER命令
10.下面关于触发器功能的描述,错误的是( )。
A) 可以强化约束 B) 能够级联运行
C) 能够提高安全性 D) 可以调用存储过程
1.将存储过程myproc删除的语句是______。
2.将函数值从函数体中返回的语句是______。
3.从触发实际上看触发器分为_________和________两类。
4.语句块定义的关键词分别是_______和________。
5.触发器工作时,有两个特别重要的临时对象用于获取触发事件影响的记录,这两个对象分别是_________和________。
以下是解析:
第 1 章 概述:单选题
1.数据库(DB)、数据库系统(DBS)、数据库管理系统(DBMS)之间的关系是( )。
A)DB包含DBS和DBMS B)DBMS包含DB和DBS
C)DBS包含DB和DBMS D)没有任何关系
正确答案是:C) DBS包含DB和DBMS
解析:
- 数据库(DB, Database):是存储在计算机系统中有组织、可共享的数据集合。
- 数据库管理系统(DBMS, Database Management System):是用于创建、管理和操作数据库的软件系统,例如 MySQL、Oracle、SQL Server 等。
- 数据库系统(DBS, Database System):是指在计算机系统中引入数据库后的整个系统,通常包括数据库(DB)、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA)以及用户等。
因此,数据库系统(DBS)是一个更大的概念,它包含了数据库(DB)和数据库管理系统(DBMS)。
所以选项C) DBS包含DB和DBMS是正确的。
2.数据库系统的核心是( )。
A)数据模型 B)数据库管理系统 C)数据库 D)数据库管理员
正确答案是:B) 数据库管理系统
解析:
数据库系统(DBS)由多个部分组成,包括:
- 数据库(DB):存储数据的集合;
- 数据库管理系统(DBMS):管理数据库的软件系统;
- 应用程序:用户通过程序与数据库交互;
- 数据库管理员(DBA):负责管理和维护数据库系统;
- 用户:使用数据库系统的人员。
其中,数据库管理系统(DBMS)是数据库系统的核心,因为:
- 它负责数据的存储、查询、更新、安全、完整性、并发控制、恢复等关键功能;
- 数据库本身只是静态的数据集合,没有 DBMS 就无法被有效管理和使用;
- DBMS 是连接用户/应用程序与数据库之间的桥梁。
因此,选项 B) 数据库管理系统是正确答案。
3.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指( )。
A)数据与程序独立存放
B)不同的数据被存放在不同的文件中
C)不同的数据只能被对应的应用程序所使用
D)以上三种说法都不对
正确答案是:D) 以上三种说法都不对
解析:
数据独立性是数据库系统的重要特性之一,指的是应用程序与数据的存储结构相互独立,即:
- 当数据的存储结构(物理结构)或逻辑结构发生变化时,应用程序不需要修改。
数据独立性分为两个层次:
物理数据独立性:
指用户的应用程序不依赖于数据的物理存储方式(如存储设备、存取方法等)。即使数据库的物理存储结构改变(比如从磁盘A移到磁盘B,或使用了新的索引结构),应用程序仍可正常运行。逻辑数据独立性:
指应用程序不受数据库逻辑结构(如表结构、字段增减等)变化的影响。例如,在不改变外模式(用户视图)的前提下,内模式或概念模式的变化不会影响到用户程序。
各选项分析:
A) 数据与程序独立存放
→ 这只是物理上的分离,并非“数据独立性”的定义。B) 不同的数据被存放在不同的文件中
→ 这是文件组织方式,与数据独立性无关。C) 不同的数据只能被对应的应用程序所使用
→ 这反而违背了数据库共享性的特点。D) 以上三种说法都不对
→正确,因为 A、B、C 都没有准确描述“数据独立性”的含义。
✅ 因此,正确答案是:D) 以上三种说法都不对。
4.下列关于数据库的正确叙述是( )。
A)数据库中只存在数据项之间的联系
B)数据库的数据项之间和记录之间都存在联系
C)数据库的数据项之间无联系,记录之间存在联系
D)数据库的数据项之间和记录之间都不存在联系
正确答案是:B) 数据库的数据项之间和记录之间都存在联系
解析:
数据库(尤其是关系型数据库)的核心特点之一就是数据之间的联系,这种联系体现在多个层次:
记录之间存在联系
- 例如:学生表中的一条记录(代表一个学生)与选课表中的多条记录(该学生选的课程)通过“学号”关联。
- 这是通过外键等机制实现的表与表之间(即记录之间)的联系。
数据项之间也存在联系
- 在同一个记录内部,各个字段(数据项)共同描述一个实体,它们在语义上是相关的。
- 更重要的是,在数据模型设计阶段(如E-R模型),属性(数据项)之间可能存在依赖关系(如函数依赖),这在规范化理论中有体现。
- 例如:在员工表中,“部门编号”和“部门名称”可能原本在同一表中,但因存在依赖关系(部门编号 → 部门名称),会被拆分到不同表中以减少冗余——这本身就说明数据项之间存在联系。
而传统的文件系统中,数据通常是孤立的,记录之间、数据项之间缺乏显式的联系;而数据库系统正是为了解决这一问题,引入了结构化模型来表达这些联系。
各选项分析:
- A)只存在数据项之间的联系 → ❌ 忽略了记录(元组)之间的联系。
- B)数据项之间和记录之间都存在联系 → ✅ 正确。
- C)数据项无联系,记录有联系 → ❌ 数据项之间也有语义或逻辑联系。
- D)都不存在联系 → ❌ 完全违背数据库的基本特性。
✅ 因此,正确答案是:B) 数据库的数据项之间和记录之间都存在联系。
5.在DBMS提供的数据语言中,负责数据的模式定义与数据的物理存取构建的是( )。
A)数据定义语言 B)数据转换语言 C)数据操纵语言 D)数据控制语言
正确答案是:A) 数据定义语言
解析:
数据库管理系统(DBMS)提供的数据语言通常包括以下几类:
数据定义语言(DDL, Data Definition Language)
- 用于定义数据库的结构或模式(schema)。
- 功能包括:
- 定义数据库、表、视图、索引等对象;
- 定义数据的逻辑结构(如字段名、类型、约束);
- 也涉及物理存储结构的构建,例如指定存储位置、索引方式、聚簇等(尤其在某些DBMS中,DDL可控制物理存取路径)。
- 常见语句:
CREATE,ALTER,DROP
数据操纵语言(DML, Data Manipulation Language)
- 用于查询和修改数据(增删改查)。
- 如:
SELECT,INSERT,UPDATE,DELETE
数据控制语言(DCL, Data Control Language)
- 用于控制访问权限和事务管理。
- 如:
GRANT,REVOKE,COMMIT,ROLLBACK
“数据转换语言”并不是标准的数据库语言分类,属于干扰项。
题干关键词:
“负责数据的模式定义与数据的物理存取构建”
- 模式定义→ 明确属于 DDL;
- 物理存取构建(如创建索引、指定存储结构)→ 通常也由 DDL 语句完成(例如
CREATE INDEX、CREATE TABLE ... STORAGE (...)等)。
因此,这两项功能都属于数据定义语言(DDL)的职责范围。
✅ 正确答案:A) 数据定义语言
6.数据库系统的三级模式结构中,下列不属于三级模式的是( )。
A)内模式 B)抽象模式 C)外模式 D)概念模式
正确答案是:B) 抽象模式
解析:
数据库系统的三级模式结构是 ANSI/SPARC 提出的标准体系结构,用于实现数据的抽象和独立性。这三级模式分别是:
外模式(External Schema)
- 又称用户模式或子模式;
- 是数据库用户(应用程序或终端用户)能够看见和使用的局部逻辑结构;
- 一个数据库可以有多个外模式。
概念模式(Conceptual Schema)
- 又称逻辑模式或全局模式;
- 是对整个数据库的全局逻辑结构的描述;
- 独立于具体存储细节和用户视图,是所有用户的公共数据视图;
- 一个数据库只有一个概念模式。
内模式(Internal Schema)
- 又称存储模式;
- 描述数据在存储介质上的物理结构和存取方法(如索引、哈希、文件组织等);
- 一个数据库只有一个内模式。
选项分析:
- A) 内模式→ ✅ 属于三级模式;
- B) 抽象模式→ ❌不是标准术语,数据库三级模式中没有“抽象模式”这一说法;
- C) 外模式→ ✅ 属于三级模式;
- D) 概念模式→ ✅ 属于三级模式(也叫逻辑模式)。
虽然“抽象”是三级模式设计的思想(通过抽象屏蔽底层细节),但“抽象模式”本身不是其中的一级。
✅ 正确答案:B) 抽象模式
7.下面关于数据系统叙述正确的是( )。
A)数据库系统避免了一切冗余
B)数据库系统减少了数据冗余
C)数据库系统比文件系统能管理更多的数据
D)数据库系统中数据的一致性是指数据类型的一致
正确答案是:B) 数据库系统减少了数据冗余
逐项解析:
A)数据库系统避免了一切冗余
❌错误。
数据库系统通过规范化设计等手段减少数据冗余,但不能完全避免冗余。
- 有时为了提高查询性能(如反规范化)、支持分布式系统或满足特定业务需求,会有意保留部分冗余。
- 所以“避免一切冗余”说法过于绝对,不正确。
B)数据库系统减少了数据冗余
✅正确。
这是数据库系统的重要优点之一。
- 通过集中管理、数据共享和规范化设计,显著降低了传统文件系统中常见的重复存储问题。
- 虽然不能完全消除,但确实减少了冗余。
C)数据库系统比文件系统能管理更多的数据
❌错误。
- 文件系统在理论上也可以管理大量数据(如操作系统文件可达TB级);
- 数据库系统的优势不在于容量上限,而在于对数据的结构化管理、一致性、并发控制、安全性、完整性约束等;
- 现代数据库确实能高效管理海量数据,但这不是与文件系统的本质区别,且“能管理更多”表述不准确。
D)数据库系统中数据的一致性是指数据类型的一致
❌错误。
- 数据一致性在数据库中通常指事务的一致性(Consistency),即事务执行前后,数据库必须从一个一致状态转移到另一个一致状态,满足所有完整性约束(如主键、外键、唯一性、业务规则等);
- 它不仅限于数据类型一致,而是更广泛的语义和逻辑正确性。
结论:
✅ 正确答案:B) 数据库系统减少了数据冗余
8.下列叙述中,错误的是( )。
A)数据库技术的根本目标是要解决数据共享的问题
B)数据库设计是指设计一个能满足用户要求,性能良好的数据库
C)数据库系统中,数据的物理结构必须与逻辑结构一致
D)数据库系统是一个独立的系统,但是需要操作系统的支持
正确答案是:C) 数据库系统中,数据的物理结构必须与逻辑结构一致
逐项解析:
A)数据库技术的根本目标是要解决数据共享的问题
✅正确。
- 数据库技术的核心目标之一就是实现数据共享、减少冗余、提高数据一致性与完整性。
- 相比文件系统中数据孤立、重复存储的问题,数据库通过集中管理支持多用户共享访问。
B)数据库设计是指设计一个能满足用户要求,性能良好的数据库
✅正确。
- 数据库设计包括需求分析、概念设计(如E-R图)、逻辑设计(如关系模式)、物理设计(如索引、存储)等阶段;
- 目标正是构建一个功能满足用户需求、性能优良、易于维护的数据库系统。
C)数据库系统中,数据的物理结构必须与逻辑结构一致
❌错误—— 这是本题要选的错误叙述。
- 数据库系统的重要特性之一是数据独立性,其中:
- 物理独立性:逻辑结构(如表结构)不变时,物理存储结构(如索引方式、存储位置)可以改变;
- 逻辑独立性:应用程序不因逻辑结构的调整(在一定范围内)而失效。
- 因此,物理结构和逻辑结构不需要“一致”,而是通过映射机制(如模式/内模式映射)实现分离。
- 正是因为二者可以不一致,才实现了灵活性和可维护性。
D)数据库系统是一个独立的系统,但是需要操作系统的支持
✅正确。
- DBMS 是一个大型软件系统,但它运行在操作系统之上,依赖 OS 提供的:
- 文件管理
- 内存管理
- 进程/线程调度
- I/O 控制等服务
- 所以它“相对独立”,但离不开操作系统支持。
结论:
题目问的是“错误的是”,只有C 项表述错误。
✅ 正确答案:C) 数据库系统中,数据的物理结构必须与逻辑结构一致
9.在数据库的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是( )。
A)外模式 B)内模式 C)存储模式 D)模式
正确答案是:D) 模式
解析:
数据库的三级模式结构包括:
外模式(External Schema)
- 用户视图,描述部分数据的逻辑结构;
- 面向特定用户或应用程序;
- 一个数据库可以有多个外模式。
模式(Schema)—— 也称为概念模式或逻辑模式
- 描述数据库中全体数据的全局逻辑结构和特征;
- 是所有用户的公共数据视图;
- 一个数据库只有一个模式;
- 包括所有实体、属性、关系、完整性约束等。
内模式(Internal Schema)—— 也称为存储模式
- 描述数据的物理存储结构和存取方法;
- 如文件组织、索引结构、存储位置等;
- 一个数据库只有一个内模式。
选项分析:
- A) 外模式→ 描述局部用户视图,❌ 不符合“全体数据”;
- B) 内模式→ 描述物理存储,❌ 不是逻辑结构;
- C) 存储模式→ 是内模式的别名,❌ 同上;
- D) 模式→ ✅ 正确!正是描述全体数据的全局逻辑结构和特征。
✅ 正确答案:D) 模式
10.( )是存储在计算机内有结构的数据的集合。
A)数据库系统 B)数据库 C)数据库管理系统 D)数据结构
正确答案是:B) 数据库
解析:
题干:“是存储在计算机内有结构的数据的集合” —— 这正是数据库(Database, DB)的标准定义。
各选项含义:
A) 数据库系统(DBS)
指的是包括数据库、数据库管理系统(DBMS)、应用程序、用户、DBA 等在内的整个系统,范围比“数据集合”大得多。❌B) 数据库(DB)
✅ 正确。
定义:长期存储在计算机内、有组织的、可共享的、有结构的数据集合。
例如:一个学校的学生信息表、课程表等组成的整体数据集合。C) 数据库管理系统(DBMS)
是管理数据库的软件系统(如 MySQL、Oracle),不是数据本身。❌D) 数据结构
是计算机科学中关于数据组织方式的概念(如链表、树、图等),属于程序设计范畴,不是“存储在计算机内的数据集合”。❌
✅ 因此,正确答案是:B) 数据库
11.( )是位于用户与操作系统之间的一层数据管理软件。
A)数据库系统 B)数据库应用系统 C)数据库管理系统 D)数据库
正确答案是:C) 数据库管理系统
解析:
题干:“是位于用户与操作系统之间的一层数据管理软件” —— 这是对数据库管理系统(DBMS, Database Management System)的经典描述。
各选项分析:
A) 数据库系统(DBS)
指的是整个系统,包括数据库、DBMS、应用程序、用户、DBA 等,不是“一层软件”,而是一个完整体系。❌B) 数据库应用系统
是基于 DBMS 开发的面向特定业务的应用程序(如教务系统、银行系统),位于 DBMS 之上,不是介于用户与操作系统之间的管理层。❌C) 数据库管理系统(DBMS)✅
- 是系统软件;
- 位于用户(或应用程序)与操作系统之间;
- 负责数据的存储、查询、更新、安全、完整性、并发控制、恢复等;
- 屏蔽了底层操作系统的复杂性,为用户提供统一的数据访问接口。
- 典型例子:MySQL、Oracle、SQL Server、PostgreSQL 等。
D) 数据库(DB)
是数据的集合,不是软件,更不具有“管理”功能。❌
✅ 正确答案:C) 数据库管理系统
12.数据库系统的三级模式中,表达物理数据库的是( )。
A)外模式 B)模式 C)用户模式 D)内模式
正确答案是:D) 内模式
解析:
数据库系统的三级模式结构包括:
外模式(External Schema)
- 又称用户模式或子模式;
- 是用户看到的数据视图,描述局部逻辑结构;
- 面向应用程序或终端用户。
模式(Schema)
- 又称概念模式或逻辑模式;
- 描述数据库中全体数据的全局逻辑结构;
- 是所有用户的公共视图。
内模式(Internal Schema)
- 又称存储模式;
- 描述数据在存储介质上的物理结构和存取方法;
- 包括:
- 文件组织方式(如堆文件、索引文件)
- 存储位置
- 索引结构
- 数据压缩/加密方式等
- 直接对应实际的物理数据库存储。
题干关键词:
“表达物理数据库的是”
这明确指向内模式,因为只有内模式描述了数据在物理存储层面的组织形式。
选项分析:
- A) 外模式→ 用户视图,逻辑层面,❌
- B) 模式→ 全局逻辑结构,❌
- C) 用户模式→ 是外模式的别名,❌
- D) 内模式→ ✅ 正确,表达物理数据库
✅ 正确答案:D) 内模式
13.数据库中不仅能够保存数据本身,而且能保存数据之间的相互联系,保证了对数据修改的( )。
A)独立性 B)安全性 C)共享性 D)一致性
正确答案是:D) 一致性
解析:
题干关键句:
“数据库中不仅能够保存数据本身,而且能保存数据之间的相互联系,保证了对数据修改的( )。”
数据库通过完整性约束、外键、触发器、事务机制等手段,维护数据之间的逻辑关系(如一对多、引用关系等)。当数据被修改时,这些机制确保:
- 不破坏已定义的数据关联;
- 不出现“孤儿记录”(如学生选课记录中的学号在学生表中不存在);
- 数据始终满足预设的业务规则或语义约束。
这正是数据一致性(Consistency)的体现。
各选项辨析:
A) 独立性
指应用程序与数据的逻辑/物理结构相互独立(如模式改变不影响程序),与“数据之间的联系”无直接关系。❌B) 安全性
指防止未授权访问、保护数据不被非法使用,属于权限控制范畴。❌C) 共享性
指多个用户或应用可同时使用同一数据,是数据库的优点之一,但不直接由“保存数据间联系”来保证。❌D) 一致性✅
正确。
数据库通过维护实体完整性、参照完整性、用户定义完整性等,确保任何数据修改都不会破坏数据之间的语义联系,从而保持一致性。
在事务 ACID 特性中,“C”即 Consistency(一致性),强调事务执行前后数据库必须处于一致状态。
✅ 正确答案:D) 一致性
14.一个数据库系统的外模式( )
A)只能有一个 B)最多只能有一个 C)至少两个 D)可以有多个
正确答案是:D) 可以有多个
解析:
在数据库系统的三级模式结构中:
- 外模式(External Schema),也称为用户模式或子模式,是数据库用户(或应用程序)所看到的数据视图。
- 它是对概念模式(全局逻辑结构)的局部描述,只包含用户关心的部分数据。
为什么可以有多个?
- 不同的用户或应用可能关注数据库中不同的数据部分;
- 例如:
- 教务系统中,学生只能查看自己的成绩和课表;
- 教师可以查看所教课程的学生成绩;
- 管理员能看到所有信息。
- 这些不同的视图就是不同的外模式。
因此,一个数据库系统可以有多个外模式,以满足不同用户的需求。
选项分析:
- A) 只能有一个→ ❌ 错误,限制过死;
- B) 最多只能有一个→ ❌ 同上;
- C) 至少两个→ ❌ 不一定,理论上也可以只有一个用户视图;
- D) 可以有多个→ ✅ 正确,符合数据库设计原则。
✅ 正确答案:D) 可以有多个
15.在数据库中,数据的物理独立性是指( )
A)数据库与数据管理系统的相互独立
B)用户程序与DBMS的相互独立
C)用户的应用程序与存储磁盘上数据的相互独立
D)应用程序与数据库中数据的逻辑结果相互独立
正确答案是:C) 用户的应用程序与存储磁盘上数据的相互独立
解析:
数据的物理独立性是数据库系统中数据独立性的一个重要方面,其定义是:
当数据库的内模式(即数据的物理存储结构)发生变化时,不影响其概念模式(逻辑结构),从而也不影响用户的应用程序。
换句话说,应用程序不需要知道数据在磁盘上是如何存储的(比如用什么文件结构、索引方式、存储位置等),即使这些物理细节改变了,程序依然可以正常运行。
选项分析:
A) 数据库与数据管理系统的相互独立
❌ 概念错误。数据库是由 DBMS 管理的,二者不是“相互独立”的关系。B) 用户程序与 DBMS 的相互独立
❌ 用户程序需要通过 DBMS 访问数据,依赖 DBMS 提供的接口,不是“相互独立”。C) 用户的应用程序与存储磁盘上数据的相互独立
✅正确!
这正是物理独立性的核心含义:应用程序不依赖于数据的物理存储方式。D) 应用程序与数据库中数据的逻辑结果相互独立
❌ 这描述的是逻辑独立性(当逻辑结构如表结构局部变化时,外模式可保持不变,从而不影响程序),而非物理独立性。
补充说明:
- 物理独立性↔ 内模式变化不影响概念模式和外模式;
- 逻辑独立性↔ 概念模式变化(在一定范围内)不影响外模式和应用程序。
✅ 正确答案:C) 用户的应用程序与存储磁盘上数据的相互独立
16.为了保证数据库的逻辑独立性,需要修改的是( )
A)模式与外模式之间的映射 B)模式与内模式之间的映射
C)模式 D)三级模式
正确答案是:A) 模式与外模式之间的映射
解析:
数据库的逻辑独立性是指:
当数据库的全局逻辑结构(即“模式”)发生改变时,用户的局部视图(即“外模式”)可以保持不变,从而应用程序无需修改。
为了实现这一点,DBMS 通过“外模式/模式映射”(External Schema / Conceptual Schema Mapping)来建立外模式与概念模式之间的对应关系。
- 当模式发生变化(例如增加一个字段、拆分表等),
- DBA 可以调整外模式与模式之间的映射,
- 使得外模式保持不变,
- 从而用户程序不受影响→ 实现了逻辑独立性。
各选项分析:
A) 模式与外模式之间的映射✅
正确!这是实现逻辑独立性的关键机制。B) 模式与内模式之间的映射❌
这个映射用于实现物理独立性(当内模式/存储结构变化时,不影响模式)。C) 模式❌
修改模式本身是变化的源头,不是“为了保证独立性而修改”的对象。D) 三级模式❌
三级模式是整体架构,不需要整体修改来保证逻辑独立性。
总结:
- 逻辑独立性← 通过外模式/模式映射实现;
- 物理独立性← 通过模式/内模式映射实现。
✅ 正确答案:A) 模式与外模式之间的映射
第 2 章 概念模型:设计题
4.经过需求分析可知,某医院病房管理系统中需要管理以下信息。
科室:科室名、科室地址、科室电话、科室医生姓名
病房:病房号、床位号、所属科室
医生:工作证号、姓名、性别、联系电话、职称、所属科室名
病人:病历号、姓名、性别、出生日期、诊断记录、主管医生、病房号
其中,一个科室有多个病房、多名医生,一个病房只属于一个科室,一个医生只属于一个科室,但可负责多个病人的诊治,一个病人被多个科室治疗,但每次治疗的科室及主管医生只有一个。
根据以上需求分析的情况,设计该系统中的E-R图。
根据题意,我们来逐步分析实体、属性和它们之间的联系,最终设计出符合要求的E-R 图(实体-联系图)。
一、识别实体(Entity)
从需求中可提取以下实体:
- 科室(Department)
- 病房(Ward)
- 医生(Doctor)
- 病人(Patient)
二、各实体的属性(Attributes)
科室(Department)
- 科室名(主键)
- 科室地址
- 科室电话
- (注:科室医生姓名不是科室的属性,而是属于“医生”实体,此处是描述性信息)
病房(Ward)
- 病房号(主键)
- 床位号(可作为复合主键的一部分,或作为属性)
- 所属科室名(外键,关联科室)
医生(Doctor)
- 工作证号(主键)
- 姓名
- 性别
- 联系电话
- 职称
- 所属科室名(外键)
病人(Patient)
- 病历号(主键)
- 姓名
- 性别
- 出生日期
- 诊断记录
- 主管医生(外键 → 医生的工作证号)
- 病房号(外键 → 病房的病房号)
三、实体之间的联系(Relationships)
根据题干描述:
- 一个科室有多个病房、多名医生
- 一个病房只属于一个科室
- 一个医生只属于一个科室
- 一个医生可负责多个病人
- 一个病人被多个科室治疗,但每次治疗的科室及主管医生只有一个
这个最后一句很关键:
“一个病人被多个科室治疗” → 说明病人可能在不同时间段由不同科室收治;
“但每次治疗的科室及主管医生只有一个” → 每次住院/就诊记录对应一个科室 + 一个主管医生。
这暗示:病人与科室/医生的关系应通过“就诊”或“住院”事件来建模,但题目未明确引入“就诊”实体。
然而,现有属性中:
- 病人有“主管医生”和“病房号”
- 病房属于一个科室
- 医生属于一个科室
因此,当前模型隐含“一次住院”场景,即每个病人记录代表一次住院,关联一个病房、一个主管医生,从而确定一个科室。
但题干又说:“一个病人被多个科室治疗”——意味着一个病人(病历号)可有多条住院记录。
→ 这说明:“病人”实体若以病历号为主键,则不能直接持有“病房号”和“主管医生”,否则无法表示多次住院。
然而,题目明确给出:
病人:病历号、姓名、…、主管医生、病房号
这说明题目简化了模型,将“病人”视为当前住院病人,或者允许“主管医生”“病房号”为空/可更新。
为符合题目要求,我们按题面直接建模,不引入额外实体(如“住院记录”),但注意联系的基数。
四、联系的基数(Cardinality)
科室 —— 病房
- 1 个科室 → 多个病房(1:N)
- 1 个病房 → 1 个科室
→科室 (1) —— (N) 病房
科室 —— 医生
- 1 个科室 → 多名医生(1:N)
- 1 个医生 → 1 个科室
→科室 (1) —— (N) 医生
医生 —— 病人
- 1 个医生 → 多个病人(1:N)
- 1 个病人 → 1 个主管医生
→医生 (1) —— (N) 病人
病房 —— 病人
- 1 个病房(含多个床位)→ 可住多个病人(1:N)
- 1 个病人 → 1 个病房
→病房 (1) —— (N) 病人
注意:虽然“床位号”存在,但若每个床位只能住一人,则病人与床位是一对一。但题目未强调床位唯一绑定,故按病房整体处理。
- 病人 —— 科室?
- 题干说“一个病人被多个科室治疗”,但当前模型中病人通过“病房”或“主管医生”间接关联到科室。
- 由于病房和医生都唯一属于一个科室,所以病人当前只关联一个科室。
- 若需支持历史多科室,应引入“就诊”弱实体,但题目未要求,暂不建直接联系。
五、E-R 图结构描述(文字版)
[科室] | 科室名(PK), 科室地址, 科室电话 | |---(1)-----<拥有>-----(N)--- [病房] | | 病房号(PK), 床位号, 所属科室名(FK) | |---(1)-----<雇佣>-----(N)--- [医生] | 工作证号(PK), 姓名, 性别, 联系电话, 职称, 所属科室名(FK) | |---(1)-----<负责>-----(N)--- [病人] | 病历号(PK), 姓名, 性别, 出生日期, | 诊断记录, 主管医生(FK), 病房号(FK)- 所有联系均为一对多(1:N)
- 主键(PK)、外键(FK)如上标注
- 实体用矩形,属性用椭圆(或列在实体框内),联系用菱形(在手绘图中)
六、补充说明(关于“病人被多个科室治疗”)
若需严格支持“一个病人被多个科室治疗”,建议引入弱实体“住院记录”(Stay):
- Stay: 住院ID(部分键)、入院日期、病历号(来自病人)、病房号、主管医生
- 病人 (1) —— (N) 住院记录
- 住院记录关联病房、医生 → 从而关联科室
但题目未要求此复杂度,且属性已固定分配给“病人”,因此按题面直接建模即可。
最终答案:E-R 图包含以下要素
- 4 个实体:科室、病房、医生、病人
- 3 个联系:
- 科室 —— 病房(1:N)
- 科室 —— 医生(1:N)
- 医生 —— 病人(1:N)
- 病房 —— 病人(1:N)【也可保留】
在标准 E-R 图中,可将“病房-病人”联系画出,以反映床位分配。
✅ 设计完成。如需图形化表示,可用工具(如 draw.io、PowerDesigner)绘制,实体为矩形,联系为菱形,属性为椭圆,并标注基数(1 或 N)。
5.某企业的供应商、商品、仓库之间存在多对多的三元联系集“入库”,如图2-20所示。请将该三元联系转化为二元联系表达的E-R图。
要将三元联系“入库”(供应商、商品、仓库之间的多对多联系)转化为仅含二元联系的E-R图,标准做法是:引入一个关联实体(也称“复合实体”或“联系实体”)来表示该三元联系,然后通过多个二元联系将其与原三个实体连接。
一、原始情况分析
三个实体:
- 供应商(Supplier)
- 商品(Product)
- 仓库(Warehouse)
一个三元联系:
- “入库”(StockIn):表示某供应商向某仓库供应某种商品(可能还包括数量、日期等属性)。
- 是多对多对多的联系(即任意供应商可向任意仓库供应任意商品)。
三元联系在实际数据库实现中无法直接用关系模型表达,必须分解。
二、转化方法:引入关联实体
步骤:
创建一个新的实体,命名为“入库记录”(或 StockInRecord)。
- 它代表一次具体的“入库”事件。
- 可包含原三元联系的属性,如:入库数量、入库日期、批次号等(若题目未提,可不加,但结构上支持)。
将原三元联系拆分为三个二元联系:
- 入库记录 —— 供应商(多对一)
- 入库记录 —— 商品(多对一)
- 入库记录 —— 仓库(多对一)
每个“入库记录”实例唯一对应一个供应商、一个商品、一个仓库。
三、转化后的E-R图结构(文字描述)
[供应商] ←(1)──(N)─ [入库记录] ─(N)──(1)→ [商品] │ │ (N) │ ↓ [仓库]更准确地说:
- 入库记录(StockInRecord)
- 属性(可选):入库ID(主键)、数量、日期等
- 二元联系:
- 由…供应:入库记录 → 供应商(N:1)
- 包含…商品:入库记录 → 商品(N:1)
- 存入…仓库:入库记录 → 仓库(N:1)
每个“入库记录”必须关联一个供应商、一个商品、一个仓库。
四、说明
- 这种转化保留了原三元联系的语义完整性;
- 所有联系均为二元联系,符合题目要求;
- 在后续转为关系模式时,“入库记录”将成为一张独立的关系表,其主键通常由三个外键(供应商ID、商品ID、仓库ID)组合而成,或使用单独的代理主键。
五、总结
✅转化方法:
将三元联系“入库”替换为一个关联实体“入库记录”,并通过三个二元联系分别连接到供应商、商品、仓库。
这样就得到了仅含二元联系的E-R图,既符合E-R建模规范,也为后续关系数据库设计奠定基础。
6.假定一个销售公司的业务涉及如下基本信息:
职工:职工号、姓名、性别、电话、住址
商品:商品编号、商品名称、型号、供货商、进货单价、库存数量、销售单价
供货商:供货商编号、供货商名称、联系电话、通信地址
客户:客户编号、客户名称、联系电话、通信地址
假设每种商品可从多个供货商采购,每个供货商可供应多种商品;每个供货商的每种商品可销售给多个客户,每个客户可购买多个供货商提供的多种商品,客户购买时一次可以购买多种商品,也可能会重复购买某种商品。
请根据对销售公司业务的理解进行数据库ER图设计。
7.大学期末考试安排系统,供学生和教师查询考试信息。要求如下:
(1)一门课程的所有开课班应安排在相同时间进行考试,不同课程的开课班可以安排在相同或不同的时间进行考试。
(2)一个开课班的学生可能安排在多个考场参加考试,一个考场也可以包含同一门课程的多个开课班的学生,但不允许将选修不同课程的学生安排在同一考场考试。
(3)一个考场根据参加考试的学生人数安排2至4名监考老师,其中指定一名老师为主监考老师。
(4)一个学生选修的多门课程不能安排在同一时间进行考试。
(5)一个老师不能安排在同一时间参加多个考场的监考。
(6)一个教室在同一时间不能安排多场考试。
(7)安排在同一考场参加考试的学生人数不能超过该教室的考试容量(假设一个教室的考试容量不会超过其上课容量的一半)。
请你在对教务处进行调研的基础上进行数据库设计,设计该考试安排的E-R图。
第 3 章 关系模型:单选题、设计题
1.关系代数运算是以( )为基础的运算。
A)关系运算 B)谓词运算 C)集合运算 D)代数运算
2.一个关系只有一个( )。
A)超码 B)外码 C)候选键 D)主键
3.在关系模型中,以下有关关系键的描述正确的是( )。
A)可以由任意多个属性组成
B)至多由一个属性组成
C)由一个或多个属性组成,其值能唯一标识关系中的一个元组
D)以上都不对
4.同一个关系模型的任两个元组值( )。
A)不能完全相同 B)可以完全相同
C)必须完全相同 D)以上都不对
5.关系模式的任何属性( )。
A)不可再分 B)可再分
C)命名在关系模式中可以不唯一 D)以上都不对
6.设有关系R和S,关系代数表达式R-(R-S)表示的是( )。
A)R∩S B)R∪S C)R-S D)R×S
7.关系运算中花费时间可能最长的是( )。
A)选取 B)投影 C)除 D)笛卡儿积
8.E-图向关系模型转换时,一个1:N联系转换为关系模式时,该关系模式的码是( )。
A)1端实体的主码 B)N端实体的主码
C)1端实体主码与N端实体主码组合 D)重新选取其他属性
9.将一个非多值联系的对多关系转换为一个独立模式时,应取( )为主码。
A)一个实体型的主码 B)多端实体型的主码
C)两个实体型的主码属性组合 D)联系型的全部属性
10.在E-R模型中,如果有3个不同的实体集、3个m:n联系,根据E-R模型转换为关系模型的规则,至少转换( )个关系模式。
A)4 B)5 C)6 D)7
以下是各题的正确答案及详细解析:
1. 关系代数运算是以( )为基础的运算。
A) 关系运算 B) 谓词运算 C) 集合运算 D) 代数运算
✅答案:C) 集合运算
解析:
关系代数是以集合运算(如并、交、差)为基础,并结合专门的关系操作(如选择、投影、连接等)构成的运算体系。因为关系本身是元组的集合,所以其运算基础是集合论。
2. 一个关系只有一个( )。
A) 超码 B) 外码 C) 候选键 D) 主键
✅答案:D) 主键
解析:
- 一个关系可以有多个超码、多个候选键;
- 主键是从候选键中人为选定的一个,用于唯一标识元组;
- 因此,一个关系只能有一个主键(尽管可能有多个候选键)。
3. 在关系模型中,以下有关关系键的描述正确的是( )。
A) 可以由任意多个属性组成
B) 至多由一个属性组成
C) 由一个或多个属性组成,其值能唯一标识关系中的一个元组
D) 以上都不对
✅答案:C)
解析:
关系键(如候选键、主键)是由一个或多个属性组成的最小属性集,其值能唯一标识一个元组,且不含多余属性(即满足“最小性”)。选项 C 正确描述了这一定义。
4. 同一个关系模型的任两个元组值( )。
A) 不能完全相同 B) 可以完全相同 C) 必须完全相同 D) 以上都不对
✅答案:A) 不能完全相同
解析:
关系模型基于集合概念,而集合中不允许重复元素。因此,关系中任意两个元组必须不完全相同(即主键或候选键保证唯一性,即使无显式主键,理论上也不允许重复元组)。
5. 关系模式的任何属性( )。
A) 不可再分 B) 可再分 C) 命名在关系模式中可以不唯一 D) 以上都不对
✅答案:A) 不可再分
解析:
这是关系模型的第一范式(1NF)要求:每个属性都是原子的、不可再分的数据项。同时,属性名在同一个关系模式中必须唯一。
6. 设有关系R和S,关系代数表达式 R - (R - S) 表示的是( )。
A) R∩S B) R∪S C) R-S D) R×S
✅答案:A) R∩S
解析:
利用集合恒等式:
R−(R−S)=R∩S R - (R - S) = R \cap SR−(R−S)=R∩S
- $ R - S $:属于 R 但不属于 S 的元组;
- 再用 R 减去这部分,剩下的就是 R 和 S 的公共部分 →交集。
7. 关系运算中花费时间可能最长的是( )。
A) 选取 B) 投影 C) 除 D) 笛卡儿积
✅答案:D) 笛卡儿积
解析:
- 笛卡儿积(×)的结果元组数为 $ |R| \times |S| $,当两个关系较大时,结果爆炸式增长,计算和存储开销极大;
- 其他运算(如选择、投影)通常是线性扫描;
- 除法虽复杂,但一般基于已有连接或选择,不如笛卡儿积开销大。
8. E-R图向关系模型转换时,一个1:N联系转换为关系模式时,该关系模式的码是( )。
A) 1端实体的主码
B) N端实体的主码
C) 1端实体主码与N端实体主码组合
D) 重新选取其他属性
✅答案:B) N端实体的主码
解析:
- 对于 1:N 联系,通常将1端的主码作为外键加入N端对应的关系模式中;
- 新关系模式(若独立存在)的主码是N端实体的主码(因为一个N端实体只对应一个1端实体);
- 实际中常不单独建表,而是合并到N端实体表中,主码仍为N端主码。
例如:“部门(1) – 雇员(N)”,在雇员表中加“部门号”,主码仍是雇员号。
9. 将一个非多值联系的对多关系转换为一个独立模式时,应取( )为主码。
(注:“对多关系”应理解为 1:N 联系)
A) 一个实体型的主码
B) 多端实体型的主码
C) 两个实体型的主码属性组合
D) 联系型的全部属性
✅答案:B) 多端实体型的主码
解析:
同第8题。1:N 联系若需独立成表(较少见),其主码应为多端(N端)实体的主码,因为每个N端实体实例最多参与一次该联系(对同一1端)。
但更常见做法是将1端主码作为外键加入N端表,不单独建表。
10. 在E-R模型中,如果有3个不同的实体集、3个m:n联系,根据E-R模型转换为关系模型的规则,至少转换( )个关系模式。
A) 4 B) 5 C) 6 D) 7
✅答案:C) 6
解析:
转换规则:
- 每个实体集→ 1个关系模式 → 3个;
- 每个多对多(m:n)联系→ 必须单独转换为1个关系模式 → 3个;
- 总计:3 + 3 =6 个关系模式。
注意:1:1 或 1:N 联系可合并到实体表中,但 m:n必须独立建表。
5.请将第2章课后习题第4题所设计的E-R图转换为关系模式。
6.请将第2章课后习题第6题所设计的E-R图转换为关系模式。
7.请将第2章课后习题第7题所设计的E-R图转换为关系模式。
第 4 章 数据操纵与定义:填空题
1.如果关系R2的外部关系键X与关系R1的主关系键相符,则外部关系键X的每个值必须要么来自R1主键,要么设置为_______。
2.三种完整性约束中,能影响到DROP TABLE操作的是___________。
3.数据库文件最基本的两种类型是___________和___________。
4.设置关系R2的外键X与关系R1的主键X的参照关系,使用的命令语句是_________。
以下是各题的正确答案及简要解析:
1.如果关系R2的外部关系键X与关系R1的主关系键相符,则外部关系键X的每个值必须要么来自R1主键,要么设置为_______。
✅答案:NULL(空值)
解析:
这是参照完整性(Referential Integrity)的基本要求。外键的取值必须满足:
- 要么等于被参照关系(R1)中某个元组的主键值;
- 要么为NULL(前提是该外键字段允许为空)。
注意:若外键定义为
NOT NULL,则不能为 NULL,必须引用有效主键值。
2.三种完整性约束中,能影响到 DROP TABLE 操作的是___________。
✅答案:参照完整性(或外键约束)
解析:
数据库的三类完整性约束是:
- 实体完整性(主键非空且唯一)
- 参照完整性(外键引用合法)
- 用户定义完整性(如 CHECK、DEFAULT 等)
当试图DROP TABLE R1时,如果其他表(如 R2)的外键引用了 R1 的主键,则数据库系统会阻止删除操作(除非使用CASCADE),以防止破坏参照完整性。
因此,参照完整性会直接影响DROP TABLE是否成功。
3.数据库文件最基本的两种类型是___________和___________。
✅答案:数据文件 和 日志文件
(或:主数据文件、事务日志文件)
解析:
在主流数据库系统(如 SQL Server、Oracle、MySQL InnoDB)中,最基本的两类物理文件是:
- 数据文件(Data File):存储表、索引等实际数据;
- 日志文件(Log File / Transaction Log):记录所有事务操作,用于恢复、回滚、崩溃恢复等。
例如:
- SQL Server:
.mdf(主数据文件)、.ldf(日志文件)- Oracle:数据文件(.dbf)、重做日志文件(redo log)
- MySQL(InnoDB):ibdata1(数据)、ib_logfile*(日志)
4.设置关系R2的外键X与关系R1的主键X的参照关系,使用的命令语句是_________。
✅答案:FOREIGN KEY … REFERENCES …
标准 SQL 语法示例:
ALTERTABLER2ADDCONSTRAINTfk_nameFOREIGNKEY(X)REFERENCESR1(X);或在建表时定义:
CREATETABLER2(...,X datatype,FOREIGNKEY(X)REFERENCESR1(X));因此,核心命令关键词是:
✅FOREIGN KEY … REFERENCES …
✅ 最终答案汇总:
- NULL
- 参照完整性(或“外键约束”)
- 数据文件和日志文件
- FOREIGN KEY … REFERENCES …(或完整语句如
ALTER TABLE R2 ADD FOREIGN KEY (X) REFERENCES R1(X))
第 5 章 数据查询:SQL 应用题
(1) 查询在“清华大学出版社”出版、书名为“数据库原来”图书的作者名;
(2) 查询最近三年出版的跟“数据库”有关的图书名称、作者及出版日期;
(3) 查询“哈尔滨工业大学出版社”出版的各类图书的平均价格及最新出版日期;
(4) 查找书名为“高等数学”且价格比“人民邮电出版社”出版同名图书价格低的出版社名称、价格及出版日期;
(5) 查找书名为“大数据”且价格高于同名图书价格的图书编号、出版社及出版日期;
(6) 查询跟“张明明”同学专业情况相同的同学姓名及班级,如果张明明没有专业,则显示全部没有专业的同学
(7) 查询至少借阅了张明明同学所借阅的全部图书的学生姓名;
(8) 查询已经超期未归还的借阅信息;
(9) 查询每一个同学的借阅统计信息,包括借阅次数,最新借阅日期;
(10) 查询目前被借阅次数最多的图书名。
以下是针对MySQL环境下,基于典型高校图书管理系统的 10 个查询需求所编写的标准 SQL 语句。
📌 假设的表结构(请根据实际字段名微调):
1. 图书表book
| 字段名 | 类型 | 说明 |
|---|---|---|
| book_id | INT (PK) | 图书编号 |
| title | VARCHAR(100) | 书名 |
| author | VARCHAR(50) | 作者 |
| publisher | VARCHAR(100) | 出版社 |
| price | DECIMAL(10,2) | 价格 |
| publish_date | DATE | 出版日期 |
2. 读者表reader
| 字段名 | 类型 | 说明 |
|---|---|---|
| reader_id | INT (PK) | 读者编号 |
| name | VARCHAR(50) | 姓名 |
| major | VARCHAR(50) | 专业(可为 NULL) |
| class | VARCHAR(50) | 班级 |
3. 借阅表borrow
| 字段名 | 类型 | 说明 |
|---|---|---|
| borrow_id | INT (PK) | 借阅记录ID |
| reader_id | INT (FK) | 读者编号 |
| book_id | INT (FK) | 图书编号 |
| borrow_date | DATE | 借出日期 |
| return_date | DATE | 归还日期(NULL 表示未还) |
| due_date | DATE | 应还日期(用于判断超期) |
若无
due_date,可假设借阅期限为 30 天,则due_date = borrow_date + INTERVAL 30 DAY
✅ 各题 SQL 查询语句(MySQL 兼容)
(1) 查询在“清华大学出版社”出版、书名为“数据库原来”图书的作者名;
SELECTauthorFROMbookWHEREpublisher='清华大学出版社'ANDtitle='数据库原来';注:题目中“数据库原来”可能是笔误(应为“数据库原理”),但按原文查询。
(2) 查询最近三年出版的跟“数据库”有关的图书名称、作者及出版日期;
SELECTtitle,author,publish_dateFROMbookWHEREtitleLIKE'%数据库%'ANDpublish_date>=DATE_SUB(CURDATE(),INTERVAL3YEAR);(3) 查询“哈尔滨工业大学出版社”出版的各类图书的平均价格及最新出版日期;
SELECTAVG(price)ASavg_price,MAX(publish_date)ASlatest_publish_dateFROMbookWHEREpublisher='哈尔滨工业大学出版社';“各类图书”在此理解为该社所有图书(无需分组)。若需按书名分类统计,则用
GROUP BY title,但题意更倾向整体统计。
(4) 查找书名为“高等数学”且价格比“人民邮电出版社”出版同名图书价格低的出版社名称、价格及出版日期;
SELECTpublisher,price,publish_dateFROMbookWHEREtitle='高等数学'ANDprice<(SELECTMIN(price)FROMbookWHEREtitle='高等数学'ANDpublisher='人民邮电出版社');使用子查询获取“人民邮电出版社”的《高等数学》最低价格(防多本),再比较。
(5) 查找书名为“大数据”且价格高于同名图书价格的图书编号、出版社及出版日期;
题意应为:价格高于其他同名图书的平均价格或高于某一本?
更合理理解是:价格高于所有同名图书的最低价→ 即不是最便宜的。
但常见考题意图是:价格高于同名图书的平均价格。
这里采用高于同名图书的平均价格:
SELECTbook_id,publisher,publish_dateFROMbook b1WHEREb1.title='大数据'ANDb1.price>(SELECTAVG(b2.price)FROMbook b2WHEREb2.title='大数据');若题意是“高于任意一本同名书”,则可用
> ANY(...),但通常指高于平均。
(6) 查询跟“张明明”同学专业情况相同的同学姓名及班级,如果张明明没有专业,则显示全部没有专业的同学
SELECTname,classFROMreaderWHEREmajor=(SELECTmajorFROMreaderWHEREname='张明明')OR(majorISNULLAND(SELECTmajorFROMreaderWHEREname='张明明')ISNULL);更简洁写法(利用 NULL 安全比较):
SELECTname,classFROMreader r1WHERE(r1.major<=>(SELECTr2.majorFROMreader r2WHEREr2.name='张明明'));
<=>是 MySQL 的NULL-safe equal operator,可正确处理 NULL 比较。
(7) 查询至少借阅了张明明同学所借阅的全部图书的学生姓名;
这是典型的“除法”查询(Relational Division),即:学生 S 借过的书集合 ⊇ 张明明借过的书集合。
SELECTDISTINCTr.nameFROMreader rJOINborrow bONr.reader_id=b.reader_idWHEREr.name<>'张明明'ANDNOTEXISTS(-- 张明明借过但该学生没借的书SELECT1FROMborrow b1JOINreader r1ONb1.reader_id=r1.reader_idWHEREr1.name='张明明'ANDNOTEXISTS(SELECT1FROMborrow b2WHEREb2.reader_id=r.reader_idANDb2.book_id=b1.book_id));逻辑:不存在“张明明借过而该学生没借”的书 → 该学生借了张明明的所有书。
(8) 查询已经超期未归还的借阅信息;
假设due_date字段存在:
SELECT*FROMborrowWHEREreturn_dateISNULLANDCURDATE()>due_date;若无
due_date,假设借期 30 天:
SELECT*FROMborrowWHEREreturn_dateISNULLANDCURDATE()>DATE_ADD(borrow_date,INTERVAL30DAY);(9) 查询每一个同学的借阅统计信息,包括借阅次数,最新借阅日期;
SELECTr.name,COUNT(b.borrow_id)ASborrow_count,MAX(b.borrow_date)ASlatest_borrow_dateFROMreader rLEFTJOINborrow bONr.reader_id=b.reader_idGROUPBYr.reader_id,r.name;使用
LEFT JOIN确保未借书的同学也显示(借阅次数为 0)。
(10) 查询目前被借阅次数最多的图书名。
SELECTbk.titleFROMbook bkJOINborrow bONbk.book_id=b.book_idGROUPBYbk.book_id,bk.titleORDERBYCOUNT(*)DESCLIMIT1;若有并列最多,只返回一个(
LIMIT 1)。若需全部并列第一,可用窗口函数(MySQL 8.0+):
-- MySQL 8.0+WITHBookCountAS(SELECTbk.title,COUNT(*)AScnt,RANK()OVER(ORDERBYCOUNT(*)DESC)ASrkFROMbook bkJOINborrow bONbk.book_id=b.book_idGROUPBYbk.book_id,bk.title)SELECTtitleFROMBookCountWHERErk=1;若为旧版 MySQL,可先查最大次数再匹配:
SELECTbk.titleFROMbook bkJOINborrow bONbk.book_id=b.book_idGROUPBYbk.book_id,bk.titleHAVINGCOUNT(*)=(SELECTMAX(cnt)FROM(SELECTCOUNT(*)AScntFROMborrowGROUPBYbook_id)t);第 6 章 视图与索引:多选题、填空题
以下关于视图的描述中,不正确的是( )。
A) 视图是外模式 B) 使用视图可以加快查询语句的执行速度
C) 视图是虚表 D) 使用视图可以加快查询语句的编写
2.关于索引作用的描述,不正确的是( )。
A) 索引可以加快数据查询速度 B) 索引可以加快数据更新速度
C) 索引可以加快表之间的链接 D) 索引可以保证数据的唯一性
3.视图优点不包括( )。
A) 简化用户查询操作 B) 重新定制数据
C) 提高数据查询速度 D) 合并分割数据
4.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建( )。
A) 视图 B) 游标 C) 另一个表 D) 索引
5.索引项的顺序与表中记录的物理顺序一致的索引,称之为( )。
A) 复合索引 B) 唯一性索引 C) 聚集索引 D) 非聚集索引
6.下面关于索引的说法中正确的是( )。
A) 索引依附于表,因此索引数据也存储在表中
B) 索引只要创建了,就必然有用
C) 索引创建后,用户无法验证索引是否有效
D) 索引尽管删除,不会影响到所依附的表
以下是各题的正确答案及详细解析:
1. 以下关于视图的描述中,不正确的是( )。
A) 视图是外模式
B) 使用视图可以加快查询语句的执行速度
C) 视图是虚表
D) 使用视图可以加快查询语句的编写
✅答案:B) 使用视图可以加快查询语句的执行速度
解析:
- 视图(View)是一个虚拟表,其内容由查询定义,并不实际存储数据(除非是物化视图,但标准 SQL 视图不是)。
- 视图的主要作用是:
- 简化复杂查询(D 正确);
- 提供逻辑数据独立性(A 正确,视图对应外模式);
- 安全控制、数据抽象等;
- 但视图本身不会加快查询执行速度,反而可能因嵌套查询而变慢(B 错误)。
- C 正确:视图是“虚表”,无物理存储。
❌ B 是不正确的描述,为本题答案。
2. 关于索引作用的描述,不正确的是( )。
A) 索引可以加快数据查询速度
B) 索引可以加快数据更新速度
C) 索引可以加快表之间的链接
D) 索引可以保证数据的唯一性
✅答案:B) 索引可以加快数据更新速度
解析:
- 索引会减慢 UPDATE、INSERT、DELETE 操作,因为每次数据修改时,索引也需要同步更新。
- A 正确:索引通过快速定位加快查询;
- C 正确:连接(JOIN)常依赖索引加速匹配;
- D 正确:唯一索引(UNIQUE INDEX)可保证字段值唯一;
- B 错误:索引降低更新速度。
❌ B 是不正确的描述。
3. 视图优点不包括( )。
A) 简化用户查询操作
B) 重新定制数据
C) 提高数据查询速度
D) 合并分割数据
✅答案:C) 提高数据查询速度
解析:
- 视图的优点包括:
- A:隐藏复杂性,简化查询;
- B:可对数据进行逻辑重组(如只显示部分列);
- D:可将多个表“合并”成一个视图,或将大表“分割”成多个视图;
- 但视图本身不提高查询速度(除非数据库做了物化或优化),通常只是查询的封装。
- 实际执行仍需运行底层 SELECT,甚至更慢。
❌ C 不是视图的优点。
4. 在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建( )。
A) 视图 B) 游标 C) 另一个表 D) 索引
✅答案:A) 视图
解析:
- 视图是虚拟表,不占用额外存储空间(仅保存定义),且可简化查询;
- 另一个表会占用存储;
- 索引虽不重复存储全部数据,但会占用空间(存储索引结构);
- 游标是程序控制结构,用于逐行处理结果集,不用于简化查询或节省空间。
✅ A 正确。
5. 索引项的顺序与表中记录的物理顺序一致的索引,称之为( )。
A) 复合索引 B) 唯一性索引 C) 聚集索引 D) 非聚集索引
✅答案:C) 聚集索引
解析:
- 聚集索引(Clustered Index):表数据按索引键的顺序物理存储,因此索引顺序 = 物理顺序;
- 一个表只能有一个聚集索引;
- 非聚集索引(Non-clustered Index):索引结构独立于数据存储顺序;
- A:复合索引 = 多列索引;
- B:唯一性索引 = 保证值唯一。
✅ C 正确。
6. 下面关于索引的说法中正确的是( )。
A) 索引依附于表,因此索引数据也存储在表中
B) 索引只要创建了,就必然有用
C) 索引创建后,用户无法验证索引是否有效
D) 索引尽管删除,不会影响到所依附的表
✅答案:D) 索引尽管删除,不会影响到所依附的表
解析:
- D 正确:索引是辅助结构,删除索引只影响性能,不影响表中数据的完整性或存在。
- A 错误:索引数据不存储在表中,而是单独的存储结构(如 B+ 树);
- B 错误:无效索引(如建在很少查询的列上)可能从不被使用,浪费空间;
- C 错误:可通过
EXPLAIN(MySQL)、执行计划等验证索引是否被使用。
✅ D 是唯一正确的说法。
1.按照索引记录的存放位置,索引可分为________和_________。
2.视图是虚表,其数据不进行存储,只在数据库中存储其_________。
3.创建视图时,若想限制对视图的更新,则需要在创建语句中加上_____________。
4.创建索引时,默认创建的索引属于_______结构。
以下是各题的正确答案及简要解析:
1.按照索引记录的存放位置,索引可分为________和_________。
✅答案:聚集索引(Clustered Index) 和 非聚集索引(Non-clustered Index)
解析:
- 聚集索引:索引项的顺序与表中数据的物理存储顺序一致,数据按索引键排序存放。
- 非聚集索引:索引结构独立于数据的物理存储,索引中存储的是指向数据行的指针(如行地址或主键值)。
这是数据库中按存储位置关系对索引的最基本分类。
2.视图是虚表,其数据不进行存储,只在数据库中存储其_________。
✅答案:定义(或 查询语句 / SELECT 语句)
解析:
视图本身不保存实际数据(除非是物化视图),数据库仅存储其创建时的 SELECT 语句定义。每次查询视图时,系统都会执行该定义语句动态生成结果。
3.创建视图时,若想限制对视图的更新,则需要在创建语句中加上_____________。
✅答案:WITH CHECK OPTION
解析:
WITH CHECK OPTION用于确保通过视图进行的INSERT 或 UPDATE 操作必须满足视图的 WHERE 条件,否则拒绝修改。- 虽然它不完全“禁止”更新,但限制了可更新的数据范围,常用于增强数据安全性。
- 若需完全禁止更新,某些数据库支持
WITH READ ONLY(如 Oracle),但在标准 SQL 和 MySQL 中,常用WITH CHECK OPTION来控制更新合法性。
⚠️ 注意:MySQL 的视图默认不可更新(若含聚合、DISTINCT、GROUP BY 等),但对可更新视图加
WITH CHECK OPTION可限制更新内容。
因此,本题最通用且符合教材的答案是:WITH CHECK OPTION。
4.创建索引时,默认创建的索引属于_______结构。
✅答案:B+树(B+ Tree)
解析:
在主流关系型数据库(如MySQL(InnoDB)、SQL Server、Oracle)中:
- 默认的索引结构是B+ 树;
- B+ 树适合磁盘 I/O,支持高效范围查询和等值查询;
- 哈希索引、位图索引等为特殊场景使用,非默认。
因此,标准答案为:B+树(或写作B+ Tree)。
✅ 最终答案汇总:
- 聚集索引和非聚集索引
- 定义(或查询语句)
- WITH CHECK OPTION
- B+树(或B+ Tree)
第 7 章 关系规范化:计算题
设有关系模式R(A,B,C,D),函数依赖F={A→C,C→A,B→AC,D→AC,BD→A}
(1)求出R 的所有候选键。
(2)根据函数依赖关系,确定关系模式R 属于第几范式。
(4)将R分解为3NF。并说明有无保持无损连接性和函数依赖性。
4.设有关系模式R(A,B,C,D,E,F),函数依赖集F={A→BC,BC→A,BC,D→EF,E→C}。试问:关系模式R是否为3NF,并证明结论。
5.关系模式R(A,B,C,D,E,F),其函数依赖集F={AB→E,AC→F,AD→B,B→C,C→D}。求该关系模式的所有候选键。
以下是第7章关系规范化中各计算题的详细解答:
题1:设有关系模式 R(A, B, C, D),函数依赖集 F = {A→C, C→A, B→AC, D→AC, BD→A}
(1) 求 R 的所有候选键
步骤:找出能函数决定全部属性 {A, B, C, D} 的最小属性集。
先分析各属性或组合的闭包:
- A⁺= A → C(由 A→C),C→A 已有,所以 A⁺ = {A, C} ❌
- B⁺= B → AC(由 B→AC),得 {A, B, C},但无法推出 D ❌
- C⁺= C → A,A→C,所以 C⁺ = {A, C} ❌
- D⁺= D → AC,得 {A, C, D},缺 B ❌
- BD⁺:
- 初始:{B, D}
- B→AC ⇒ 加 A, C → {A, B, C, D}
- 已包含全部属性 ⇒BD 是超键
- 检查是否最小:
- B⁺ = {A,B,C}(无 D)
- D⁺ = {A,C,D}(无 B)
- 所以BD 是候选键
再检查其他可能:
- AB⁺:A,B → 已有 A,B;B→AC ⇒ 得 C;仍缺 D ❌
- AD⁺:A,D → D→AC ⇒ 有 A,C,D;缺 B ❌
- BC⁺:B→AC ⇒ 有 A,B,C;缺 D ❌
- CD⁺:C,D → D→AC ⇒ A,C,D;缺 B ❌
- ABC、ABD 等都是超键,但非最小
是否有其他候选键?
考虑B 和 D 是否唯一?
再试单独属性都不行,两两组合中:
- BD✅
- 其他如 AB、AC、AD、BC、CD均不能推出全部属性
但注意:B→AC,D→AC,但都无法推出对方。
再看是否有其他组合?比如…
等等!注意到B⁺ = {A,B,C},若加上 D 就全了;
D⁺ = {A,C,D},加上 B 就全了。
有没有可能B 本身不是,但其他?
再试属性集 {B, D} 是唯一能推出全集的最小集吗?
✅ 是的。
但注意:BD→A 是冗余的(因为 B→A 已存在),不影响闭包。
结论:
唯一候选键是 BD
(2) 确定 R 属于第几范式
先列出所有属性和候选键:
- 候选键:BD
- 主属性:B, D
- 非主属性:A, C
检查是否存在部分依赖或传递依赖。
看函数依赖:
- A→C:A 是非主属性 → C 是非主属性(无关主键)
- C→A:同上
- B→AC:B 是候选键的一部分,但B ⊂ BD,且 B→A, B→C
→ 这是部分函数依赖(非主属性 A、C 依赖于候选键的真子集 B)
⇒ 存在部分依赖⇒不满足 2NF
因此,R ∈1NF,但∉ 2NF
答:R 属于第一范式(1NF)
(4) 将 R 分解为 3NF,并说明是否保持无损连接性和函数依赖性
目标:分解为 3NF,最好满足:
- 无损连接(Lossless Join)
- 保持函数依赖(Dependency Preservation)
方法:使用合成算法(Synthesis Algorithm)或按 FD 分组。
先化简 F(求最小覆盖):
F = {A→C, C→A, B→AC, D→AC, BD→A}
步骤1:右边单一化
- B→AC ⇒ B→A, B→C
- D→AC ⇒ D→A, D→C
- BD→A(但 B→A 已存在,故 BD→A 冗余,可删)
得:
F₁ = {A→C, C→A, B→A, B→C, D→A, D→C}
步骤2:去除冗余依赖
- 检查 B→A:B⁺ without it = {B} → 无法得 A?但 B→C, C→A ⇒ 可推 A,所以 B→A 可由 B→C + C→A 推出?
但 C 不在 B 的直接依赖中,除非保留 B→C。
实际上,保留 B→A 和 B→C 更直接。
但注意:A↔C(互相决定),可视为等价类 {A,C}
简化:令 X = {A,C},则:
- B→X
- D→X
- X 内部 A↔C
最小覆盖可取为:
F_min = {A→C, C→A, B→A, D→A}
(因为 B→C 可由 B→A + A→C 推出;同理 D→C 可推)
现在按每个 FD 构造关系:
- A→C → R1(A, C)
- C→A → 已包含在 R1
- B→A → R2(B, A)
- D→A → R3(D, A)
但还需包含候选键BD,确保无损连接。
当前分解:R1(A,C), R2(B,A), R3(D,A) ——缺少 BD 同时出现的关系,可能丢失候选键。
根据 3NF 合成算法:若没有一个关系包含候选键,则需额外添加一个包含候选键的关系。
候选键是 BD,所以加 R4(B, D)
最终分解:
- R1(A, C)
- R2(B, A)
- R3(D, A)
- R4(B, D)
但可优化:R2(B,A) 和 R3(D,A) 可合并?不,因无共同决定。
或者注意到 A↔C,可只保留 R1(A,C)
更简洁的 3NF 分解:
由于 A↔C,可将 A,C 视为等价,用 A 代表。
观察 FD:
- B→A
- D→A
- A→C, C→A
可分解为:
- R1(A, C) // 处理 A↔C
- R2(B, A) // B→A
- R3(D, A) // D→A
- R4(B, D) // 候选键,保证无损
但 R4(B,D) 不含非主属性,是否必要?
验证无损连接:使用 chase 测试较复杂。
另一种方式:按左部相同合并
- B→A, B→C → R2(B, A, C)
- D→A, D→C → R3(D, A, C)
- A→C, C→A → 已在上述表中
- 候选键 BD 未同时出现
但 R2 和 R3 都包含 A,C,可接受。
然而,更好的 3NF 分解(保持依赖且无损):
✅ 标准答案常为:
- R1(A, C) // 因 A↔C
- R2(B, A) // B→A
- R3(D, A) // D→A
- R4(B, D) // 候选键
但注意:R2(B,A) 和 R3(D,A) 中 A 是主属性吗?在各自关系中,B 是 R2 的键,D 是 R3 的键。
是否保持函数依赖?
- A→C:在 R1 中 ✔️
- C→A:在 R1 中 ✔️
- B→A:在 R2 中 ✔️
- D→A:在 R3 中 ✔️
- B→C:可通过 B→A + A→C 在应用层实现,但不在单个关系中→未保持依赖(严格来说,依赖集未被投影完全保留)
但根据 3NF 合成算法,若使用最小覆盖并加候选键,则保持依赖。
重新构造:
最小覆盖 F_min = {A→C, C→A, B→A, D→A}
按左部分组:
- {A→C}
- {C→A}
- {B→A}
- {D→A}
合并相同左部:无
创建关系:
- R1(A, C)
- R2(C, A) → 与 R1 相同,去重
- R3(B, A)
- R4(D, A)
候选键 BD 不在任何关系中 → 添加 R5(B, D)
最终分解:ρ = {R1(A,C), R3(B,A), R4(D,A), R5(B,D)}
是否无损?
因为 R5 包含候选键 BD,根据定理:若分解中包含原关系的一个候选键,则分解具有无损连接性。✔️
是否保持依赖?
所有 FD 都在某个 Ri 中:
- A→C, C→A ∈ R1
- B→A ∈ R3
- D→A ∈ R4
✔️ 保持函数依赖
✅ 分解为 3NF,既无损,又保持依赖
题4:R(A,B,C,D,E,F),F = {A→BC, BC→A, B→C, D→EF, E→C}
注:题目中“BC,” 应为笔误,结合上下文应为B→C
判断 R 是否为 3NF
3NF 定义:对每个非平凡 FD X→Y,满足:
- X 是超键,或
- Y 是主属性(即 Y 属于某个候选键)
步骤1:求候选键
计算闭包:
- A⁺ = A → BC ⇒ {A,B,C};无法得 D,E,F ❌
- D⁺ = D → EF;E→C ⇒ {D,E,F,C};缺 A,B ❌
- AD⁺ = A,D → A→BC, D→EF, E→C ⇒ {A,B,C,D,E,F} ✅
- 检查是否最小:
- A⁺ = {A,B,C}(无 D,E,F)
- D⁺ = {C,D,E,F}(无 A,B)
- 所以AD 是候选键
还有其他吗?
- BD⁺:B→C,但无 A;D→EF,E→C ⇒ {B,C,D,E,F},缺 A ❌
- CD⁺:类似,缺 A
- 所以唯一候选键是 AD
主属性:A, D
非主属性:B, C, E, F
步骤2:检查每个 FD 是否违反 3NF
A→BC
- A 不是超键(A⁺ ≠ 全集)
- B、C 是非主属性
→ 违反 3NF(因为决定因素非超键,且被决定属性非主属性)
BC→A
- BC 不是超键(BC⁺ = B→C ⇒ {B,C},加 BC→A ⇒ {A,B,C},仍缺 D,E,F)
- A 是主属性(属于候选键 AD)
→符合 3NF(Y 是主属性)
B→C
- B 不是超键
- C 是非主属性
→违反 3NF
D→EF
- D 不是超键(D⁺ = {C,D,E,F} ≠ 全集)
- E、F 是非主属性
→违反 3NF
E→C
- E 不是超键
- C 是非主属性
→违反 3NF
结论:存在多个 FD 违反 3NF 条件。
✅R 不是 3NF
题5:R(A,B,C,D,E,F),F = {AB→E, AC→F, AD→B, B→C, C→D}
求所有候选键
思路:找最小属性集 X,使得 X⁺ = {A,B,C,D,E,F}
先看哪些属性不在任何 FD 右边→ 必在候选键中(因为无法被推出)
右部属性:E, F, B, C, D
→A 未出现在右部⇒ A 必在候选键中
所以候选键必含 A
尝试 A 与其他属性组合:
- A⁺= {A}(无 FD 左部为 A) ❌
- AB⁺:
- AB → E
- B → C
- C → D
- 所以 AB⁺ = {A,B,C,D,E}
- 缺 F ❌
- AC⁺:
- AC → F
- C → D
- 但无 B,无法得 E(AB→E 需 B)
- AC⁺ = {A,C,D,F} ❌
- AD⁺:
- AD → B
- B → C
- C → D(已有)
- 所以 AD⁺ = {A,B,C,D}
- 缺 E, F ❌
- ABC⁺:
- AB→E, AC→F, B→C, C→D
- ⇒ {A,B,C,D,E,F} ✅
- 但是否最小?检查子集:
- AB⁺ = {A,B,C,D,E}(无 F)
- AC⁺ = {A,C,D,F}(无 B,E)
- BC⁺:无 A,无法启动(AB→E 需 A)
- 所以 ABC 是超键,但可能非最小
继续尝试ABD:
- ABD⁺:
- AD→B(已有 B)
- B→C, C→D
- AB→E
- 但无 AC,无法得 F(AC→F 需 C 和 A,已有 A,C)
- 有 A, B, D → AD→B(已有),B→C ⇒ 有 C
- 所以有 A,C → AC→F ⇒ 得 F
- 所以 ABD⁺ = {A,B,C,D,E,F} ✅
- 检查子集:
- AB⁺ = {A,B,C,D,E}(无 F)→ 因为 AB 有 A,B → B→C → C→D,但无 AC?其实有 A 和 C(由 B→C),所以 AB 有 A,C → 应能得 F?
- AB⁺:
- AB → E
- B → C
- C → D
- 现在有 A, B, C, D, E
- 有 A 和 C ⇒ AC→F ⇒ 得 F!
- 所以AB⁺ = {A,B,C,D,E,F}✅
- AB⁺:
- AB⁺ = {A,B,C,D,E}(无 F)→ 因为 AB 有 A,B → B→C → C→D,但无 AC?其实有 A 和 C(由 B→C),所以 AB 有 A,C → 应能得 F?
重新计算 AB⁺ 仔细:
AB⁺:
- 初始:{A, B}
- AB→E ⇒ +E → {A,B,E}
- B→C ⇒ +C → {A,B,C,E}
- C→D ⇒ +D → {A,B,C,D,E}
- 现在有 A 和 C ⇒ AC→F ⇒ +F → {A,B,C,D,E,F}
✅AB⁺ = 全集
检查 AB 是否最小:
- A⁺ = {A} ❌
- B⁺ = {B,C,D}(B→C, C→D) ❌
- 所以AB 是候选键
还有其他吗?
尝试AC⁺:
- AC → F
- C → D
- 有 A,C,D,F
- 但无 B,无法用 AB→E 或 AD→B
- 能否得 B?AD→B 需 D 和 A,已有 A,D ⇒ AD→B ⇒ +B
- AC⁺:
- {A,C}
- AC→F ⇒ +F
- C→D ⇒ +D → {A,C,D,F}
- 现在有 A,D ⇒ AD→B ⇒ +B → {A,B,C,D,F}
- B→C(已有)
- AB→E ⇒ +E → 全集!
- 所以AC⁺ = 全集
- AC⁺:
检查 AC 是否最小:
- A⁺ = {A} ❌
- C⁺ = {C,D} ❌
- 所以AC 也是候选键
再试AD⁺:
- AD → B
- B → C
- C → D
- 有 A,B,C,D
- AB→E ⇒ +E
- AC→F(有 A,C) ⇒ +F
- 所以 AD⁺ = 全集
检查子集:
- A⁺ = {A} ❌
- D⁺ = {D} ❌
- 所以AD 也是候选键
结论:候选键有AB、AC、AD
验证:
- AB⁺ = 全集 ✅
- AC⁺ = 全集 ✅
- AD⁺ = 全集 ✅
- 且均为最小
✅ 所有候选键为:AB, AC, AD
✅ 最终答案汇总:
题1
(1) 候选键:BD
(2) 范式:1NF
(4) 3NF 分解:{R1(A,C), R2(B,A), R3(D,A), R4(B,D)},保持无损连接性和函数依赖性
题4
R不是 3NF,因为存在非主属性对非超键的函数依赖(如 A→B, B→C 等)
题5
候选键:AB, AC, AD
第 9 章 数据库安全与备份还原:单选题
1.在数据库中,使用( )语句为用户授权。
A) REVOKE B) GRANT C) INSERT D) CREATE
2.下列有关MySQL角色的说法,错误的是( )。
A) 角色是权限的集合 B) 可以为一个用户授予多个角色
C) MySQL角色授予用户后立即生效 D) 删除角色可回收用户的角色
3.MySQL日志文件的各种类型中,用于记录数据操作信息的是( )。
A) 慢日志 B) 索引日志 C) 权限日志 D) 二进制日志
4.按备份时服务器是否在线进行划分,数据库备份不包括( )。
A) 热备份 B) 冰备份 C) 冷备份 D) 温备份
5.使用MySQL时,想要实时记录数据库中所有修改、插入和删除操作,需要启用( )。
A) 二进制日志 B) 通用日志 C) 错误日志 D) 慢查询日志
6.( )备份是在某一次完整备份的基础上,只备份其后数据的变化。
A) 比较 B) 区别 C) 增量 D) 二次
7.使用SQL定义事务的命令中,不包括( )。
A) BEGIN TRANSACTION B) COMMIT
C) ROLLBACK D) END TRANSACTION
8.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的( )。
A) 可靠性 B) 一致性 C) 完整性 D) 安全性
9.事务的隔离性是指( )。
A) 事务中包括的所有操作要么都做,要么都不做
B) 事务一旦提交,对数据库的改变是永久的
C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D) 事务必须是使数据库从一个一致性状态变到另一个一致性状态
10.事务的持久性是指( )。
A) 事务中包括的所有操作要么都做,要么都不做
B) 事务一旦提交,对数据库的改变是永久的
C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D) 事务必须是使数据库从一个一致性状态变到另一个一致性状态
11.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为( )。
A) 事务故障 B) 系统故障 C) 介质故障 D) 运行故障
12.日志文件是数据库重要的文件类型,其用于记录( )。
A) 程序运行过程 B) 数据查询操作
C) 对数据的所有更新操作 D) 程序执行的结果
13.在数据系统中,对存取权限的定义称为( )。
A) 命令 B) 授权 C) 定义 D) 审计
14.( )是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
A) 程序 B) 命令 C) 事务 D) 文件
15.安全性控制的防范对象是( )。
A) 合法用户 B) 不合语义的数据 C) 非法操作 D) 不正确的数据
以下是各题的正确答案及简要解析:
1.在数据库中,使用( )语句为用户授权。
A) REVOKE B) GRANT C) INSERT D) CREATE
✅答案:B) GRANT
解析:
GRANT用于授予权限;REVOKE用于撤销权限;INSERT和CREATE分别用于数据插入和创建对象,与权限管理无关。
2.下列有关MySQL角色的说法,错误的是( )。
A) 角色是权限的集合
B) 可以为一个用户授予多个角色
C) MySQL角色授予用户后立即生效
D) 删除角色可回收用户的角色
✅答案:C) MySQL角色授予用户后立即生效
解析:
- A 正确:角色本质上是一组权限的集合;
- B 正确:可以为一个用户分配多个角色;
- C 错误:角色授予用户后,默认情况下不会立即生效,需要执行
SET ROLE或重新登录才会生效; - D 正确:删除角色会自动回收所有用户的该角色权限。
3.MySQL日志文件的各种类型中,用于记录数据操作信息的是( )。
A) 慢日志 B) 索引日志 C) 权限日志 D) 二进制日志
✅答案:D) 二进制日志
解析:
- 二进制日志(Binary Log)记录了所有对数据库进行修改的操作(如
INSERT,UPDATE,DELETE),可用于数据恢复、主从复制等; - 其他选项:慢日志记录查询性能问题,索引日志不常见,权限日志也不属于标准MySQL日志类型。
4.按备份时服务器是否在线进行划分,数据库备份不包括( )。
A) 热备份 B) 冰备份 C) 冷备份 D) 温备份
✅答案:B) 冰备份
解析:
- 热备份:数据库在线时进行备份;
- 冷备份:数据库关闭状态下进行备份;
- 温备份:介于两者之间,数据库可能处于只读状态;
- 冰备份不是常见的分类术语,故选此项。
5.使用MySQL时,想要实时记录数据库中所有修改、插入和删除操作,需要启用( )。
A) 二进制日志 B) 通用日志 C) 错误日志 D) 慢查询日志
✅答案:A) 二进制日志
解析:
- 二进制日志记录了所有修改数据库的操作(如
INSERT,UPDATE,DELETE),满足题目要求; - 其他日志类型分别用于其他目的(如性能调试、错误跟踪等)。
6.( )备份是在某一次完整备份的基础上,只备份其后数据的变化。
A) 比较 B) 区别 C) 增量 D) 二次
✅答案:C) 增量
解析:
- 增量备份是指基于上一次全备份或增量备份之后的数据变化进行备份;
- 这种备份方式减少了存储需求,但恢复时需要依赖之前的备份链。
7.使用SQL定义事务的命令中,不包括( )。
A) BEGIN TRANSACTION B) COMMIT C) ROLLBACK D) END TRANSACTION
✅答案:D) END TRANSACTION
解析:
- SQL 标准中没有
END TRANSACTION命令; BEGIN TRANSACTION(或START TRANSACTION)、COMMIT、ROLLBACK是事务控制的基本命令。
8.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的( )。
A) 可靠性 B) 一致性 C) 完整性 D) 安全性
✅答案:D) 安全性
解析:
- 安全性控制用户访问权限,防止未授权访问;
- 其他选项分别对应不同的数据库属性(如可靠性、一致性和完整性),但与权限控制直接相关的是安全性。
9.事务的隔离性是指( )。
A) 事务中包括的所有操作要么都做,要么都不做
B) 事务一旦提交,对数据库的改变是永久的
C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D) 事务必须是使数据库从一个一致性状态变到另一个一致性状态
✅答案:C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
解析:
- 隔离性确保事务间相互独立,不受彼此影响;
- A 描述的是原子性,B 描述的是持久性,D 描述的是一致性。
10.事务的持久性是指( )。
A) 事务中包括的所有操作要么都做,要么都不做
B) 事务一旦提交,对数据库的改变是永久的
C) 一个事务内部的操作及使用的数据对并发的其他事务是隔离的
D) 事务必须是使数据库从一个一致性状态变到另一个一致性状态
✅答案:B) 事务一旦提交,对数据库的改变是永久的
解析:
- 持久性确保事务提交后的更改永久保存,即使系统崩溃也不会丢失;
- A 描述的是原子性,C 描述的是隔离性,D 描述的是一致性。
11.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为( )。
A) 事务故障 B) 系统故障 C) 介质故障 D) 运行故障
✅答案:C) 介质故障
解析:
- 介质故障指的是外存设备损坏导致的数据丢失;
- 事务故障和系统故障涉及软件层面的问题,而“运行故障”不是标准术语。
12.日志文件是数据库重要的文件类型,其用于记录( )。
A) 程序运行过程 B) 数据查询操作 C) 对数据的所有更新操作 D) 程序执行的结果
✅答案:C) 对数据的所有更新操作
解析:
- 日志文件主要用于记录数据库的所有修改操作(如
INSERT,UPDATE,DELETE),以便在系统故障后进行恢复; - 其他选项描述的日志用途不符合日志文件的主要作用。
13.在数据系统中,对存取权限的定义称为( )。
A) 命令 B) 授权 C) 定义 D) 审计
✅答案:B) 授权
解析:
- 授权是指对用户或角色赋予特定权限的过程;
- “审计”是指监控和记录用户的活动,“定义”和“命令”不特指权限管理。
14.( )是DBMS的基本单位,它是用户定义的一组逻辑一致的程序序列。
A) 程序 B) 命令 C) 事务 D) 文件
✅答案:C) 事务
解析:
- 事务是数据库管理系统的基本工作单元,保证一组操作要么全部成功,要么全部回滚;
- 其他选项虽然也是数据库中的概念,但不属于DBMS的基本单位。
15.安全性控制的防范对象是( )。
A) 合法用户 B) 不合语义的数据 C) 非法操作 D) 不正确的数据
✅答案:C) 非法操作
解析:
- 安全性控制主要目的是防止非法用户或非法操作对数据库造成损害;
- 其他选项虽然也可能是数据库管理关注的问题,但主要由其他机制(如完整性约束)处理。
第 10 章 数据库并发控制:单选题
1.数据库的并发操作,会导致各种数据不一致问题出现,这些问题不包括( )。
A) 丢失更新 B) 脏读 C) 不可重复读 D) 死锁
2.对并发操作若不加以控制,可能会带来数据库的( )问题。
A) 不安全 B) 死锁 C) 死机 D) 不一致
3.关系数据库中并发控制的基本单位是( )。
A) 事务 B) 进程 C) 程序 D) 脚本
4.解决并发操作带来的数据不一致性总是普遍采用( )。
A) 封锁 B) 恢复 C) 存取控制 D) 协商
5.若事务T对数据R已经加排它锁,则其他事务对数据R( )。
A) 可以加共享锁不能加排它锁 B) 不能加共享锁可以加排它锁
C) 可以加共享锁也可以加排它锁 D) 不能加任何锁
6.事务的隔离级别中,( )可以解决幻象读问题。
A) READ UNCOMMITTED B) READ COMMITTED
C) REPEATABLE READ D) SERIALIZABLE
7.关于“死锁”,下列说法中正确的是( )。
A) 死锁是操作系统中的问题,数据库操作中不存在
B) 在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库
C) 当两个用户竞争相同资源时不会发生死锁
D) 只有出现并发操作时,才有可能出现死锁
以下是第9章(或并发控制相关章节)单选题的详细解答:
1.数据库的并发操作,会导致各种数据不一致问题出现,这些问题不包括( )。
A) 丢失更新 B) 脏读 C) 不可重复读 D) 死锁
✅答案:D) 死锁
解析:
- 丢失更新、脏读、不可重复读、幻读都是数据不一致性问题;
- 死锁是资源竞争导致的系统阻塞问题,属于并发控制的副作用,但不是数据不一致;
- 题干问的是“不包括”在“数据不一致问题”中的选项 →死锁不属于数据不一致。
✅ 正确答案:D
2.对并发操作若不加以控制,可能会带来数据库的( )问题。
A) 不安全 B) 死锁 C) 死机 D) 不一致
✅答案:D) 不一致
解析:
- 并发操作失控 → 多个事务交叉执行 → 导致数据逻辑错误,如脏读、丢失修改等 →数据不一致;
- “不安全”属于安全性范畴,“死锁”是并发副作用但非直接结果,“死机”是极端情况,不是典型问题;
- 数据库并发控制的核心目标就是保证数据一致性。
✅ 正确答案:D
3.关系数据库中并发控制的基本单位是( )。
A) 事务 B) 进程 C) 程序 D) 脚本
✅答案:A) 事务
解析:
- 事务是数据库操作的逻辑工作单元,具有 ACID 特性;
- 并发控制(如加锁、隔离级别)都是以事务为单位进行管理的;
- 进程、程序、脚本是操作系统或应用层面的概念,非 DBMS 并发控制的基本单位。
✅ 正确答案:A
4.解决并发操作带来的数据不一致性总是普遍采用( )。
A) 封锁 B) 恢复 C) 存取控制 D) 协商
✅答案:A) 封锁
解析:
- 封锁(Locking)是最经典、广泛使用的并发控制技术(如共享锁、排他锁);
- 恢复用于故障后还原,存取控制属于安全性机制,协商不是标准数据库技术;
- 尽管还有时间戳、乐观并发控制等方法,但“普遍采用”的仍是封锁机制。
✅ correct answer:A
5.若事务T对数据R已经加排它锁,则其他事务对数据R( )。
A) 可以加共享锁不能加排它锁
B) 不能加共享锁可以加排它锁
C) 可以加共享锁也可以加排它锁
D) 不能加任何锁
✅答案:D) 不能加任何锁
解析:
- 排它锁(X锁):事务独占数据项,其他事务既不能读也不能写;
- 因此,其他事务不能加共享锁(S锁),也不能加排它锁(X锁);
- 必须等待 T 释放 X 锁后才能操作。
✅ 正确答案:D
6.事务的隔离级别中,( )可以解决幻象读问题。
A) READ UNCOMMITTED
B) READ COMMITTED
C) REPEATABLE READ
D) SERIALIZABLE
✅答案:D) SERIALIZABLE
解析:
各隔离级别解决的问题:
- READ UNCOMMITTED:无任何保护;
- READ COMMITTED:解决脏读;
- REPEATABLE READ:解决脏读 + 不可重复读(MySQL InnoDB 下也部分解决幻读,但标准 SQL 中不能完全解决幻读);
- SERIALIZABLE:完全解决幻读,通过强制串行执行。
根据SQL 标准,只有SERIALIZABLE能彻底解决幻象读(Phantom Read)。
✅ 正确答案:D
💡 注:MySQL 的 InnoDB 在 REPEATABLE READ 级别下通过Next-Key Lock抑制幻读,但题目考察的是通用数据库理论,应按标准答 D。
7.关于“死锁”,下列说法中正确的是( )。
A) 死锁是操作系统中的问题,数据库操作中不存在
B) 在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库
C) 当两个用户竞争相同资源时不会发生死锁
D) 只有出现并发操作时,才有可能出现死锁
✅答案:D) 只有出现并发操作时,才有可能出现死锁
解析:
- A 错误:数据库中存在死锁(如两个事务互相等待对方释放锁);
- B 错误:禁止并发不现实,实际采用超时、死锁检测、顺序加锁等策略;
- C 错误:竞争相同资源可能导致死锁(如循环等待);
- D 正确:死锁的前提是并发操作,单事务不可能死锁。
✅ 正确答案:D
第 11 章 存储过程与触发器:多选题、填空题
1.MySQL中用户会话变量名的前面应加的字符是( )。
A) @ B) @@ C) # D) *
2.在MySQL编程中,可用于跳出循环的语句是( )。
A) BREAK B) CONTINUE C) EXIT D) LEAVE
3.以下说法中正确的是( )。
A) 存储过程是所在数据库中的一个对象
B) 存储过程必须有至少一个参数。
C) 调用有参函数时,实参的个数可根据实际需要进行个数调整
D) 要删除函数可以使用DELETE FUNCTION语句
4.下面有关触发器的叙述错误的是( )。
A) 触发器是一种特殊的存储过程 B) 触发器可以引用所在数据库以外的对象
C) 一个表上可以定义多个触发器 D) 触发器创建之后不能修改
5.创建存储过程应使用的语句是( )。
A) CREATE PROCEDURE B) DROP PROCEUDRE
C) CREATE FUNCTION D) DROP FUNCTION
6.下列关于触发器的描述正确的是( )。
A) 触发器被触发的时刻可以指定为BEFORE或者AFTER
B) 利用触发器可以维护数据的完整性
C) 删除一个表的同时也会删除该表上所有的触发器
D) 以上都正确
7.下列关于存储过程的优点描述中,不正确的是( )。
A) 有利于减少网络流量 B) 可以作为安全机制使用
C) 可以保证数据的完整性 D) 预编译之后,执行速度快
8.在关系数据库中,当数据表被修改时,系统会自动执行的数据库对象是( )。
A) 存储过程 B) 触发器 C) 视图 D) 其他数据库对象
9.下面关于触发器的描述,错误的是( )。
A) 触发器是一种特殊的存储过程,用户可以直接调用
B) 触发器在执行时会有跟触发器表结构相同的临时对象存在
C) 触发器可以用来定义比CHECK约束更复杂的规则
D) 删除触发器可以使用DROP TRIGGER命令
10.下面关于触发器功能的描述,错误的是( )。
A) 可以强化约束 B) 能够级联运行
C) 能够提高安全性 D) 可以调用存储过程
1.将存储过程myproc删除的语句是______。
2.将函数值从函数体中返回的语句是______。
3.从触发实际上看触发器分为_________和________两类。
4.语句块定义的关键词分别是_______和________。
5.触发器工作时,有两个特别重要的临时对象用于获取触发事件影响的记录,这两个对象分别是_________和________。
以下是关于MySQL 存储过程、函数、触发器等数据库编程内容的单选题与填空题的完整解答。
✅ 单选题答案及解析
1.MySQL中用户会话变量名的前面应加的字符是( )。
A) @ B) @@ C) # D) *
✅答案:A) @
@var:用户自定义会话变量(如SET @x = 10;)@@var:系统变量(如@@version)#和*不用于变量命名
2.在MySQL编程中,可用于跳出循环的语句是( )。
A) BREAK B) CONTINUE C) EXIT D) LEAVE
✅答案:D) LEAVE
- MySQL 中使用
LEAVE label;跳出循环(需配合标签) ITERATE用于继续下一次循环(类似 continue)- 没有
BREAK或EXIT(EXIT是 SQL 标准但 MySQL 不支持)
3.以下说法中正确的是( )。
A) 存储过程是所在数据库中的一个对象
B) 存储过程必须有至少一个参数。
C) 调用有参函数时,实参的个数可根据实际需要进行个数调整
D) 要删除函数可以使用DELETE FUNCTION语句
✅答案:A) 存储过程是所在数据库中的一个对象
- A 正确:存储过程是数据库对象,属于特定数据库
- B 错误:存储过程可以无参数
- C 错误:函数调用必须严格匹配参数个数和类型
- D 错误:应使用
DROP FUNCTION,不是DELETE
4.下面有关触发器的叙述错误的是( )。
A) 触发器是一种特殊的存储过程
B) 触发器可以引用所在数据库以外的对象
C) 一个表上可以定义多个触发器
D) 触发器创建之后不能修改
✅答案:D) 触发器创建之后不能修改
- A 正确
- B 正确:可通过
db_name.table_name引用其他库对象 - C 正确:同一表可有多个
BEFORE INSERT、AFTER UPDATE等(不同事件或时机) - D 错误:虽然不能直接
ALTER TRIGGER,但可以通过先 DROP 再 CREATE实现“修改”,因此说“不能修改”不严谨;但在 MySQL 中确实没有 ALTER TRIGGER 语句,通常认为“不可直接修改”,但选项表述为绝对化“不能修改”易被判定为错误(尤其与其他选项对比)
综合判断,D 是最合适的错误选项
5.创建存储过程应使用的语句是( )。
A) CREATE PROCEDURE B) DROP PROCEUDRE C) CREATE FUNCTION D) DROP FUNCTION
✅答案:A) CREATE PROCEDURE
- 明确语法:
CREATE PROCEDURE proc_name (...) ...
6.下列关于触发器的描述正确的是( )。
A) 触发器被触发的时刻可以指定为 BEFORE 或者 AFTER
B) 利用触发器可以维护数据的完整性
C) 删除一个表的同时也会删除该表上所有的触发器
D) 以上都正确
✅答案:D) 以上都正确
- A:正确,MySQL 支持
BEFORE/AFTER - B:正确,如自动更新日志、校验数据等
- C:正确,触发器依附于表,删表则触发器自动删除
7.下列关于存储过程的优点描述中,不正确的是( )。
A) 有利于减少网络流量
B) 可以作为安全机制使用
C) 可以保证数据的完整性
D) 预编译之后,执行速度快
✅答案:C) 可以保证数据的完整性
- A、B、D 均为存储过程的优点
- C 不准确:存储过程本身不能保证完整性,完整性由约束(主键、外键、CHECK)、触发器等实现;存储过程可以辅助实现,但“保证”一词过于绝对
8.在关系数据库中,当数据表被修改时,系统会自动执行的数据库对象是( )。
A) 存储过程 B) 触发器 C) 视图 D) 其他数据库对象
✅答案:B) 触发器
- 触发器的定义就是:在 INSERT/UPDATE/DELETE 时自动执行
9.下面关于触发器的描述,错误的是( )。
A) 触发器是一种特殊的存储过程,用户可以直接调用
B) 触发器在执行时会有跟触发器表结构相同的临时对象存在
C) 触发器可以用来定义比 CHECK 约束更复杂的规则
D) 删除触发器可以使用 DROP TRIGGER 命令
✅答案:A) 触发器是一种特殊的存储过程,用户可以直接调用
- 触发器不能被用户直接调用,只能由 DML 事件自动触发
- B 正确:指
OLD和NEW临时表 - C 正确:如跨表校验、复杂业务规则
- D 正确:
DROP TRIGGER [IF EXISTS] trigger_name;
10.下面关于触发器功能的描述,错误的是( )。
A) 可以强化约束
B) 能够级联运行
C) 能够提高安全性
D) 可以调用存储过程
✅答案:C) 能够提高安全性
- A、B、D 均正确
- C 有争议:触发器可间接增强安全(如禁止某些操作),但主要目的不是安全控制,且可能被绕过;相比授权、视图等,触发器不是标准安全机制。在多数教材中,“提高安全性”不被视为触发器的主要功能,故视为错误
更稳妥地说:安全性主要靠权限控制,触发器主要用于完整性与业务逻辑
✅ 填空题答案
1.将存储过程 myproc 删除的语句是______。
DROPPROCEDUREmyproc;若考虑安全:
DROP PROCEDURE IF EXISTS myproc;
2.将函数值从函数体中返回的语句是______。
RETURN表达式;例如:
RETURN x + y;
3.从触发实际上看触发器分为_________和________两类。
✅DML 触发器和DDL 触发器
但在MySQL 中只支持 DML 触发器(INSERT/UPDATE/DELETE)
严格按 MySQL 回答,也可填:行级触发器和语句级触发器
但 MySQL仅支持行级触发器(每行触发一次)
然而,题目问“从触发实际上看”,更通用的分类是:
✅BEFORE 触发器和AFTER 触发器
标准答案应为:BEFORE 和 AFTER
4.语句块定义的关键词分别是_______和________。
✅BEGIN和END
用于存储过程、函数、触发器中的复合语句块
示例:BEGIN...END
5.触发器工作时,有两个特别重要的临时对象用于获取触发事件影响的记录,这两个对象分别是_________和________。
✅OLD和NEW
OLD:表示修改或删除前的行(UPDATE/DELETE 时可用)NEW:表示插入或修改后的新行(INSERT/UPDATE 时可用)
例如:
BEFORE UPDATE ON table FOR EACH ROW SET NEW.update_time = NOW();
✅ 最终答案汇总
单选题:
| 题号 | 答案 |
|---|---|
| 1 | A |
| 2 | D |
| 3 | A |
| 4 | D |
| 5 | A |
| 6 | D |
| 7 | C |
| 8 | B |
| 9 | A |
| 10 | C |
填空题:
DROP PROCEDURE myproc;RETURNBEFORE和AFTERBEGIN和ENDOLD和NEW