数据库原理与应用(MySQL版)题库

题目、答案、解析完整呈现,便于学习和复习

解忧学生网提供技术支持

顶↑

习题1

一、选择题

1 数据模型通常由( )三要素构成。
A. 网络模型、关系模型、面向对象模型
B. 数据结构、网状模型、关系模型
C. 数据结构、数据操纵、关系模型
D. 数据结构、数据操纵、数据的完整性约束

答案:D

解析:数据模型的三要素是数据结构、数据操纵和数据的完整性约束。A选项是逻辑模型的分类;B、C选项混淆了三要素与逻辑模型类型,故排除。

2 在数据库方式下,信息处理中占据中心位置的是( )
A. 磁盘
B. 程序
C. 数据
D. 内存

答案:C

解析:数据库系统以数据为核心,数据独立于程序存在,程序围绕数据展开,磁盘和内存是存储介质,程序是处理工具,均非中心位置。

3 数据库的特点不包括( )
A. 数据冗余度大
B. 较高的数据独立性
C. 可共享
D. 长期存储在计算机内

答案:A

解析:数据库通过规范化设计和统一管理,实现数据冗余度低、共享性高、独立性强、长期存储的特点。A选项“数据冗余度大”是人工管理或文件系统阶段的缺陷,不属于数据库特点。

4 数据库系统(DBS)一般不包括( )
A. 数据库管理员
B. 网络设备
C. 数据库管理系统
D. 应用程序

答案:B

解析:数据库系统由数据库、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA)和用户组成。网络设备是硬件环境的一部分,并非DBS的核心组成部分。

5 数据库管理系统是( )
A. 采用了数据库技术的计算机系统
B. 包括数据库、硬件、软件和DBA的系统
C. 位于用户与操作系统之间的一层数据管理软件
D. 包含操作系统在内的数据管理软件系统

答案:C

解析:DBMS是专门管理数据库的软件,介于用户和操作系统之间,负责数据的定义、操纵、维护。A选项是数据库系统的定义,B选项包含了硬件、DBA等超出DBMS范围的元素,D选项错误(DBMS不包含操作系统)。

6 概念模型主要用于( )
A. 数据库设计的后期阶段
B. 计算机物理存储角度的建模
C. 设计初始阶段,帮助设计人员与用户交流
D. 数据库管理系统的实现

答案:C

解析:概念模型是从用户视角对现实世界的抽象,用于数据库设计初始阶段,方便设计人员与用户沟通需求,不涉及物理存储或DBMS实现,也不用于设计后期。

7 E-R图中实体用( )表示。
A. 菱形
B. 椭圆形
C. 矩形
D. 圆形

答案:C

解析:E-R图的标准表示:实体(矩形)、属性(椭圆形)、联系(菱形),圆形无对应含义。

8 在数据库系统的三级模式与二级映像结构中,以下哪一项不是其主要优点( )
A. 数据独立性
B. 数据冗余性
C. 数据安全性
D. 数据共享性

答案:B

解析:三级模式与二级映像的核心优点是数据独立性(逻辑+物理)、数据共享性、数据安全性,数据冗余性是需要避免的问题,并非优点。

9 数据库管理系统中,哪一级映像用于实现逻辑记录到物理存储记录的转换( )
A. 外模式/模式映像
B. 模式/内模式映像
C. 内模式/外模式映像
D. 应用程序/外模式映像

答案:B

解析:模式/内模式映像关联数据的逻辑结构(模式)和物理存储结构(内模式),实现逻辑记录到物理记录的转换,保证物理独立性;外模式/模式映像保证逻辑独立性。

10 DB的三级模式结构是对( )抽象的3个级别。
A. 存储器
B. 数据
C. 程序
D. 外存

答案:B

解析:三级模式(外模式、模式、内模式)分别从用户使用、系统逻辑、物理存储三个层面对数据进行抽象,与存储器、程序、外存无关。

11 在数据管理技术的发展历程中,( )数据通常存储在卡片或纸带上。
A. 数据库系统管理阶段
B. 文件系统阶段
C. 人工管理阶段
D. 智能管理阶段

答案:C

解析:人工管理阶段(最早阶段)数据存储在卡片或纸带上,数据依赖程序;文件系统阶段存储在磁盘文件;数据库系统阶段存储在数据库中,无“智能管理阶段”的标准分类。

12 数据库系统阶段,数据的特点不包括( )
A. 数据结构化
B. 数据共享性差
C. 数据独立性高
D. 数据由数据库管理系统统一管理

答案:B

解析:数据库系统阶段数据的核心特点:结构化、共享性高、独立性高、由DBMS统一管理。B选项“共享性差”是人工管理和文件系统阶段的特点。

13 以下关于数据库应用系统的说法,正确的是( )
A. 它不需要数据库系统作为基础
B. 只包括前端用户界面,不需要后端数据库
C. 开发过程只涉及编码实现这一个阶段
D. 可以通过应用程序实现数据的查询和更新操作

答案:D

解析:数据库应用系统必须以数据库系统为基础,包含前端界面和后端数据库,开发过程涉及需求分析、设计、编码、测试、维护等多个阶段,核心功能是通过应用程序操作数据(查询、更新等),故D正确。

14 以下关于数据库系统(DBS)的组成部分,说法错误的是( )
A. 应用程序不是数据库系统的必要组成部分
B. 数据库系统包含数据库和数据库管理系统
C. 数据库管理员在数据库系统的运行和维护中起到关键作用
D. 用户是数据库系统的重要组成部分,他们通过应用程序等方式使用数据库

答案:A

解析:DBS的必要组成部分包括数据库、DBMS、DBA和用户,应用程序是用户与数据库交互的主要载体,属于DBS的重要组成部分(非核心但必要),故A错误。

15 在图书馆数据库系统中,普通读者用户可以执行的操作为( )
A. 删除图书记录
B. 插入新的图书记录
C. 查询图书信息
D. 修改图书的馆藏位置

答案:C

解析:普通读者的权限仅限于查询图书信息,删除、插入、修改图书记录属于管理员的权限,避免数据被非法篡改。

二、填空题

1 数据库系统在( )的支持下才能工作。

答案:数据库管理系统(DBMS)

解析:数据库系统的核心是DBMS,负责数据的管理和维护,应用程序需通过DBMS访问数据库。

2 数据库的三级模式结构是对数据的3个抽象级别,分别是( )、( )、( )。

答案:外模式、模式、内模式

解析:外模式(用户视图)、模式(逻辑视图)、内模式(物理视图),三级模式通过两级映像实现数据独立性。

3 应用系统开发过程包括( )、( )、( )、( )、( )等多个阶段。

答案:需求分析、系统设计、编码实现、测试、维护

解析:软件开发生命周期的标准阶段,数据库应用系统开发需遵循该流程确保功能达标。

4 数据库管理系统(DBMS)提供用户与数据库的( ),用户可以通过它访问数据库中的数据。

答案:接口

解析:DBMS作为中间层,为用户和应用程序提供访问数据库的接口(如SQL语句、API等)。

5 概念模型是从用户的角度对数据和信息进行建模,主要描述从现实世界抽象出来的事物以及它们之间的联系,常见的表示方法是( )。

答案:E-R图(实体-联系图)

解析:E-R图是概念模型的标准表示方法,通过实体、属性、联系直观描述现实世界。

6 常见的逻辑模型主要包括( )、( )、( )、( )。

答案:层次模型、网状模型、关系模型、面向对象数据模型

解析:逻辑模型是数据库系统中实际采用的数据模型,关系模型是目前最主流的类型(如MySQL)。

7 物理模型是对数据最底层的抽象,从( )角度进行建模,主要用于( )。

答案:计算机物理存储、描述数据的物理存储结构

解析:物理模型关注数据在磁盘上的存储方式(如文件结构、索引结构),为数据存储提供底层支持。

8 数据库的三级模式结构包括( )、( )、( )。

答案:外模式、模式、内模式

解析:与第2题一致,强调三级模式的完整构成。

9 数据管理技术主要经历了( )、( )、( )阶段。

答案:人工管理、文件系统、数据库系统

解析:数据管理技术的三个发展阶段,逐步实现数据的高效管理和共享。

10 数据库系统阶段管理数据的特点有数据由数据库管理系统统一管理、( )、( )、( )。

答案:数据结构化、共享性高、冗余度低、数据独立性高(任选其三)

解析:数据库系统阶段的核心优势,区别于前两个阶段的关键特征。

三、简答题

1 使用数据库系统有什么好处?

答案:

  • 数据共享性高:多个用户/应用程序可同时访问同一数据,提高资源利用率;
  • 数据冗余度低:通过规范化设计减少重复数据,降低存储成本和数据不一致风险;
  • 数据独立性强:逻辑独立性(应用程序与数据逻辑结构分离)和物理独立性(应用程序与数据物理存储分离),降低维护成本;
  • 数据安全性和完整性有保障:DBMS提供权限管理、约束机制(实体完整性、参照完整性等),确保数据准确、安全;
  • 数据集中管理:便于数据的备份、恢复、监控和维护。

解析:从共享、冗余、独立性、安全性、管理效率五个核心维度总结,覆盖数据库系统的核心优势。

2 请简述数据库系统(DBS)的构成,并解释各个组成部分的作用。

答案:数据库系统由数据库、数据库管理系统(DBMS)、应用程序、数据库管理员(DBA)和用户组成:

  • 数据库:长期存储的共享数据集合,是DBS的核心数据载体,按一定结构组织数据;
  • DBMS:位于用户与操作系统之间的一层数据管理软件,负责数据的定义(DDL)、操纵(DML)、维护(备份、恢复)和控制(权限管理);
  • 应用程序:用户使用数据库的界面(如网站、客户端软件),通过DBMS实现数据的查询、更新等业务功能;
  • DBA:数据库管理员,负责数据库的规划、设计、部署、维护、安全管理,确保DBS正常运行;
  • 用户:数据库的使用者(如普通员工、管理员),通过应用程序或直接操作DBMS获取数据服务。

解析:明确DBS的五大组成部分,分别解释各部分的核心职能,体现“数据-软件-人”的协同关系。

3 用一个例子简要描述E-R图中实体、联系和属性的表示方法。

答案:示例:以“学生选课”场景为例

  • 实体:用矩形表示,如“学生”“课程”,矩形内标注实体名称;
  • 属性:用椭圆形表示,通过线段与实体连接,如“学生”的属性“学号”“姓名”“年龄”,“课程”的属性“课程号”“课程名”;
  • 联系:用菱形表示,菱形内标注联系名称(如“选课”),通过线段分别与“学生”和“课程”实体连接;若联系有属性(如“成绩”),则用椭圆形标注“成绩”并连接到“选课”菱形。

核心逻辑:学生(学号,姓名)通过“选课”联系(成绩)与课程(课程号,课程名)关联。

解析:结合实际场景,直观说明E-R图三大元素的表示规则,突出“实体-联系-属性”的关联关系。

4 数据库的发展历史分哪几个阶段?各有什么特点?

答案:数据管理技术经历三个阶段:

  • 人工管理阶段(20世纪50年代中期前):
    • 存储介质:卡片、纸带;
    • 特点:数据不共享、数据依赖程序、无专门管理软件、数据不能长期存储;
  • 文件系统阶段(20世纪50年代中期-60年代末):
    • 存储介质:磁盘文件;
    • 特点:数据可长期存储、有简单文件管理功能;但共享性差、冗余度高、数据独立性低;
  • 数据库系统阶段(20世纪60年代末至今):
    • 核心:数据库+DBMS;
    • 特点:数据结构化、共享性高、冗余度低、数据独立性强、由DBMS统一管理、数据安全性和完整性有保障。

解析:按时间顺序划分阶段,每个阶段从存储介质和核心特点两方面说明,突出各阶段的演进逻辑(从无管理到有管理,从低效率到高效率)。

5 简述数据库系统的三级模式与二级映像的优点。

答案:

  • 数据独立性高:
    • 外模式/模式映像:实现逻辑独立性,当模式(数据逻辑结构)改变时,可通过修改该映像使外模式(用户视图)不变,应用程序无需修改;
    • 模式/内模式映像:实现物理独立性,当内模式(数据物理存储)改变时,可通过修改该映像使模式不变,应用程序无需修改;
  • 数据共享性好:多个外模式可对应一个模式,不同用户可通过不同外模式访问同一数据库中的数据,实现数据共享;
  • 数据安全性和完整性易保障:通过模式统一管理数据结构和约束规则,便于设置用户权限和完整性约束(如主键、外键),确保数据安全准确。

解析:围绕“独立性”“共享性”“安全性”三大核心优点,结合两级映像的作用机制,解释三级模式结构的价值。

二、填空题

1 设关系R和S的属性个数分别为r和s,则R×S操作结果的属性个数为( )
A. r+s
B. r-s
C. r×s
D. max(r,s)

答案:C

解析:笛卡尔积运算的定义:两个关系的笛卡尔积结果,属性个数为两个关系属性个数之和,元组个数为两个关系元组个数之积。故选C。

2 在关系代数中,选择σ操作的作用是 ( )
A. 选取符合条件的元组
B. 选取符合条件的属性
C. 返回两个关系的交集
D. 将元组按属性进行排序

答案:A

解析:选择操作(σ)的核心是“筛选元组”,根据指定条件从关系中选取满足条件的元组;B选项是投影操作(π)的作用;C选项是交集运算(∩)的作用;D选项需结合ORDER BY子句,关系代数中无直接排序操作。

3 关系代数中,( ) 不是基本操作。
A. 笛卡尔积 (×)
B. 投影 (π)
C. 合并 (∪)
D. 聚合 (Aggregation)

答案:D

解析:关系代数的基本操作包括:并(∪)、差(-)、笛卡尔积(×)、选择(σ)、投影(π),这些操作不可再分解;聚合(如SUM、COUNT)属于扩展操作,需基于基本操作实现,故选D。

4 若关系 R 中有 m 个元组,关系 S 中有 n 个元组,关系 R 和 S 的笛卡尔积 (R×S) 有 ( ) 个元组。
A. m
B. n
C. m×n
D. m+n

答案:C

解析:笛卡尔积的元组个数规则:两个关系的元组个数乘积,与属性个数无关。例如R有2个元组,S有3个元组,笛卡尔积有6个元组。

5 参照完整性约束的作用是 ( )
A. 确保数据的唯一性
B. 保证表中的数据不会重复
C. 确保两个表之间的数据一致性
D. 关联两个表中的主键

答案:C

解析:参照完整性约束通过外键与主键的关联实现,要求外键值必须是对应主键的有效值或空值,核心作用是确保两个关联表之间的数据一致性(如学生表与选课表,选课表的学号必须在学生表中存在);A、B是实体完整性的作用;D是外键的功能而非约束目的。

6 在关系模型的完整性约束中,实体完整性规则是指关系中的 ( )
A. 属性值不允许重复
B. 属性值不允许为空
C. 主键值不允许为空
D. 外键值不允许为空

答案:C

解析:实体完整性规则的定义:关系中的主键值必须唯一且非空,确保每个元组可唯一标识;A选项错误(非主键属性值可重复);B选项错误(非主键属性值可空);D选项是参照完整性的要求(外键值可空)。

7 在关系模型的完整性约束中,参照完整性规则要求 ( )
A. 不允许引用不存在的元组
B. 允许引用不存在的元组
C. 不允许引用不存在的属性
D. 允许引用不存在的属性

答案:A

解析:参照完整性规则的核心:外键所引用的主键必须存在于关联表中,不允许引用不存在的元组(如选课表的课程号不能引用课程表中不存在的课程号);C、D选项与属性无关,参照完整性关注元组关联。

8 以下关于外键和相应主键之间关系的说法不正确的是 ( )
A. 外键一定要与主键同名
B. 外键不一定要与主键同名
C. 主键值不允许是空值,但外键值可以是空值
D. 外键所在的关系与主键所在的关系可以是同一个关系

答案:A

解析:外键与主键的核心要求是“数据类型一致”,名称可不同(如学生表主键为“学号”,选课表外键可名为“学生学号”);B正确;主键需满足实体完整性(非空唯一),外键可空(如未选课的学生,选课表中外键学号可空),C正确;外键可用于自关联(如员工表中“上级编号”引用自身“员工编号”),D正确。故选A。

9 假设学生关系是 S (sno,sname,sex,age)、课程关系是 C (cno,cname,teacher)、学生选课关系是 SC (sno,cno,grade),如果要查找选修“DB”课程的“女”学生的姓名,需要关联的关系为 ( )
A. S
B. SC和C
C. S和SC
D. S、SC和C

答案:D

解析:查找逻辑:需从S表筛选“女”学生(sex='女'),从C表筛选“DB”课程(cname='DB'),通过SC表的sno关联S表,cno关联C表,三者缺一不可,才能获取选修目标课程的女生姓名。

10 下列关系代数恒等式中,错误的是 ( )
A. R-S=R-(R∩S)
B. R=(R-S)∪(R∩S)
C. R∩S=S-(S-R)
D. R∪S=S-(R-S)

答案:D

解析:验证各选项: A. 差运算的等价式:R减去S等于R减去R与S的交集,正确; B. 集合的划分:R可分为“属于R但不属于S”和“属于R且属于S”两部分,正确; C. 交集的等价式:R与S的交集等于S减去“属于S但不属于R”,正确; D. 并运算的正确等价式应为R∪S=(R-S)∪(R∩S)∪(S-R),选项中表达式结果为S,显然错误。

11 在关系代数中,投影操作 π_A (R) 的作用是 ( )
A. 从关系R中删除属性A
B. 从关系R中选择属性A的值组成新的关系
C. 从关系R中删除属性A对应的元组
D. 返回关系R中所有属性的值

答案:B

解析:投影操作(π)的核心是“筛选属性”,从关系中选取指定属性列组成新关系;A选项是删除属性(需修改关系模式),C选项是删除元组(选择操作),D选项是查询所有属性(π_* (R))。

12 关系代数中的并操作∪要求参与操作的两个关系 ( )
A. 必须有相同的属性个数
B. 必须有完全相同的属性名
C. 必须有相同的元组个数
D. 可以有完全不同的属性

答案:A

解析:并操作(∪)的前提是两个关系“同构”,即属性个数相同且对应属性的域(数据类型)兼容,属性名可不同(但需按顺序对应);元组个数可不同,最终结果合并去重。B选项“完全相同的属性名”非必需,A选项是核心要求。

二、填空题

习题2

一、选择题

二、填空题

1 在关系数据库中,关系称为 ( ),元组称为 ( ),属性称为 ( );关系中不允许有重复元组的原因是 ( )。

答案:二维表、行、列、主键(或唯一约束)保证元组唯一性

解析:关系的本质是二维表,元组对应表中的行,属性对应表中的列;重复元组会导致数据冗余和不一致,通过主键或唯一约束确保元组唯一性。

2 实体完整性规则是对 ( ) 的约束,参照完整性规则是对 ( ) 的约束。

答案:主键、外键

解析:实体完整性约束主键的唯一性和非空性,参照完整性约束外键与主键的关联一致性。

3 在关系 A (S,SN,D) 和 R (D,CN,NM) 中,A 的主码是 S,R 的主码是 D,则 D 在 A 中称为 ( )。

答案:外码(外键)

解析:外键的定义:若关系中某属性是另一个关系的主键,则该属性为外键,用于建立两个关系的关联。

4 设有关系模式 EMP (职工号,姓名,年龄,技能)。假设职工号唯一,每个职工有多项技能,则 EMP 表的主码是 ( )。

答案:职工号

解析:主码需唯一标识元组,职工号唯一,即使每个职工有多项技能,职工号仍可唯一标识每条记录(技能为多值属性,需确保主码唯一性)。

5 有一个关系:学生 (学号,姓名,系别),规定学号的值域是 8 个数字组成的字符串,这一规则属于 ( ) 完整性约束。

答案:用户自定义

解析:完整性约束分为实体完整性、参照完整性、用户自定义完整性,用户自定义完整性是根据业务需求设定的特定规则(如格式、范围约束)。

6 设有学生表 S (学号,姓名,班级) 和学生选课表 SC (学号,课程号,成绩),为维护数据一致性,表 S 与 SC 之间应满足 ( ) 完整性约束。

答案:参照完整性

解析:SC 表的 “学号” 是外键,引用 S 表的 “学号”(主键),需通过参照完整性约束确保选课表的学号在学生表中存在,避免数据不一致。

7 在关系数据库中,为了表示两个实体之间的联系,通常会使用一个 ( ) 关系。

答案:中间(或关联)

解析:两个实体间的多对多(M:N)联系需通过中间关系实现(如学生与课程的 M:N 联系通过选课表实现),一对一、一对多联系可通过外键直接关联,但中间关系是通用方式。

8 关系代数中的选择运算 (σ) 是用于从关系中选择 ( ) 的元组。

答案:满足特定条件

解析:选择运算的核心是 “按条件筛选元组”,条件通常为逻辑表达式(如 σ_age>20 (学生))。

9 设有关系 R (A,B,C) 和 S (B,D),其中 A 是 R 的主码,B 是 R 和 S 的外码(也是 S 的主码)。那么,通过 B 将 R 和 S 连接起来的操作称为 ( ) 连接。

答案:自然(或等值)

解析:自然连接是等值连接的特殊形式,要求两个关系中连接属性(此处为 B)名称和域相同,自动合并重复属性;等值连接仅要求域相同,名称可不同。

10 在关系 R 中,如果属性 A 上的值能够唯一标识关系中的每一个元组,则称 A 为 R 的 ( )。

答案:候选码(或主码)

解析:候选码的定义:能唯一标识元组的最小属性集,主码是选定的一个候选码。

11 为了确保数据库中的数据是准确的和可靠的,数据库管理系统 (DBMS) 通常实施三种类型的完整性约束:( )、( )、( )。

答案:实体完整性、参照完整性、用户自定义完整性

解析:完整性约束的三大分类,分别保障元组唯一、关联一致、业务规则合规。

12 在关系代数中,基本运算包括 ( )、( )、( )、( )、( )。

答案:并(∪)、差(-)、笛卡尔积(×)、选择(σ)、投影(π)

解析:关系代数的五大基本运算,可组合实现其他复杂运算(如连接、除运算)。

三、操作题

1 假设有表R(选课信息)和表S(必修课程信息),如何找出那些选了所有必修课程(即选了数据库和数据结构)的学生?请使用关系代数操作解决这个问题,并详细说明操作过程和结果。

R(学生选课信息):

<
SID <Course
S001 数据库
S001 数据结构
S002 数据库
S002 数据结构
S003 数据库

S(必修课程信息):

<
Course
数据库
数据结构

要求:

  • (1) 使用关系代数中的某种操作来解决这个问题。
  • (2) 详细说明操作过程,包括如何计算每个学生的象集,以及如何判断象集是否包含所有必修课程。
  • (3) 给出最终的结果,并解释为什么这些学生被选中。

答案:

  1. 采用的关系代数操作:除运算(R ÷ S)
  2. 操作过程:
    • (1)计算每个学生的象集:象集是指关系R中每个学生(SID)对应的所有课程(Course)集合。
      • S001的象集:{数据库,数据结构}(S001选了两门课程);
      • S002的象集:{数据库,数据结构}(S002选了两门课程);
      • S003的象集:{数据库}(S003仅选了一门课程);
    • (2)除运算的逻辑:R ÷ S的结果是所有“象集包含S中全部课程”的学生SID。S中的必修课程集合为{数据库,数据结构},需判断每个学生的象集是否包含该集合。
  3. 最终结果:{S001,S002}
  4. 结果解释:
    • S001和S002的象集均包含所有必修课程(数据库、数据结构),满足“选了所有必修课程”的条件;
    • S003的象集仅包含“数据库”,缺少“数据结构”,不满足条件,故被排除。

解析:除运算的核心是“查找包含所有目标集合的元组”,适用于“选了所有某类课程”“满足所有条件”等场景。步骤中先计算象集(按SID分组聚合课程),再通过除运算筛选出象集包含S的学生,逻辑清晰且符合关系代数规则。

习题3

一、选择题

1 SQL在( )年被首次提出。
A. 1974
B. 1986
C. 1987
D. 1992

答案:A

解析:SQL由IBM公司于1974年首次提出,1986年成为美国国家标准(SQL-86),1987年成为国际标准。

2 SQL集多种功能于一体,不包括( )
A. 数据查询
B. 数据加密
C. 数据定义
D. 数据控制

答案:B

解析:SQL的核心功能包括数据查询(DQL,如SELECT)、数据定义(DDL,如CREATE)、数据操纵(DML,如INSERT/UPDATE/DELETE)、数据控制(DCL,如GRANT/REVOKE),不包含数据加密功能。

3 在SQL功能分类中,用于数据查询的动词是( )
A. INSERT
B. CREATE
C. SELECT
D. GRANT

答案:C

解析:INSERT属于数据操纵(插入数据),CREATE属于数据定义(创建对象),GRANT属于数据控制(授予权限),SELECT是数据查询的核心动词。

4 MySQL中,用于表示整数,存储长度默认为4字节的类型是( )
A. DECIMAL
B. FLOAT
C. INT
D. CHAR

答案:C

解析:INT是MySQL的标准整数类型,默认存储长度为4字节(范围-2147483648~2147483647);DECIMAL是十进制小数类型,FLOAT是浮点型,CHAR是字符串类型。

5 SQL中,SALARY IN(1000, 2000)的语义是( )
A. SALARY ≤ 2000 AND SALARY ≥ 1000
B. SALARY < 2000 AND SALARY > 1000
C. SALARY = 2000 AND SALARY = 1000
D. SALARY = 2000 OR SALARY = 1000

答案:D

解析:IN子句的语义是“值属于指定集合”,即SALARY等于集合中的任意一个值,逻辑上等价于OR连接的等式。A选项是BETWEEN 1000 AND 2000的语义,C选项逻辑矛盾(一个值不能同时等于两个数)。

6 在SQL的数据控制功能中,用于授予权限的动词是( )
A. REVOKE
B. GRANT
C. INSERT
D. UPDATE

答案:B

解析:GRANT用于授予用户权限(如GRANT SELECT ON students TO user1),REVOKE用于回收权限,INSERT/UPDATE属于数据操纵。

7 布尔型数据的取值有( )
A. 0和1
B. "是"和"否"
C. True和False
D. 以上都不对

答案:C

解析:布尔型(BOOLEAN)的标准取值为True(真)和False(假),0和1是整数类型,"是"/"否"是字符串类型,均非布尔型的原生取值。

8 以下关于浮点型的说法,错误的是( )
A. 采用科学记数法形式存储
B. 单精度浮点数通常占用4个字节
C. 双精度浮点数通常占用8个字节
D. 进行高精度计算不会出现精度损失

答案:D

解析:浮点型(FLOAT/DOUBLE)采用科学记数法存储,单精度(FLOAT)占4字节,双精度(DOUBLE)占8字节;但由于二进制存储的局限性,浮点型进行高精度计算(如金融计算)时会出现精度损失,需使用DECIMAL类型。

9 DECIMAL(p,s)中,p代表( )
A. 数值数据中小数点后的数字位数
B. 数值数据的最大长度
C. 整数部分的长度
D. 小数部分的长度

答案:B

解析:DECIMAL(p,s)的参数定义:p是数值的总长度(整数部分+小数部分),s是小数点后的位数。例如DECIMAL(5,2)表示总长度5位,小数2位(整数部分最多3位)。

10 以下属于SQL的特点是( )
A. 高度过程化
B. 综合统一
C. 面向集合的操作方式
D. 同一种语法结构提供多种使用方式

答案:A

解析:SQL的核心特点包括综合统一(集多功能于一体)、面向集合(操作对象和结果是集合)、非过程化(无需指定执行步骤)、语法结构灵活(可交互或嵌入程序)。A选项“高度过程化”是其反面,不属于SQL特点。

11 创建数据表时,指定主键约束的关键字是( )
A. PRIMARY KEY
B. FOREIGN KEY
C. UNIQUE
D. DEFAULT

答案:A

解析:PRIMARY KEY用于定义主键(唯一且非空),FOREIGN KEY定义外键,UNIQUE定义唯一约束(可空),DEFAULT定义默认值约束。

12 删除已建立的视图v_cavg的正确命令是( )
A. DROP v_cavg VIEW
B. DROP VIEW v_cavg
C. DELETE v_cavg VIEW
D. DELETE VIEW v_cavg

答案:B

解析:删除视图的标准语法为“DROP VIEW 视图名”,DELETE用于删除表中的记录,而非删除视图对象。

13 SELECT语句中,用于去除结果集中重复行的关键字是( )
A. DISTINCT
B. ALL
C. UNIQUE
D. GROUP BY

答案:A

解析:DISTINCT用于去除重复行(如SELECT DISTINCT sno FROM SC),ALL是默认值(保留重复行),UNIQUE不是SELECT的去重关键字,GROUP BY用于分组。

14 创建索引时,若要创建唯一索引,使用的关键字是( )
A. INDEX
B. UNIQUE INDEX
C. PRIMARY INDEX
D. FULLTEXT INDEX

答案:B

解析:创建唯一索引的语法为“CREATE UNIQUE INDEX 索引名 ON 表名(列名)”,INDEX创建普通索引,PRIMARY INDEX非标准语法(主键索引通过PRIMARY KEY自动创建),FULLTEXT INDEX是全文索引。

15 以下关于视图的说法,错误的是( )
A. 视图可以简化复杂的查询
B. 视图是虚拟表,不存储实际数据
C. 不能对视图进行修改操作
D. 创建视图使用CREATE VIEW语句

答案:C

解析:视图是基于表的虚拟表,不存储数据,仅存储查询定义,可简化复杂查询(如将多表连接封装为视图);部分视图支持修改操作(如基于单表、无聚合函数的视图),并非所有视图都不能修改,故C错误。

二、填空题

1 1986年10月,美国国家标准局批准了SQL作为关系数据库语言的美国标准,同年公布的SQL标准文本简称为( )。

答案:SQL-86

解析:1986年发布的首个SQL标准,后续还有SQL-92、SQL:2003等版本。

2 SQL集( )、( )、( )、( )等功能于一体。

答案:数据查询、数据定义、数据操纵、数据控制

解析:SQL的四大核心功能,对应DQL、DDL、DML、DCL。

3 在SQL的数据定义功能中,创建表使用的动词是( ),删除表使用的动词是( ),修改表结构使用的动词是( )。

答案:CREATE TABLE、DROP TABLE、ALTER TABLE

解析:DDL的核心命令:创建表(CREATE TABLE)、删除表(DROP TABLE,删除表结构和数据)、修改表结构(ALTER TABLE,如添加列、修改列类型)。

4 MySQL支持的数据类型主要分为4类,即( )、( )、( )、( )。

答案:字符串类型、数值类型、日期和时间类型、布尔类型

解析:MySQL的核心数据类型分类,覆盖大部分业务场景:字符串(CHAR/VARCHAR)、数值(INT/DECIMAL/FLOAT)、日期时间(DATE/DATETIME)、布尔(BOOLEAN)。

5 CHAR类型的字符串长度取值范围为( )。

答案:0~255

解析:CHAR是固定长度字符串,长度范围0~255字节,不足指定长度时用空格填充。

6 日期型数据DATE格式为( ),时间型数据TIME格式为( )。

答案:YYYY-MM-DD、HH:MM:SS

解析:MySQL中DATE仅存储日期(年-月-日),TIME仅存储时间(时:分:秒),DATETIME存储日期+时间(YYYY-MM-DD HH:MM:SS)。

7 布尔运算中,AND运算表示( );OR运算表示( );NOT运算是( )。

答案:只有两个条件都为True时结果为True、只要一个条件为True时结果为True、对布尔值取反

解析:布尔运算的逻辑规则:AND(与)、OR(或)、NOT(非),用于组合查询条件。

8 数据库中,( )用于保证表中某列的值唯一非空,通常作为表的主键;( )用于建立两个表之间的关联关系。

答案:主键(PRIMARY KEY)、外键(FOREIGN KEY)

解析:主键的核心作用是唯一标识元组(唯一+非空),外键通过引用另一表的主键建立关联。

9 SQL中,使用( )语句修改表结构。

答案:ALTER TABLE

解析:ALTER TABLE的常见用法:添加列(ALTER TABLE 表名 ADD 列名 类型)、修改列类型(ALTER TABLE 表名 MODIFY 列名 类型)、删除列(ALTER TABLE 表名 DROP 列名)。

10 插入数据到表中的SQL语句是( )。

答案:INSERT INTO

解析:插入数据的语法:INSERT INTO 表名(列名1,列名2) VALUES(值1,值2),若插入所有列可省略列名(需按表结构顺序)。

11 删除数据库的SQL语句格式为( )。

答案:DROP DATABASE 数据库名

解析:删除数据库的标准语法,执行后将删除数据库及其包含的所有表和数据,需谨慎操作。

12 在SQL功能分类中,数据控制功能使用的动词是( )和( )。

答案:GRANT、REVOKE

解析:GRANT用于授予用户权限(如查询、修改权限),REVOKE用于回收已授予的权限。

三、简答题

1 试述SQL语言的特点。

答案:SQL语言的核心特点:

  • 综合统一:集数据查询(DQL)、数据定义(DDL)、数据操纵(DML)、数据控制(DCL)功能于一体,无需切换语言;
  • 面向集合的操作方式:操作对象是关系(二维表),结果也是关系,而非单条记录;
  • 非过程化:只需指定“做什么”(如查询哪些数据),无需指定“怎么做”(如执行步骤),由DBMS自动优化执行计划;
  • 同一种语法结构多种使用方式:既可直接在终端交互执行(交互式SQL),也可嵌入到Java、Python等程序中执行(嵌入式SQL);
  • 语言简洁、易学易用:核心关键字少(如SELECT、INSERT、CREATE),语法接近自然语言。

解析:从功能、操作方式、执行逻辑、使用场景、易用性五个维度总结,突出SQL与其他编程语言的核心区别(非过程化、面向集合)。

2 请写出创建一个名为students的学生信息表的SQL语句,该表包含以下字段:
student_id: 学生ID,整数类型,主键。
name: 学生姓名,字符串类型,最大长度100字符,不允许为空。
age: 年龄,整数类型。
score: 分数,十进制类型,最多5位数,其中包括2位小数。

答案:

CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, age INT, score DECIMAL(5, 2) );

解析:字段定义说明:
- student_id:INT类型+PRIMARY KEY,确保唯一非空;
- name:VARCHAR(100)(可变长度字符串,最大100字符)+NOT NULL,不允许为空;
- age:INT类型,无额外约束(可空);
- score:DECIMAL(5,2),总长度5位,小数2位(整数部分最多3位,范围-999.99~999.99),适合存储分数类数据。

3 假设students表已经存在,并且包含以下数据:
| student_id | name | age | score |
|------------|------|-----|-------|
| 1 | Alice | 20 | 88.50 |
| 2 | Bob | 22 | 92.00 |
请写出以下SQL语句:
(1) 向表中插入一条新记录,学生ID为3,姓名为Charlie,年龄为21,分数为75.75。
(2) 更新学号为1的学生的分数为90.00。
(3) 删除学号为2的学生记录。

答案:

(1) 插入记录:

INSERT INTO students (student_id, name, age, score) VALUES (3, 'Charlie', 21, 75.75);

解析:指定插入的列名和对应值,字符串类型用单引号包裹,数值类型直接写值。

(2) 更新记录:

UPDATE students SET score = 90.00 WHERE student_id = 1;

解析:UPDATE语句用于修改数据,SET指定修改的列和值,WHERE指定修改条件(避免全表更新)。

(3) 删除记录:

DELETE FROM students WHERE student_id = 2;

解析:DELETE语句用于删除数据,FROM指定表名,WHERE指定删除条件(避免全表删除)。

4 为emp_c表按员工的名字(ename)建立索引,索引名为emp_name_idx。

答案:

CREATE INDEX emp_name_idx ON emp_c (ename);

解析:索引创建语法:CREATE INDEX 索引名 ON 表名(列名);该索引为普通索引,用于加速按ename的查询(如WHERE ename='张三');若需唯一索引,可添加UNIQUE关键字(CREATE UNIQUE INDEX ...)。

5 设某商业集团中有若干公司,人事数据库中有3个基本表:
职工关系EMP(E#, ENAME, AGE, SEX, CITY)
工作关系WORKS(E#, C#, SALARY)
公司关系COMP(C#, CNAME, CITY, MGR_E#)
在3个基本表中,字段AGE和SALARY为数值型,其他字段均为字符型。请完成以下操作:
(1) 检索超过50岁的男职工的工号和姓名。
(2) 假设每个职工可在多个公司工作,检索每个职工的兼职公司数目和工资总数。显示(E#, NUM, SUM_SALARY),分别表示工号、公司数目和工资总数。
(3) 检索联华公司中低于本公司职工平均工资的所有职工的工号和姓名。
(4) 为联华公司的职工加薪5%。
(5) 在WORKS表中删除年龄大于60岁的职工记录。

答案:

(1) 检索超过50岁的男职工的工号和姓名:

SELECT E#, ENAME FROM EMP WHERE AGE > 50 AND SEX = '男';

解析:直接筛选EMP表中AGE>50且SEX='男'的记录,投影工号和姓名。

(2) 检索每个职工的兼职公司数目和工资总数:

SELECT E#, COUNT(C#) AS NUM, SUM(SALARY) AS SUM_SALARY FROM WORKS GROUP BY E#;

解析:按E#分组(每个职工),COUNT(C#)统计公司数目,SUM(SALARY)计算工资总数,AS指定别名便于显示。

(3) 检索联华公司中低于本公司职工平均工资的所有职工的工号和姓名:

SELECT E.E#, E.ENAME FROM EMP E JOIN WORKS W ON E.E# = W.E# JOIN COMP C ON W.C# = C.C# WHERE C.CNAME = '联华公司' AND W.SALARY < ( SELECT AVG(SALARY) FROM WORKS W2 JOIN COMP C2 ON W2.C# = C2.C# WHERE C2.CNAME = '联华公司' );

解析:子查询计算联华公司的平均工资,主查询关联三张表,筛选工资低于平均工资的职工。

(4) 为联华公司的职工加薪5%:

UPDATE WORKS SET SALARY = SALARY * 1.05 WHERE C# = ( SELECT C# FROM COMP WHERE CNAME = '联华公司' );

解析:子查询获取联华公司的C#,UPDATE语句为该公司的职工工资乘以1.05(加薪5%)。

(5) 在WORKS表中删除年龄大于60岁的职工记录:

DELETE FROM WORKS WHERE E# IN ( SELECT E# FROM EMP WHERE AGE > 60 );

解析:子查询获取年龄>60的职工E#,DELETE语句删除WORKS表中对应记录。

习题4

一、选择题

1 下列关于范围查询的描述,正确的是( )
A. 只能使用BETWEEN AND来表示范围
B. IN子句不能用于数值范围查询
C. BETWEEN AND 和IN都可以用于表示范围
D. BETWEEN表示范围时,不包括边界值

答案:C

解析:范围查询的两种常用方式:
- BETWEEN AND:表示闭区间范围(包含边界值,如AGE BETWEEN 20 AND 30 等价于AGE≥20 AND AGE≤30);
- IN:表示离散值范围(如SALARY IN (1000,2000,3000)),可用于数值、字符串等类型。
A错误(并非只能用BETWEEN AND),B错误(IN可用于数值范围),D错误(BETWEEN包含边界值),故选C。

2 在SQL查询中,要实现模糊查询应使用( )运算符。
A. =
B. <>
C. LIKE
D. IN

答案:C

解析:模糊查询的核心运算符是LIKE,结合通配符使用:%表示任意长度的字符串(包括空字符串),_表示单个字符;=是精确匹配,<>是不等于,IN是离散值匹配,均不支持模糊查询。

3 使用ORDER BY子句进行排序时,若要降序排列,应使用( )关键字。
A. ASC
B. DESC
C. ORDER
D. BY

答案:B

解析:ORDER BY的排序规则:ASC表示升序(默认,可省略),DESC表示降序(如ORDER BY SALARY DESC 按工资降序);ORDER和BY是子句关键字,非排序方向关键字。

4 在SQL中,计算某列的平均值应使用( )函数。
A. SUM
B. COUNT
C. AVG
D. MAX

答案:C

解析:聚合函数的功能:SUM(求和)、COUNT(统计记录数)、AVG(求平均值)、MAX(求最大值),故选C。

5 以下哪种连接会返回包括左表中所有记录和右表中满足连接条件的记录,如果右表中没有满足条件的记录,则结果中右表的部分包含空值?( )
A. 内连接
B. 右外连接
C. 左外连接
D. 自连接

答案:C

解析:连接类型的核心区别:
- 内连接:仅返回两表中满足连接条件的记录;
- 左外连接:返回左表所有记录+右表满足条件的记录,右表无匹配时返回NULL;
- 右外连接:返回右表所有记录+左表满足条件的记录,左表无匹配时返回NULL;
- 自连接:表与自身连接,用于处理同一表中的关联数据(如员工与上级)。故选C。

6 在SQL中,子查询必须出现在( )中。
A. FROM子句
B. WHERE子句
C. SELECT子句
D. 以上都可以

答案:D

解析:子查询可出现在多个子句中:
- WHERE子句:如SELECT * FROM EMP WHERE AGE > (SELECT AVG(AGE) FROM EMP);
- FROM子句:如SELECT T.ENAME FROM (SELECT * FROM EMP WHERE SEX='男') T;
- SELECT子句:如SELECT ENAME, (SELECT CNAME FROM COMP WHERE C#=W.C#) FROM EMP E JOIN WORKS W ON E.E#=W.E#。故选D。

7 SQL语句中,用于从数据库表中选取数据的语句是( )
A. INSERT
B. UPDATE
C. DELETE
D. SELECT

答案:D

解析:INSERT用于插入数据,UPDATE用于修改数据,DELETE用于删除数据,SELECT用于查询数据(选取数据)。

8 下列关于SQL中GROUP BY子句的描述,错误的是( )
A. GROUP BY子句用于将结果集按一个或多个列进行分组
B. GROUP BY子句通常与聚合函数一起使用
C. GROUP BY子句可以出现在WHERE子句之前
D. 每个分组都会有一个聚合函数计算出的值

答案:C

解析:GROUP BY的使用规则:
- 功能:按指定列分组,将相同值的记录归为一组;
- 搭配:通常与聚合函数(SUM/COUNT/AVG等)一起使用,计算每组的统计值;
- 顺序:GROUP BY必须出现在WHERE子句之后、ORDER BY子句之前,不能出现在WHERE之前;
- 结果:每个分组对应一条记录,包含分组列和聚合函数结果。故选C。

9 下列哪个不是SQL中的聚合函数?( )
A. COUNT
B. SUM
C. AVG
D. DISTINCT

答案:D

解析:聚合函数包括COUNT(统计)、SUM(求和)、AVG(求平均)、MAX(最大值)、MIN(最小值)等;DISTINCT是用于去除重复值的关键字(如SELECT DISTINCT E# FROM WORKS),并非聚合函数。

10 在SQL查询中,要筛选列值在某个集合中的记录,应使用( )子句。
A. WHERE列名=值
B. WHERE列名IN(值1,值2,...)
C. WHERE列名BETWEEN值1 AND值2
D. WHERE列名LIKE%值%

答案:B

解析:IN子句用于筛选列值属于指定集合的记录(如WHERE C# IN ('C1','C2'));A是精确匹配单个值,C是连续范围查询,D是模糊查询。

11 在SQL中,使用( )可以比较两个NULL值。
A. =
B. IS
C. BETWEEN
D. IN

答案:B

解析:SQL中NULL表示“未知值”,不能用=或<>比较(结果仍为NULL),需使用IS NULL(判断为空)或IS NOT NULL(判断非空);BETWEEN和IN均不支持NULL比较。

12 下列关于SQL中HAVING子句的描述,正确的是( )
A. HAVING子句用于对查询结果进行排序
B. HAVING子句通常与GROUP BY子句一起使用
C. HAVING子句可以单独使用,不需要GROUP BY子句
D. HAVING子句中的条件表达式不能包含聚合函数

答案:B

解析:HAVING的使用规则:
- 功能:筛选分组后的结果(如筛选平均工资>5000的部门);
- 搭配:必须与GROUP BY一起使用(不能单独使用),用于过滤分组统计结果;
- 区别于WHERE:WHERE筛选原始记录,HAVING筛选分组结果;
- 条件:可包含聚合函数(如HAVING AVG(SALARY)>5000)。
A错误(排序用ORDER BY),C错误(需搭配GROUP BY),D错误(可包含聚合函数),故选B。

13 下列哪个SQL语句用于更新表中的记录?( )
A. SELECT
B. INSERT
C. UPDATE
D. DELETE

答案:C

解析:SELECT(查询)、INSERT(插入)、UPDATE(更新)、DELETE(删除)是DQL和DML的核心语句,对应数据操作的不同场景。

14 在SQL中,要删除表中的记录,应使用( )语句。
A. DROP TABLE
B. TRUNCATE TABLE
C. DELETE FROM
D. ALTER TABLE

答案:C

解析:删除数据的三种方式区别:
- DELETE FROM:删除表中的记录(可通过WHERE条件指定删除范围),保留表结构,可回滚;
- DROP TABLE:删除表结构和所有数据,不可回滚;
- TRUNCATE TABLE:删除所有记录(不可指定条件),保留表结构,不可回滚(效率高于DELETE);
- ALTER TABLE:修改表结构,不用于删除数据。故选C。

15 下列关于SQL中ORDER BY子句的描述,正确的是( )
A. ORDER BY子句用于指定查询结果的分组方式
B. ORDER BY子句可以出现在WHERE子句之前
C. ORDER BY子句默认按升序排列结果
D. ORDER BY子句中的列可以是表中的任意列

答案:C

解析:ORDER BY的使用规则:
- 功能:对查询结果排序,而非分组(分组用GROUP BY);
- 顺序:必须出现在WHERE、GROUP BY、HAVING之后,是SELECT语句的最后一个子句;
- 默认排序:ASC(升序),可省略;
- 排序列:可以是表中的列,也可以是聚合函数或表达式(如ORDER BY AVG(SALARY)),但并非“任意列”(需是查询结果中存在的列或可计算的表达式)。
A错误(分组用GROUP BY),B错误(顺序错误),D错误(非任意列),故选C。

16 在SQL查询中,若要筛选出单价大于5且库存量小于100的产品信息,应使用( )逻辑运算符。
A. AND
B. OR
C. NOT
D. BETWEEN

答案:A

解析:两个条件需同时满足(单价>5 且 库存量<100),使用AND运算符;OR表示任意一个条件满足,NOT表示否定条件,BETWEEN用于范围查询。

17 SQL中,若要从多个表中联合查询,应使用( )操作。
A. JOIN
B. UNION
C. INTERSECT
D. VALUES

答案:A

解析:多表联合查询的核心是JOIN(连接),通过关联条件将多个表的数据合并(如内连接、外连接);UNION用于合并两个查询结果集(需同构),INTERSECT用于取两个结果集的交集,VALUES用于插入数据时指定值。故选A。

二、填空题

1 在SQL查询中,要筛选出年龄大于30且小于50的用户,可以使用( )运算符。

答案:BETWEEN AND 或 AND

解析:两种实现方式:
- WHERE AGE BETWEEN 31 AND 49(闭区间,需排除30和50);
- WHERE AGE > 30 AND AGE < 50(直接用AND连接条件)。

2 使用LIKE运算符进行模糊查询时,百分号(%)表示( ),下划线(_)表示( )。

答案:任意长度的字符串(包括空字符串)、单个字符

解析:通配符规则:%匹配任意长度(0个或多个)字符,_仅匹配单个字符(如LIKE '张%' 匹配“张三”“张伟”,LIKE '张_' 仅匹配“张三”“张丽”等两个字的姓名)。

3 使用ORDER BY子句对查询结果进行排序时,默认情况下是按照( )顺序排序。

答案:ASC(升序)

解析:ORDER BY默认升序,可省略ASC关键字;降序需显式指定DESC。

4 在SQL中,计算一列中不同值的个数应使用( )函数。

答案:COUNT(DISTINCT 列名)

解析:COUNT(列名)统计非空值个数,COUNT(*)统计所有记录数,COUNT(DISTINCT 列名)统计列中不同值的个数(如COUNT(DISTINCT E#) 统计不同职工的数量)。

5 内连接返回的是两个表中( )的记录。

答案:满足连接条件

解析:内连接(INNER JOIN)的核心是“匹配”,仅返回两个表中符合连接条件(如E#=E#)的记录,不匹配的记录会被过滤。

6 左外连接除了返回内连接的匹配记录外,还返回( )的记录。

答案:左表中不满足连接条件

解析:左外连接(LEFT JOIN)以左表为基准,保留左表所有记录,右表匹配的记录显示对应值,不匹配的记录显示NULL。

7 嵌套查询中,子查询通常出现在( )子句中。

答案:WHERE

解析:子查询最常用的场景是作为WHERE子句的条件(如筛选满足某个子查询结果的记录),也可出现在FROM、SELECT子句中,但WHERE子句是最常见的。

8 在SQL中,要删除整个表及其结构,应使用( )语句。

答案:DROP TABLE

解析:DROP TABLE 表名 会删除表的结构和所有数据,不可恢复;DELETE FROM仅删除数据,保留表结构;TRUNCATE TABLE删除数据,保留表结构。

9 使用SQL的SUM函数可以计算一列数值的( )。

答案:总和

解析:SUM函数的功能是对指定列的数值求和(忽略NULL值),如SUM(SALARY) 计算工资总和。

10 在SQL查询中,若要根据某个列的值进行分组并计算每组的平均值,可以使用( )子句和( )函数。
10在SQL查询中,若要根据某个列的值进行分组并计算每组的平均值,可以使用( )子句和( )函数。

答案:GROUP BY、AVG

解析:GROUP BY 用于按指定列分组,AVG 函数用于计算每组的平均值,二者搭配实现分组统计(如 SELECT 部门, AVG(工资) FROM 员工 GROUP BY 部门)。

11要在SQL查询中筛选出列值以某个字符串开头的记录,可以使用LIKE运算符和( )通配符。

答案:%

解析:% 通配符匹配任意长度的字符串(包括空字符串),格式为 LIKE '前缀%'(如 LIKE 'SQL%' 匹配“SQL基础”“SQL进阶”)。

12在进行多表连接查询时,若希望返回包括左表中所有记录和右表中满足连接条件的记录(即使右表中没有匹配项),应使用( )连接。

答案:左外(LEFT JOIN 或 LEFT OUTER JOIN)

解析:左外连接以左表为基准,保留左表所有记录,右表无匹配时返回 NULL,符合“包含左表所有记录”的需求。

13SQL查询语句中,用于指定从哪个表中检索数据的子句是( )。

答案:FROM

解析:FROM 子句明确查询的数据源,可指定表、视图或子查询(如 SELECT * FROM 员工 WHERE 年龄>30)。

三、简答题
1解释SQL中SELECT语句的基本结构,并列出其主要子句。

答案:

1. 基本结构:SELECT语句用于从数据库中查询数据,核心逻辑是“选择列→从表中→筛选记录→分组→筛选分组→排序”。

2. 主要子句(按执行顺序排列):

  • SELECT:指定要查询的列(如列名1, 列名2 或 * 表示所有列),可使用别名(AS);
  • FROM:指定查询的数据源(表、视图、子查询);
  • WHERE:筛选原始记录(基于行级条件,如 AGE>20);
  • GROUP BY:按指定列分组(将相同值的记录归为一组);
  • HAVING:筛选分组后的结果(基于组级条件,如 AVG(SALARY)>5000);
  • ORDER BY:对查询结果排序(按指定列升序/降序)。

示例:

SELECT DEPT, AVG(SALARY) AS AVG_SALFROM EMPWHERE AGE > 25GROUP BY DEPTHAVING AVG(SALARY) > 6000ORDER BY AVG_SAL DESC;

解析:按执行顺序解释各子句的功能,突出“从原始数据到最终结果”的筛选、分组、排序流程,子句顺序不可随意调整。

2什么是SQL中的聚合函数?列举至少三个常见的聚合函数,并解释它们的作用。

答案:

1. 聚合函数的定义:对一组数据进行计算并返回单个结果值的函数,常用于分组统计(与 GROUP BY 搭配)。

2. 常见聚合函数及作用:

  • COUNT():统计记录数或非空值个数,如 COUNT(*) 统计所有记录数,COUNT(COL) 统计列 COL 的非空值个数;
  • SUM():计算数值列的总和,忽略 NULL 值,如 SUM(SALARY) 计算工资总和;
  • AVG():计算数值列的平均值,忽略 NULL 值,如 AVG(AGE) 计算平均年龄;
  • MAX():获取列的最大值,如 MAX(SCORE) 计算最高分数;
  • MIN():获取列的最小值,如 MIN(PRICE) 计算最低价格。

解析:聚合函数的核心特征是“多进一出”,即输入一组数据,输出一个统计结果,需与 GROUP BY 搭配使用(无 GROUP BY 时默认对全表统计)。

3描述SQL中内连接和外连接的区别,并解释它们的使用场景。

答案:

1. 核心区别:

  • 内连接(INNER JOIN):仅返回两个表中满足连接条件的记录,不匹配的记录会被过滤;
  • 外连接:分为左外连接(LEFT JOIN)和右外连接(RIGHT JOIN),保留基准表的所有记录,关联表不匹配的记录显示 NULL;
    • 左外连接:保留左表所有记录,右表匹配则显示值,不匹配则显示 NULL;
    • 右外连接:保留右表所有记录,左表匹配则显示值,不匹配则显示 NULL。

2. 使用场景:

  • 内连接:需获取两个表中“都存在”的关联数据(如查询有选课记录的学生和课程信息);
  • 左外连接:需获取左表所有数据,无论是否有匹配的关联数据(如查询所有学生的选课情况,包括未选课的学生);
  • 右外连接:需获取右表所有数据,无论是否有匹配的关联数据(如查询所有课程的选课情况,包括无学生选的课程)。

解析:核心区别在于“是否保留基准表的不匹配记录”,使用场景需根据“是否需要保留全量数据”判断,内连接强调“匹配”,外连接强调“全量+匹配”。

4解释SQL中BETWEEN AND运算符的作用,并给出一个使用示例。

答案:

1. 作用:用于查询列值在某个连续范围内的记录,属于闭区间(包含边界值),等价于“列名 ≥ 最小值 AND 列名 ≤ 最大值”。

2. 使用示例:查询年龄在20~30岁(含20和30岁)的学生信息:

SELECT * FROM studentsWHERE age BETWEEN 20 AND 30;

等价于:

SELECT * FROM studentsWHERE age ≥ 20 AND age ≤ 30;

解析:BETWEEN AND 简化了连续范围查询的语法,需注意边界值包含在内;若需排除边界值,需手动使用 > 和 < 运算符。

5什么是SQL中的模糊查询?如何使用LIKE运算符进行模糊查询?

答案:

1. 模糊查询的定义:不明确指定查询条件的完整匹配值,而是通过通配符匹配部分符合条件的记录(如查询姓名包含“张”字的学生)。

2. LIKE运算符的使用:需搭配通配符,常用通配符包括:

  • %:匹配任意长度的字符串(包括空字符串);
  • :匹配单个字符。

3. 示例:

  • 查询姓名以“李”开头的学生:SELECT * FROM students WHERE name LIKE '李%';
  • 查询姓名包含“晓”字的学生:SELECT * FROM students WHERE name LIKE '%晓%';
  • 查询姓名为3个字且中间字为“小”的学生:SELECT * FROM students WHERE name LIKE '小'。

解析:模糊查询适用于“不确定完整查询值”的场景,通配符 % 用于任意长度匹配, 用于固定长度的单个字符匹配,需根据查询需求选择合适的通配符组合。

6简述SQL中子查询的作用,并给出一个使用示例。

答案:

1. 子查询的作用:将一个查询结果作为另一个查询的条件、数据源或列值,用于解决复杂查询需求(如基于一个查询结果筛选另一个表的数据)。

2. 使用示例:查询工资高于公司平均工资的员工信息:

SELECT * FROM empWHERE salary > (SELECT AVG(salary) FROM emp);

解析:子查询(SELECT AVG(salary) FROM emp)计算公司的平均工资,主查询筛选工资高于该平均值的员工。

其他场景示例:查询选修了“数据库”课程的学生姓名(子查询作为条件):

SELECT sname FROM studentWHERE sno IN (SELECT sno FROM scJOIN course ON sc.cno = course.cnoWHERE cname = '数据库');

解析:子查询可嵌套在 WHERE、FROM、SELECT 子句中,核心是“用一个查询的结果辅助另一个查询”,简化复杂逻辑的实现。

习题5

一、选择题

1 关系模式中数据依赖问题的存在,可能会导致库中数据删除异常,这是指( )。
A. 该删除的数据不能实现删除
B. 数据删除后导致数据库处于不一致状态
C. 删除了不该删除的数据
D. 以上都不对

答案:C

解析:删除异常通常指由于数据依赖(如部分依赖、传递依赖),导致在删除某个元组时,会连带删除掉其他不应被删除的信息。

2 假设关系 \( R(A1, A2, A3) \) 上的函数依赖集 \( F=\{A1 \rightarrow A2, A1 \rightarrow A3, A2 \rightarrow A3\} \),则函数依赖( )。
A. \( A1 \rightarrow A2 \) 是冗余的
B. \( A1 \rightarrow A3 \) 是冗余的
C. \( A2 \rightarrow A3 \) 是冗余的
D. \( A1 \rightarrow A2, A1 \rightarrow A3, A2 \rightarrow A3 \) 都不是冗余的

答案:B

解析:由函数依赖集可推导出 \( A1 \rightarrow A2 \) 和 \( A2 \rightarrow A3 \),根据传递律可得 \( A1 \rightarrow A3 \),因此 \( A1 \rightarrow A3 \) 是冗余的。

3 对于关系模式 \( R(X, Y, Z) \),下列结论错误的是( )。
A. 若 \( X \rightarrow Y, Y \rightarrow Z \),则 \( X \rightarrow Z \)
B. 若 \( X \rightarrow Z \),则 \( XY \rightarrow Z \)
C. 若 \( XY \rightarrow Z \),则 \( X \rightarrow Z, Y \rightarrow Z \)
D. 若 \( X \rightarrow Y, X \rightarrow Z \),则 \( X \rightarrow YZ \)

答案:C

解析:函数依赖 \( XY \rightarrow Z \) 仅表示属性组 \( XY \) 决定 \( Z \),不能推出 \( X \) 或 \( Y \) 单独决定 \( Z \)。例如,当 \( X \) 和 \( Y \) 共同决定 \( Z \),但单独一个属性不能决定 \( Z \)。

4 下列关于函数依赖的叙述中,错误的是( )。
A. 若 \( A \rightarrow B, B \rightarrow C \),则 \( A \rightarrow C \)
B. 若 \( A \rightarrow B, B \rightarrow C \),则 \( A \rightarrow BC \)
C. 若 \( A \rightarrow BC \),则 \( A \rightarrow B, A \rightarrow C \)
D. 若 \( A \rightarrow BC \),则 \( A \rightarrow B, B \rightarrow C \)

答案:D

解析:函数依赖 \( A \rightarrow BC \) 可以通过分解规则推出 \( A \rightarrow B \) 和 \( A \rightarrow C \),但不能推出 \( B \rightarrow C \)。

5 设学生关系模型 \( S_{n}(学号, 姓名, 性别, 学院) \) 的主码是学号,成绩关系模型 \( SC(学号, 课程号, 成绩) \) 的主码是(学号, 课程号),若关系模型 \( R(学号, 姓名, 性别, 学院, 课程号, 成绩) \) 的主码为(学号, 课程号),则 \( R \) 满足( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF

答案:A

解析:在 \( R \) 中,主码是(学号, 课程号),但存在非主属性(姓名、性别、学院)部分依赖于主码中的“学号”,违反了2NF。因此,\( R \) 只满足1NF。

6 将满足 3NF 的关系( )后,可将其规范化为 BCNF。
A. 消除非主属性对码的部分函数依赖
B. 消除非主属性对码的传递函数依赖
C. 消除主属性对码的部分和传递函数依赖
D. 消除非主属性对码的部分和传递函数依赖

答案:C

解析:3NF消除了非主属性对码的部分和传递依赖。BCNF则更严格,要求消除所有属性(包括主属性和非主属性)对码的部分和传递依赖,即每一个决定因素都包含候选码。

7 设关系模式 \( R \) 属于 1NF,若在 \( R \) 中消除了部分函数依赖,则 \( R \) 至少属于( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF

答案:B

解析:2NF的定义就是在1NF的基础上消除了非主属性对码的部分函数依赖。

8 如果关系模式 \( R \) 中的属性都是主属性,则 \( R \) 至少属于( )。
A. 3NF
B. BCNF
C. 1NF
D. 2NF

答案:A

解析:如果所有属性都是主属性,则不存在非主属性对码的部分和传递依赖问题,因此至少满足3NF。

9 设有关系模式 \( R(ABC) \),其函数依赖集 \( F=\{AB \rightarrow C, BC \rightarrow A\} \),则关系 \( R \) 最高达到( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF

答案:D

解析:候选码为 \( AB \) 和 \( BC \)。所有属性都是主属性,且所有函数依赖的左边都包含候选码(\( AB \) 或 \( BC \)),因此满足BCNF。

10 设有关系模式 \( R(ABC) \),其函数依赖集 \( F=\{A \rightarrow B, B \rightarrow C\} \),则关系 \( R \) 最高达到( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF

答案:B

解析:候选码为 \( A \)。存在非主属性 \( C \) 对候选码 \( A \) 的传递依赖(\( A \rightarrow B, B \rightarrow C \)),违反了3NF,但满足2NF(因为不存在部分依赖)。

11 下列说法中不正确的是( )。
A. 任何一个包含两个属性的关系模式一定满足 3NF
B. 任何一个包含两个属性的关系模式一定满足 BCNF
C. 任何一个包含三个属性的关系模式一定满足 3NF
D. 任何一个关系模式都一定有码

答案:C

解析:对于包含三个属性的关系模式,可能存在非主属性对候选码的传递依赖,从而不满足3NF。例如 \( R(A,B,C) \),若 \( A \rightarrow B, B \rightarrow C \),则不满足3NF。而A、B、D选项的陈述是正确的。

12 规范化理论中的第一范式(1NF)要求数据库表中的每个字段( )。
A. 可以包含任何数据类型
B. 只能是数字类型
C. 必须唯一
D. 不能为空

答案:A

解析:1NF的核心要求是属性具有原子性,即不可再分。这指的是属性值本身是单一的、原子的,而不是说字段必须是唯一的或非空。

13 规范化理论中的函数依赖描述了数据之间( )。
A. 值之间的关系
B. 属性之间的关系
C. 表与表之间的关系
D. 记录与记录之间的关系

答案:B

解析:函数依赖是描述同一个关系模式中不同属性之间的一种制约关系,即一个(组)属性的值可以决定另一个(组)属性的值。

14 在数据库规范化理论中,为了减少非主属性对主键的传递依赖,需要确保每个非主属性都完全依赖于主键,这指的是( )。
A. 1NF
B. 2NF
C. 3NF
D. BCNF

答案:C

解析:3NF的定义就是消除非主属性对候选码的传递依赖。确保每个非主属性都完全依赖于主键是2NF的要求,而3NF在此基础上进一步要求消除传递依赖。

15 第三范式(3NF)要求数据库表中不存在非主属性对主键的传递依赖,这里的传递依赖是指( )。
A. \( A \rightarrow B \) 且 \( B \rightarrow C \),但 \( A \) 不是 \( B \) 或 \( C \) 的候选码
B. \( A \rightarrow B \) 且 \( B \rightarrow C \),但 \( A \) 和 \( C \) 之间没有直接关系
C. \( A \rightarrow B \) 且 \( B \rightarrow C \),且 \( A \) 是 \( C \) 的候选码
D. \( A \rightarrow B \) 且 \( B \rightarrow C \),且 \( A \) 和 \( C \) 都是候选码

答案:A

解析:传递依赖的经典形式是 \( A \rightarrow B \), \( B \rightarrow C \),并且 \( B \) 不决定 \( A \),同时 \( A \) 不是 \( B \) 的候选码(也不是 \( C \) 的候选码)。这导致了 \( C \) 通过 \( B \) 传递依赖于 \( A \)。

二、填空题

1 一个不好的关系模式会存在 **数据冗余**、**插入隔离** 和 **更新任务** 等弊端。

答案:数据冗余、插入异常、删除异常、更新异常

解析:一个不规范的关系模式通常会导致四大问题:数据冗余(同一信息多次存储)、插入异常(想插入数据却因缺少部分主属性而无法插入)、删除异常(删除一个元组时可能丢失其他有用信息)和更新异常(更新部分数据可能导致数据不一致)。

2 3NF 是基于“______”依赖的范式。

答案:函数

解析:3NF(第三范式)是基于函数依赖理论提出的,旨在消除关系模式中的传递函数依赖。

3 规范化过程是通过投影分解把______关系模式分解为______的关系模式。

答案:低范式、高范式

解析:规范化的核心思想是将一个满足较低范式要求(存在较多问题)的关系模式,通过投影运算分解为多个满足较高范式要求(问题较少)的关系模式集合。

4 关系模式的好与坏用______衡量。

答案:范式

解析:范式是衡量关系模式设计优劣程度的理论标准。范式等级越高(如BCNF, 3NF),通常认为其结构越规范,产生数据异常的可能性越小。

5 消除了非主属性对候选码部分依赖的关系模式称为 \(\frac{2}{N}\) 模式。

答案:2NF

解析:第二范式(2NF)的定义:在满足1NF的基础上,消除了所有非主属性对候选码的部分函数依赖。

6 消除了非主属性对候选码传递依赖的关系模式称为 \(\frac{2}{N}\) 模式。

答案:3NF

解析:第三范式(3NF)的定义:在满足2NF的基础上,消除了所有非主属性对候选码的传递函数依赖。

7 消除了每一属性对候选码传递依赖的关系模式称为 \(\text{BcM}\) 模式。

答案:BCNF

解析:BCNF(Boyce-Codd范式)的定义:在满足1NF的基础上,对于关系模式中的每一个非平凡的函数依赖 \( X \rightarrow Y \),X都包含候选码。这等价于消除了任何属性(包括主属性和非主属性)对候选码的部分和传递依赖。

8 设关系模式 \( R(U), x, y \) 是 \( U \) 的子集,\( x \) 是 \( x \) 的任意一个真子集,若______并且______,则称 \( y \) 部分函数依赖于 \( x_0 \)。

答案:\( x \rightarrow y \)、\( x \nrightarrow y \) (即存在 \( x' \subset x \),使得 \( x' \rightarrow y \))

解析:部分函数依赖的定义:如果 \( x \rightarrow y \),并且存在 \( x \) 的一个真子集 \( x' \),使得 \( x' \rightarrow y \) 也成立,则称 \( y \) 部分函数依赖于 \( x \)。

9 设关系模式 \( R(U), x, y, z \) 是 \( U \) 的子集,若 \( x \rightarrow y, \) ______,且 \( y \rightarrow x \),但______,则称 \( z \) 传递函数依赖于 \( x_0 \)。

答案:\( y \rightarrow z \)、\( y \nrightarrow x \)

解析:传递函数依赖的定义:如果 \( x \rightarrow y \),\( y \rightarrow z \),并且 \( y \nrightarrow x \)(即 \( y \) 不决定 \( x \)),则称 \( z \) 传递函数依赖于 \( x \)。

10 如果一个满足 1NF 关系的所有属性合起来组成一个关键字,则该关系最高满足的范式是______。

答案:BCNF

解析:如果所有属性一起构成候选码(全码),则关系中不存在非主属性,自然满足2NF和3NF。同时,对于任何函数依赖 \( X \rightarrow Y \),其决定因素 \( X \) 必然包含候选码(因为所有属性都是主属性),因此满足BCNF。

11 从关系规范化理论的角度讲,一个只满足 1NF 的关系可能存在的四方面问题是:

答案:数据冗余、插入异常、删除异常、更新异常

解析:这是不规范关系模式带来的典型问题集合。

12 第二范式(2NF)是在第一范式(1NF)的基础上消除了______。

答案:非主属性对主码(候选码)的部分函数依赖

解析:这是2NF的核心要求。

13 第三范式(3NF)是在第二范式(2NF)的基础上消除了______。

答案:非主属性对主码(候选码)的传递函数依赖

解析:这是3NF的核心要求。

14 将1NF的关系模式转变为2NF的关系模式,是消除了非主属性对主码的______。

答案:部分函数依赖

解析:这是从1NF到2NF规范化过程的实质。

三、简答题

1 设有关系模式 \( R(A, B, C, D, E) \),\( R \) 中的属性均不可再分解,若只基于函数依赖进行讨论,试根据给定的函数依赖集 \( F \) 分析 \( R \) 最高属于第几范式。
(1) \( F=\{AB→C, AB→D, ABC→E\} \)
(2) \( F=\{AB→C, AB→D, AB→E\} \)
(3) \( F=\{AB→C, AB→E, A→D, BD→ACE\} \)

答案与解析:
(1)
候选码: \( AB \)(由 \( AB \rightarrow C, AB \rightarrow D, ABC \rightarrow E \) 可推出 \( AB \rightarrow E \))
检查范式:

  • 所有非主属性 \( C, D, E \) 都完全依赖于候选码 \( AB \),满足2NF。
  • 不存在非主属性对候选码的传递依赖,满足3NF。
  • 检查BCNF:函数依赖 \( ABC \rightarrow E \) 中,决定因素 \( ABC \) 不包含候选码 \( AB \) 吗?实际上 \( ABC \) 是超码,它包含了候选码 \( AB \)。但我们需要看所有函数依赖的左边是否都包含候选码。\( AB \rightarrow C \) 和 \( AB \rightarrow D \) 的决定因素 \( AB \) 就是候选码。\( ABC \rightarrow E \) 的决定因素 \( ABC \) 是超码。因此满足BCNF。
所以,(1) 最高属于 BCNF

(2)
候选码: \( AB \)。
检查范式:
  • 所有非主属性 \( C, D, E \) 都完全依赖于候选码 \( AB \),满足2NF。
  • 不存在非主属性之间的依赖关系,因此没有传递依赖,满足3NF。
  • 所有函数依赖 \( AB \rightarrow C, AB \rightarrow D, AB \rightarrow E \) 的决定因素 \( AB \) 都是候选码,满足BCNF。
所以,(2) 最高属于 BCNF

(3)
求候选码:由 \( BD \rightarrow ACE \) 可知 \( BD \) 是候选码(能推出所有属性)。同时,由 \( AB \rightarrow C, AB \rightarrow E, A \rightarrow D \) 可得 \( AB \) 也能推出所有属性(\( AB \rightarrow AB, AB \rightarrow C, AB \rightarrow E \),又因为 \( A \rightarrow D \),所以 \( AB \rightarrow D \),从而 \( AB \rightarrow ABCDE \))。因此候选码有 \( AB \) 和 \( BD \)。
检查范式:
  • 存在部分依赖吗?考虑非主属性 \( D \)。它依赖于候选码 \( AB \) 吗?根据 \( A \rightarrow D \),非主属性 \( D \) 部分依赖于候选码 \( AB \)(仅依赖于其中的 \( A \))。因此违反了2NF。
所以,(3) 最高只属于 1NF

2 设有关系模式 \( R \)(运动员编号,比赛项目,成绩,比赛类别,比赛主管),用于存储运动员比赛成绩及比赛类别、主管等信息。
语义规定:每个运动员每参加一个比赛项目只有一个成绩;每个比赛项目只属于一个比赛类别;每个比赛类别只有一个比赛主管。
试回答下列问题:
(1) 根据上述规定,写出模式 \( R \) 的基本函数依赖集和候选码。
(2) 说明 \( R \) 不是2NF的理由,并把 \( R \) 分解成2NF模式集。
(3) 进而分解成3NF模式集。

答案与解析:
设属性:运动员编号(A),比赛项目(B),成绩(C),比赛类别(D),比赛主管(E)。

(1) 基本函数依赖集与候选码

  • 根据“每个运动员每参加一个比赛项目只有一个成绩”:\( (A, B) \rightarrow C \)
  • 根据“每个比赛项目只属于一个比赛类别”:\( B \rightarrow D \)
  • 根据“每个比赛类别只有一个比赛主管”:\( D \rightarrow E \)(同时可传递推出 \( B \rightarrow E \))
因此,函数依赖集 \( F = \{ (A, B) \rightarrow C, B \rightarrow D, D \rightarrow E \} \)。
候选码:由于 \( (A, B) \) 可以决定所有属性(\( (A,B) \rightarrow C \),又因为 \( B \rightarrow D \) 且 \( D \rightarrow E \),所以 \( (A,B) \rightarrow D, E \)),所以 \( (A, B) \) 是候选码。

(2) 2NF判定与分解
理由:R的候选码是 \( (A, B) \),但存在非主属性 \( D \) 和 \( E \) 部分依赖于候选码(实际上它们只依赖于候选码的一部分 \( B \),即 \( B \rightarrow D, B \rightarrow E \)),违反了2NF。
分解为2NF:消除部分依赖。将部分依赖的属性(D,E)与它们所依赖的部分主属性(B)单独组成一个关系,剩下的属性与完整主码组成另一个关系。
  • R1(比赛项目B,比赛类别D,比赛主管E) 函数依赖:\( B \rightarrow D, D \rightarrow E \)
  • R2(运动员编号A,比赛项目B,成绩C) 函数依赖:\( (A, B) \rightarrow C \)
此时,R1的候选码是 \( B \),R2的候选码是 \( (A, B) \)。两个关系均满足2NF。

(3) 3NF判定与分解
检查分解后的关系:
  • R2(\( A, B, C \)):只有一个函数依赖 \( (A,B) \rightarrow C \),决定因素就是候选码,满足BCNF(自然也满足3NF)。
  • R1(\( B, D, E \)):函数依赖为 \( B \rightarrow D \) 和 \( D \rightarrow E \)。候选码是 \( B \)。这里存在非主属性 \( E \) 对候选码 \( B \) 的传递依赖(\( B \rightarrow D, D \rightarrow E \),且 \( D \nrightarrow B \)),因此R1只满足2NF,不满足3NF。
将R1进一步分解为3NF:消除传递依赖。
  • R11(比赛类别D,比赛主管E) 函数依赖:\( D \rightarrow E \)
  • R12(比赛项目B,比赛类别D) 函数依赖:\( B \rightarrow D \)
最终的3NF模式集为:{ R2(\( A, B, C \)), R11(\( D, E \)), R12(\( B, D \)) }。
3 某宾馆的收费管理系统中用关系模式“收费(宾客姓名,性别,年龄,身份证号,地址,客房号,住宿日期,退房日期,押金)”进行记录,语义为:宾客中可能存在同名的现象。一个客人可以有多次、不同时间到该宾馆住宿。
(1) 关系模式 \( R \) 最高已经达到第几范式?为什么?
(2) 如果 \( R \) 不属于2NF,请将 \( R \) 分解成2NF模式集。

答案与解析:
设属性:宾客姓名(N),性别(S),年龄(Age),身份证号(ID),地址(Addr),客房号(RNo),住宿日期(CIn),退房日期(COut),押金(Dep)。
根据语义“宾客中可能存在同名的现象

习题6

一、选择题

1 以下哪个不是业务规则在数据库设计中的体现?( )。
A. 设置字段的唯一约束
B. 随意设计数据表结构
C. 建立外键约束
D. 设置检查约束

答案:B

解析:业务规则是构建数据库的约束和逻辑基础,需通过设计来体现,如设置唯一约束、外键约束、检查约束等。随意设计数据表结构不符合规范,无法体现业务规则。

2 逻辑结构设计阶段的关键步骤是( )。
A. 绘制 E-R 图
B. 确定存储结构
C. E-R 图转换成表
D. 建立索引

答案:C

解析:逻辑结构设计阶段的主要任务是将概念模型(E-R图)转换为特定数据库管理系统所支持的数据模型(如关系模型,即表结构)。A是概念设计阶段,B、D是物理设计阶段的任务。

3 以下哪种存储方式插入新数据比较方便,但查询效率可能较低(非存储顺序条件查询)?( )。
A. 哈希存储
B. 索引存储
C. 顺序存储
D. 随机存储

答案:C

解析:顺序存储中,新数据通常追加在末尾,插入方便。但若查询条件不按存储顺序,则需全表扫描,效率较低。哈希存储(针对等值查询)和索引存储(针对特定字段)通常能提高查询效率。

4 哈希存储的缺点不包括( )。
A. 可能导致哈希冲突
B. 不适合范围查询
C. 数据检索速度慢
D. 哈希函数设计要求高

答案:C

解析:哈希存储的主要优点是精确匹配查询(等值查询)速度快。其缺点包括:可能产生哈希冲突、难以支持范围查询、对哈希函数设计有较高要求。因此,“数据检索速度慢”不是哈希存储的典型缺点。

5 数据库实施阶段的第一步是( )。
A. 数据载入
B. 编写与调试应用程序
C. 建立数据库结构
D. 数据库试运行

答案:C

解析:数据库实施阶段是按照逻辑设计和物理设计的结果,在计算机上建立实际的数据库结构、装入数据、进行测试和试运行的过程。第一步是使用DDL语句创建数据库、表、视图等,即建立数据库结构。

6 在数据库设计中,用 E-R 图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的( )阶段。
A. 需求分析
B. 概念设计
C. 逻辑设计
D. 物理设计

答案:B

解析:概念结构设计的目标是产生反映企业组织信息需求的数据库概念结构,即概念模型。E-R图是概念模型的常用表示方法,它独立于具体的DBMS和计算机硬件,不涉及信息在计算机中的具体表示。

7 在关系数据库设计中,设计关系模式是( )的任务。
A. 需求分析阶段
B. 概念设计阶段
C. 逻辑设计阶段
D. 物理设计阶段

答案:C

解析:逻辑结构设计阶段的任务是将概念模型(如E-R图)转换为具体DBMS支持的数据模型(如关系模型)。对于关系数据库,这个转换的结果就是一组关系模式(表结构)的设计。

8 在数据库概念设计中,最常用的数据模型是( )。
A. 形象模型
B. 物理模型
C. 逻辑模型
D. 实体-联系模型

答案:D

解析:实体-联系模型(E-R模型)使用实体、属性和联系来描述现实世界的概念模型,它是数据库概念设计阶段最常用、最著名的工具。

9 数据流程是在数据库( )阶段完成的。
A. 逻辑设计
B. 物理设计
C. 需求分析
D. 概念设计

答案:C

解析:需求分析阶段的任务是详细调查现实世界,了解用户的数据需求、处理需求和安全性与完整性要求。数据流程图(Data Flow Diagram, DFD)是描述系统中数据流程的常用工具,用于表达数据的流动和处理过程。

10 从 E-R 模型向关系模型转换,一个 M: N 的联系转换成关系模式时,该关系模式的键是( )。
A. M 端实体的键
B. N 端实体的键
C. M 端实体键与 N 端实体键的组合
D. 重新选取其他属性

答案:C

解析:一个M:N联系转换为一个独立的关系模式时,该模式的属性包括联系本身的属性以及两端实体的主键。由于多对多关系中,单独一端实体的主键都无法唯一标识联系,所以必须将两端实体的主键组合起来作为该关系模式的主键。

11 下列对 E-R 图设计的说法中错误的是( )。
A. 设计局部 E-R 图中,能作为属性处理的客观事物应尽量作为属性处理
B. 局部 E-R 图中的属性均应为原子属性,即不能再细分为子属性的组合
C. 对局部 E-R 图集成时既可以一次实现全部集成,也可以两两集成,逐步进行
D. 集成后所得的 E-R 图中可能存在冗余数据和冗余联系,应予以全部清除

答案:D

解析:A、B、C均为E-R图设计的正确原则。D选项错误,因为在集成后,为了保持信息的完整性或提高查询效率,有时需要保留一定的数据冗余和联系冗余。清除冗余应以不破坏数据完整性和不损失必要信息为前提,不能“全部清除”。

12 E-R 图到关系模式的转化过程中,下列说法错误的是( )。
A. 一个一对一的联系可以转换为一个独立的关系模式
B. 一个涉及三个以上实体的多元联系也可以转换为一个独立的关系模式
C. 在对关系模型优化时,有些模式可能要进一步分解,有些模式可能要合并
D. 关系模式的规范化程度越高,查询的效率就越高

答案:D

解析:A、B、C均为正确的转换或优化原则。D选项错误,规范化理论主要解决数据冗余和更新异常问题。规范化程度越高(如达到BCNF),表分解得越细,在查询时可能需要更多的连接操作,反而可能导致查询效率降低。因此,需要在规范化和查询性能之间取得平衡。

13 数据库概念结构设计阶段的工作步骤依次为( )。
A. 设计局部视图→抽象→修改重构消除冗余→合并取消冲突
B. 设计局部视图→抽象→合并取消冲突→修改重构消除冗余
C. 抽象→设计局部视图→修改重构消除冗余→合并取消冲突
D. 抽象→设计局部视图→合并取消冲突→修改重构消除冗余

答案:D

解析:概念结构设计通常采用自顶向下、自底向上、逐步扩张或混合策略,其核心步骤一般遵循:首先进行数据抽象(识别实体、属性、联系等),然后设计局部E-R视图(针对不同用户组或应用),接着将局部视图合并成全局视图(需解决命名、属性、结构等冲突),最后对全局E-R图进行优化(修改与重构,消除不必要的冗余)。

14 在某学校的综合管理系统设计阶段,教师实体在学籍管理子系统中被称为“教师”,而在人事管理子系统中被称为“职工”,这类冲突被称为( )。
A. 语义冲突
B. 命名冲突
C. 属性冲突
D. 结构冲突

答案:B

解析:在合并局部E-R图时,命名冲突是指同一意义的对象在不同局部视图中命名不同(如本题的“教师”和“职工”),或者不同意义的对象具有相同的名字。

15 在需求分析阶段,常用( )描述用户单位的业务流程。
A. 数据流程
B. E-R 图
C. 程序流程图
D. 判定表

答案:A

解析:在需求分析阶段,数据流程图(Data Flow Diagram, DFD)是描述系统中数据流动、存储和处理的图形工具,它能清晰地表达用户单位的业务流程。E-R图用于概念设计,程序流程图和判定表多用于描述程序逻辑。

16 某销售公司需开发数据库应用系统管理客户的商品购买信息。该系统需要记录客户的姓名、出生日期、年龄和身份证号信息,记录客户每次购买的商品名称和购买时间等信息。如果在设计时将出生日期和年龄都设定为客户实体的属性,则年龄属于(①),数据库的购买记录表中每条购买记录对应的客户必须在客户表中存在,这1个约束属于(②)。
① A. 派生属性 B. 多值属性 C. 主属性 D. 复合属性
② A. 参与约束 B. 参照完整性约束 C. 映射约束 D. 主键约束

答案:B① A;② B

解析: ① 年龄可以从出生日期派生(计算)出来,因此属于派生属性。在数据库设计中,通常只存储出生日期,不存储年龄,以避免数据冗余和更新异常。 ② 购买记录表中的客户信息必须参照客户表中的客户信息(如通过客户ID),这体现了表之间的引用关系,属于参照完整性约束。

二、填空题

1 数据库设计可以分为六个基本步骤,即______、______、______、______、______、______。

答案:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施、数据库运行与维护

解析:这是数据库设计的标准化流程,各阶段任务明确,环环相扣。

2 逻辑设计的主要工作是:______。

答案:将概念模型(如E-R图)转换为特定数据库管理系统支持的数据模型(如关系模型),并进行优化

解析:逻辑设计是连接概念世界与计算机实现的桥梁,核心任务是模型转换与模式优化。

3 DBS的维护工作主要包括4个部分,即______、______、______、______。

答案:数据库的转储与恢复、数据库的安全性、完整性控制、数据库性能的监督、分析和改进、数据库的重组织与重构造

解析:维护工作贯穿数据库生命周期,确保系统持续稳定、安全、高效地运行。

4 在数据库概念设计的E-R方法中,用属性描述实体的特征,属性在E-R图中用______表示。

答案:椭圆(或椭圆形)

解析:E-R图图例规定:实体用矩形,属性用椭圆,联系用菱形。

5 需求分析常用的方法有______和自底向上。

答案:自顶向下

解析:需求分析策略主要包括自顶向下(先全局后局部)和自底向上(先局部后汇总),实践中常结合使用。

6 E-R模型的基本元素有3个,即______、______和______。

答案:实体、属性、联系

解析:这三个元素构成了E-R模型描述现实世界的基本框架。

7 数据抽象有两种方法,即______和______。

答案:聚集、概括(或分类)

解析:聚集是将若干对象及其联系组成一个更高-level的对象;概括是将一组具有共同特性的对象抽象为更一般的类型(如“学生”和“教师”概括为“人”)。

8 在学籍管理系统中,若规定学生学号唯一,在数据库设计时应设置学号字段为______约束。

答案:唯一(UNIQUE)约束或主键(PRIMARY KEY)约束

解析:“唯一”是核心要求。若学号被选作表的主键,则主键约束天然包含唯一和非空约束;若仅要求唯一但允许空值,则使用UNIQUE约束。

9 数据库物理设计阶段需要考虑存储分配单位,主要是______(或页)。

答案:

解析:数据库系统通常以“块”(Block)或“页”(Page)作为磁盘和内存之间数据传输的基本单位,其大小是物理设计的重要参数。

10 常见的索引结构有______和B+树。

答案:哈希(Hash)索引

解析:B+树索引适用于范围查询和排序,是关系型数据库最常用的索引结构;哈希索引适用于等值查询,速度快但无法支持范围查询。

11 聚簇设计是将相关的数据______地存储在一起。

答案:物理上

解析:聚簇(Clustering)是指将一个或多个表中的相关数据行物理上相邻存储在同一或相邻的数据块中,以减少I/O次数,提高关联查询效率。

12 数据字典中,数据项是数据的______组成单位。

答案:最小(或不可再分)

解析:数据项是数据的最小单位,描述了数据的静态特征,如学号、姓名等,不能再分解为更小的有意义的单位。

13 在逻辑结构设计阶段,要将概念模型转换为______支持的数据模型。

答案:所选用的DBMS

解析:逻辑结构设计的输出是针对具体数据库管理系统(如MySQL、Oracle)的逻辑模式,因此转换过程必须考虑目标DBMS支持的数据模型特性。

14 物理设计阶段选择存储结构和存取方法时,需要考虑所用DBMS的______特征。

答案:物理实现

解析:物理设计高度依赖于具体的DBMS产品,因为不同的DBMS在文件组织、索引机制、数据分区等方面有不同的实现方式和限制。

习题7

一、选择题

1① 并发执行的3个事务T1、T2、T3,事务T1对数据D1加了共享锁,事务T2、T3分别对数据D2、D3加了排他锁,之后事务T1对数据( ),事务T2对数据( )。
A. D2、D3加排他锁都成功
B. D2、D3加共享锁都成功
C. D2加共享锁成功,D3加排他锁失败
D. D2、D3加排他锁和共享锁都失败

答案:D

解析:T2和T3对D2、D3已加排他锁(X锁),排他锁会阻塞其他任何事务对该数据项加锁(无论是共享锁S还是排他锁X)。因此,事务T1尝试对D2、D3加任何锁(S或X)都会失败,需要等待锁释放。

1② (接上题)事务T2对数据( )。
A. D1、D3加共享锁都失败
B. D1、D3加共享锁都成功
C. D1加共享锁成功,D3加排他锁失败
D. D1加排他锁成功,D3加共享锁失败

答案:C

解析:D1被T1加了共享锁(S锁),共享锁允许其他事务再加共享锁,但会阻塞排他锁。因此,T2对D1加共享锁(S)会成功,但对D1加排他锁(X)会失败。
D3被T3加了排他锁(X锁),会阻塞其他任何锁。因此,T2对D3无论加S锁还是X锁都会失败。
选项C描述了“对D1加共享锁成功(S锁兼容),对D3加排他锁失败(X锁被X锁阻塞)”的情况,是正确的一种可能性。选项A、B、D的表述均不完全正确或与题意不符。

2 对于事务的ACID性质,下列关于原子性的描述正确的是( )。
A. 指数据的内容不出现矛盾的状态
B. 若事务正常结束,即使发生故障,新结果也不会从数据库中消失
C. 事务中的所有操作要么都执行,要么都不执行
D. 若多个事务同时进行,与顺序实现的处理结果是一致的

答案:C

解析:原子性(Atomicity)是指事务是一个不可分割的工作单位,事务中的操作要么全部发生,要么全部不发生。A选项描述的是“一致性”,B选项描述的是“持久性”,D选项描述的是“隔离性”的目标(可串行化)。

3 一级封锁协议解决了事务并发操作带来的( )不一致性的问题。
A. 数据丢失修改
B. 数据不可重复读
C. 读取数据
D. 数据重复修改

答案:A

解析:一级封锁协议要求:事务在修改数据前必须先加X锁,直到事务结束才释放。这可以防止两个事务同时修改同一数据,从而解决了“丢失修改”问题。它不要求读数据时加锁,因此不能解决“读脏数据”和“不可重复读”问题。

4 ( )能保证不产生死锁。
A. 两段封锁协议
B. 一次封锁法
C. 二级封锁协议
D. 三级封锁协议

答案:B

解析:一次封锁法要求事务在开始执行时,一次性申请它所需要的全部锁,从而避免了在运行过程中再申请锁,彻底杜绝了“持有并等待”的条件,因此能保证不产生死锁。两段锁协议(2PL)只能保证可串行化,不能防止死锁。一级、二级、三级封锁协议是解决数据不一致问题的不同级别协议,本身不解决死锁问题。

5 在一个事务执行的过程中,真正在访问的数据被其他事务修改,导致处理结果不正确,这是由于违背了事务的( )。
A. 原子性
B. 一致性
C. 隔离性
D. 持久性

答案:C

解析:隔离性(Isolation)是指一个事务的执行不应受其他事务的干扰。题目描述的场景正是并发事务之间没有做好隔离,导致了数据访问的中间状态被暴露给其他事务,从而引发了结果不正确的问题。

6 “一旦事务成功提交,其对数据库的更新操作将永久有效,即使数据库发生故障”,这一性质是指事务的( )。
A. 原子性
B. 一致性
C. 隔离性
D. 持久性

答案:D

解析:持久性(Durability)是指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响。

7① 事务T1、T2、T3对数据D1、D2、D3的并发操作如下...(见题目中的表格,此处需根据表格分析问题)。T1和T2间并发操作( )。
A. 不存在问题
B. 将丢失修改
C. 不能重复读
D. 将读“脏”数据

答案:B

解析:分析T1和T2对D2的操作序列:T1在t2时刻读取D2=100后,T2在t6时刻读取D2=100,在t14时刻将D2修改为150并写回。随后T1在t8时刻再次读取D2,但此时它读取的仍是自己第一次读到的旧值100(这本身是“不可重复读”,但T1后续有计算和写操作),T1在t18时刻基于旧值100进行计算(D2=D3-D2),得到新值200,并在t19时刻将D2=200写回数据库。这导致T2在t14时刻对D2的修改(D2=150)被覆盖,即发生了“丢失修改”。

7② (接上题)T2和T3间并发操作( )。
A. 不存在问题
B. 将丢失修改
C. 不能重复读
D. 将读“脏”数据

答案:C

解析:分析T2和T3对D2的操作序列:T3在t15时刻读取D2=200(这是T1修改后的值),然后T2在t14时刻将D2修改为150并写回。此时,T3在t17时刻再次读取D2,发现其值已变为150,与它第一次读取的200不同。对于T3这个事务来说,在同一个事务内两次读取同一数据D2,得到了不同的结果,这就是“不可重复读”问题。

8 高铁售票点 T1、T2 分别售出了两张 2025 年 1 月 1 日到北京的商务票,但数据库里的剩余票数却只减了两张,造成数据的不一致,原因是( )。
A. 系统信息显示出错
B. 丢失了某售票点的修改
C. 售票点重复读数据
D. 售票点读了“脏”数据

答案:B

解析:两个售票事务T1和T2并发执行。理想情况:初始票数N,T1售出2张,票数应变为N-2;T2再售出2张,票数应变为N-4。但题目描述最终只减少了2张,即票数为N-2。这说明其中一个事务(比如T1)读取票数N,计算出N-2并写回后,另一个事务(T2)也读取了旧的票数N(在T1写回之前),也计算出N-2并写回,导致T1的修改被覆盖(丢失),总票数只减少了一次(2张)。这是典型的“丢失修改”问题。

9 若系统中存在 5 个等待事务 T0、T1、T2、T3、T4,其中 T0 正等待被 T1 锁住的数据项 A1、T1 正等待被 T2 锁住的数据项 A2、T2 正等待被 T3 锁住的数据项 A3、T3 正等待被 T4 锁住的数据项 A4、T4 正等待被 T0 锁住的数据项 A0,则系统处于( )的工作状态。
A. 并发处理
B. 封锁
C. 循环
D. 死锁

答案:D

解析:多个事务因竞争资源而形成一种互相等待的环形链:T0→等待→T1→等待→T2→等待→T3→等待→T4→等待→T0。每个事务都持有部分资源,同时又等待其他事务释放资源,且这种等待关系形成一个闭环。没有任何一个事务能继续推进,系统陷入停滞,这就是“死锁”状态。

10 事务回滚指令 ROLLBACK 执行的结果是( )。
A. 跳转到事务程序的开始处继续执行
B. 撤销该事务对数据库的所有 INSERT、UPDATE、DELETE 操作
C. 将事务中所有变量的值恢复到事务开始的初值
D. 跳转到事务程序的结束处继续执行

答案:B

解析:ROLLBACK语句的作用是使事务回滚,即撤销该事务从开始到回滚点之间所做的所有对数据库的修改(DML操作:INSERT, UPDATE, DELETE),将数据库状态恢复到该事务开始之前或上一个保存点的状态。它不影响程序变量的值,也不是简单的程序跳转。

二、填空题

1 事务的 ACID 特性包括 ______ 、 ______ 、 ______ 和 ______ 。

答案:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

解析:ACID是事务的四个基本特性,是数据库管理系统维持数据正确性与可靠性的基石。

2 在众多事务控制语句中,用来撤销事务的操作语句为 **Rollback**。用于持久化事务对数据库操作的语句是______。

答案:Commit

解析:COMMIT语句用于提交事务,将事务中对数据库的所有更新操作永久生效,这是实现事务持久性的关键指令。ROLLBACK则用于撤销事务。

3 如果对数据库的并发操作不加以控制,则会带来 3 类问题,即 ______ 、 ______ 和 ______ 。

答案:丢失修改、读脏数据、不可重复读

解析:这是并发操作可能导致的三种主要数据不一致性问题。更高一级的并发控制协议(如封锁协议)正是为了解决这些问题而设计的。

4 基本的封锁类型有两种:______ 和 ______。

答案:排他锁(X锁,写锁)、共享锁(S锁,读锁)

解析:排他锁(Exclusive Lock)用于写操作,一个数据项上只能有一个X锁;共享锁(Share Lock)用于读操作,一个数据项上可以有多个S锁。X锁与任何锁都不兼容,S锁只与S锁兼容。

5 多用户的数据库系统的目标之一是使它的每个用户好像面对着一个单用户的数据库一样使用它,为此数据库系统必须进行______。

答案:并发控制

解析:并发控制机制(如封锁、时间戳、乐观控制等)是数据库管理系统用来协调多个事务并发执行,保证数据一致性,并为每个用户提供隔离的、如同单用户环境般体验的关键技术。

6 在数据库系统中,死锁属于______。

答案:事务故障

解析:数据库系统中的故障主要分为事务故障、系统故障和介质故障。死锁是由于多个事务对锁的竞争不当引起的,属于事务内部或事务之间发生的逻辑错误,因此归为“事务故障”。

7 不允许任何其他事务对这个锁定目标再加任何类型的锁是 ______。

答案:排他锁(或X锁)

解析:排他锁(X锁)的特性是:一旦某个事务对数据对象加上了排他锁,其他任何事务都不能再对该数据对象加任何类型的锁(无论是共享锁还是排他锁),直到该锁被释放。

8 两个事务在加锁的过程中相互等待,哪一个事务都不能继续执行下去,这种状态为 ______。

答案:死锁

解析:死锁的典型定义就是:两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉,它们都将无法继续推进。

9 数据库的 ______ 特性确保了事务从开始到结束的过程中,要么全部操作都成功,要么全部操作都失败,不会出现部分成功部分失败的情况。

答案:原子性

解析:这正是事务原子性(Atomicity)的核心含义。它通过事务管理(如日志的Undo操作)来保证。

10 在数据库系统中, ______ 策略可以确保即使在系统故障的情况下,事务的结果也能被永久地保存在数据库中。

答案:日志(或日志记录与恢复)

解析:持久性是通过数据库的恢复机制(主要是日志机制)来保证的。系统会将事务对数据库的更新操作记录在日志中,并先于数据写盘(Write-Ahead Logging, WAL)。当发生故障时,DBMS可以利用日志来重做(Redo)已提交的事务,撤销(Undo)未完成的事务,从而确保提交事务的结果不丢失。

11 在封锁技术中, ______ 用于允许多个事务同时读取数据,但不允许它们修改数据。

答案:共享锁(或S锁)

解析:共享锁(S锁)就是为“读”操作设计的。多个事务可以同时对同一数据项加S锁进行读取,但只要有一个事务持有S锁,其他事务就不能对该数据项加X锁进行修改。

12 在数据库系统中, ______ 是指事务在读取数据时,读取到其他事务未提交的修改。

答案:读脏数据(或脏读)

解析:“脏数据”是指未被最终提交的、可能被回滚的中间数据。一个事务读取了另一个未提交事务修改的数据,就发生了“脏读”。二级封锁协议通过要求读数据前加S锁并在读完后立即释放,可以避免脏读。

习题8

一、选择题

1 数据库安全的核心组成部分不包括以下哪一项?( )。
A. 访问控制策略
B. 身份认证策略
C. 加密技术
D. 审计策略

答案:C

解析:数据库安全的核心组件通常围绕“认证、授权、审计”展开,即身份认证策略(你是谁?)、访问控制策略(你能做什么?)和审计策略(你做了什么?)。加密技术是保障数据机密性的重要手段,但通常被视为更底层的安全技术或一种增强措施,不属于最核心的组成部分定义。

2 下列哪一项不是数据库面临的安全威胁?( )。
A. SQL 注入攻击
B. 未授权访问
C. 数据泄露
D. 自然灾害

答案:D

解析:SQL注入、未授权访问和数据泄露是典型的数据库安全威胁,针对的是数据库的逻辑安全和数据安全。自然灾害(如地震、洪水)属于物理环境层面的威胁,虽然会影响数据库的可用性,但通常归类为“灾难”或“物理故障”,而非狭义的、由攻击或漏洞引发的“安全威胁”。

3 最小权限原则是指( )。
A. 每个用户都拥有相同的权限
B. 每个用户只被授予完成其任务所需的最小权限
C. 所有用户都拥有最高权限
D. 只有管理员才拥有权限

答案:B

解析:最小权限原则(Principle of Least Privilege, PoLP)是安全设计的基本原则之一,其核心是只授予用户或进程执行其合法操作所必需的最小权限集,以限制潜在安全事件(如误操作、账户被盗用)造成的损害范围。

4 下列哪一项不是身份认证策略的实现方式?( )。
A. 强密码策略
B. 账户锁定策略
C. 防火墙策略
D. 双因素认证

答案:C

解析:身份认证策略关注“证明你是你”的方式。强密码策略、账户锁定策略(防止暴力破解)、双因素/多因素认证都是增强认证强度的具体手段。防火墙策略是网络边界安全控制措施,用于过滤网络流量,不直接属于身份认证的范畴。

5 数据库审计的主要目的是( )。
A. 记录所有数据库操作活动
B. 提高数据库性能
C. 防止数据泄露
D. 优化数据库结构

答案:A

解析:数据库审计的核心目的是记录(跟踪)用户对数据库的所有操作活动,形成不可抵赖的证据链。这为事后追责、合规性检查、异常行为分析和安全事件调查提供了依据。提高性能、防止泄露、优化结构并非审计的直接目的,虽然审计数据可能间接用于这些方面。

6 下列哪一项不是数据库备份的类型?( )。
A. 完全备份
B. 增量备份
C. 差异备份
D. 实时备份

答案:D

解析:数据库备份的常规类型包括完全备份(Full Backup)、增量备份(Incremental Backup)和差异备份(Differential Backup)。“实时备份”通常指数据复制(如主从复制)或持续数据保护(CDP),它们更侧重于高可用性和实时同步,而非传统意义上的“备份”类型。备份通常是周期性的快照。

7 数据库恢复技术中,利用事务日志记录的所有修改操作恢复数据库的方法称为( )。
A. 基于日志的恢复
B. 基于备份的恢复
C. 介质恢复
D. 时间点恢复

答案:A

解析:基于日志的恢复是数据库恢复技术的核心,它利用事务日志(包含Redo和Undo信息)来恢复事务一致性状态。它能够处理事务故障和系统故障,确保已提交的事务被持久化(Redo),未提交的事务被撤销(Undo)。

8 下列哪一项不是制定备份策略时需要考虑的因素?( )。
A. 备份的频率
B. 备份介质的可靠性
C. 备份数据的保管和销毁
D. 数据库的性能优化

答案:D

解析:制定备份策略时,核心考虑因素围绕恢复目标(RPO/RTO)、成本和安全性。包括:备份频率(多久一次)、介质可靠性(磁带、磁盘、云)、数据保管(存储位置、权限)和销毁(过期处理)。数据库性能优化属于日常运维和调优范畴,虽然备份操作本身会影响性能,但“性能优化”不是制定备份策略时的核心考量因素。

9 在数据库恢复过程中,保持通信畅通的重要性不包括以下哪一项?( )。
A. 及时沟通恢复进展
B. 协调资源分配
C. 确保数据完整性
D. 应对突发问题

答案:C

解析:在紧急恢复场景下,保持通信畅通对于管理恢复过程至关重要。它有助于同步信息(A)、调配人力和物力(B)、以及处理意外情况(D)。数据完整性是由恢复技术本身(如日志的Redo/Undo)和操作步骤的正确性来保证的,与团队间的沟通没有直接因果关系。

10 下列哪一项不是数据库恢复技术的应用场景?( )。
A. 事务故障
B. 系统故障
C. 介质故障
D. 数据备份

答案:D

解析:数据库恢复技术正是为了应对各种故障(事务故障、系统故障、介质故障)而设计的。数据备份是恢复的前提和基础,是恢复过程中的一个步骤或资源,其本身不是恢复技术的“应用场景”。

11 在数据库安全策略中,通过设定权限规则来限制不同用户对数据库的访问和操作的是( )。
A. 加密技术
B. 访问控制策略
C. 身份认证策略
D. 审计策略

答案:B

解析:访问控制策略(Authorization)是在身份认证(Authentication)之后,决定“用户能做什么”的环节。它通过授予或拒绝特定用户(或角色)对特定数据对象(如表、视图)执行特定操作(如SELECT, UPDATE)的权限来实现。

12 下列哪一项不是数据库审计的内容?( )。
A. 审计日志
B. 异常行为检测
C. 数据完整性检查
D. 合规性报告

答案:C

解析:数据库审计的内容主要包括:生成和存储审计日志(A);对日志进行分析,以检测异常或可疑行为(B);以及根据法规或内部要求生成合规性报告(D)。数据完整性检查(如通过约束、触发器)是数据库本身的数据质量保障机制,不属于审计的范畴。审计关注“谁在什么时候做了什么”,而不直接验证数据内容是否正确。

13 在数据库恢复过程中,以下哪一项不是必要的步骤?( )。
A. 验证备份数据的可用性和完整性
B. 制定详细的恢复计划
C. 立即恢复所有业务操作
D. 在恢复完成后进行验证和测试

答案:C

解析:一个严谨的恢复过程应包括:事前计划(B)、恢复前验证备份(A)和恢复后验证(D)。“立即恢复所有业务操作”是鲁莽的,正确的做法通常是先恢复核心系统,进行功能和数据验证后,再分阶段、有控制地恢复全部业务,以确保恢复的成功和数据的准确性。

14 下列哪一项不是数据库安全策略的目标?( )。
A. 保护企业资产
B. 维护客户信任
C. 提高数据库性能
D. 遵守法律法规

答案:C

解析:数据库安全策略的目标是保障数据的机密性、完整性和可用性(CIA三要素),这直接对应保护企业资产(A)、维护客户信任(B,因数据泄露会破坏信任)和遵守法律法规(D,如GDPR)。提高数据库性能是系统运维和优化的目标,虽然安全措施可能对性能有影响,但它本身不是安全策略的出发点。

15 在数据库恢复技术中,以下哪一项不是基于备份的恢复方法?( )。
A. 完全恢复
B. 增量恢复
C. 差异恢复
D. 时间点恢复(若未基于特定备份实现)

答案:D

解析:基于备份的恢复方法直接依赖于备份文件。完全恢复使用最近一次完全备份;增量恢复需要使用最近一次完全备份和之后的所有增量备份;差异恢复需要使用最近一次完全备份和最近一次差异备份。而“时间点恢复”(Point-in-Time Recovery, PITR)通常指恢复到故障前的某个精确时刻,这需要结合备份和事务日志(从备份时刻应用到指定时间点)来实现,因此它不完全等同于“基于备份的恢复”,后者更强调仅使用备份集。

二、填空题

1 数据库安全的核心组成部分包括访问控制策略、身份认证策略、______ 和审计策略。

答案:加密技术

解析:虽然选择题1中加密技术被列为“非核心”,但作为安全的重要组成部分,它常与访问控制、身份认证、审计并列,共同构成数据库安全的防御体系,特别是在保护静态和传输中数据的机密性方面。

2 数据库面临的常见安全威胁有 SQL 注入攻击、未授权访问、数据泄露、恶意软件以及 ______ 。

答案:内部人员威胁(或权限滥用、社会工程学等,结合上下文)

解析:常见的数据库安全威胁除技术攻击(SQL注入、恶意软件)和访问控制失效(未授权访问)外,还包括来自内部人员的误操作、恶意行为或权限滥用,这也是非常重要的威胁源。上下文提到的“物理安全”也是威胁的一部分。

3 访问控制策略通过设定 ______ 来限制不同用户对数据库的访问和操作。

答案:权限(或访问规则)

解析:访问控制的核心就是定义和实施一系列权限规则,明确指定哪个主体(用户/角色)可以对哪个客体(数据/资源)执行何种操作(读、写、删等)。

4 身份认证策略的实现方式通常包括强密码策略、账户锁定策略、______ 等。

答案:多因素认证(或双因素认证)

解析:这是增强身份验证强度的常用方法。在密码(你知道的东西)之外,增加第二种验证因素,如动态令牌(你拥有的东西)或生物特征(你固有的东西)。

5 数据库审计目的是记录、分析和报告 ______ 的活动。

答案:数据库用户(或数据库访问和操作)

解析:审计聚焦于对数据库的访问和操作行为进行监控和记录,对象是数据库用户(包括应用程序、管理员等)的行为。

6 数据库备份的类型包括完全备份、增量备份和 ______ 。

答案:差异备份

解析:这是三种基本的物理备份策略类型。差异备份备份自上次完全备份以来所有发生变化的数据。

7 在数据库恢复过程中,需要确保备份数据的 ______ 和完整性。

答案:可用性

解析:备份数据必须同时具备可用性(能够被成功读取和恢复)和完整性(数据内容没有损坏或丢失),否则恢复将无法进行或导致错误。

8 数据库恢复技术包括基于日志的恢复、基于备份的恢复和 ______ 。

答案:介质恢复

解析:根据常见的分类,数据库恢复技术主要针对三类故障:事务故障(用日志恢复)、系统故障(用日志恢复)和介质故障(磁盘损坏)。针对介质故障的恢复通常称为“介质恢复”,它严重依赖于备份和归档日志。

9 最小权限原则要求每个用户只被授予完成其任务所需的最小权限。

答案:(题目为陈述句,无需填空)

解析:这是对最小权限原则的复述,强调了权限分配的克制和精准性。

10 数据库审计日志应包含足够的信息,以便在需要时进行 ______ 和分析。

答案:追踪(或调查、追溯)

解析:审计日志的核心价值在于其可追溯性。当发生安全事件或需要合规检查时,详细的日志可以用于追踪事件的源头、过程和影响。

11 在制定数据库备份策略时,需要考虑的因素包括备份的频率、备份介质的可靠性以及 ______ 。

答案:备份数据的安全性(或保管与销毁策略)

解析:除了频率和介质,备份数据本身的安全性至关重要,包括存储位置(本地/异地)、访问控制、加密以及生命周期结束后的安全销毁。

12 数据库恢复技术可以确保在发生故障时及时恢复数据库,从而保障业务的 ______ 和数据的完整性。

答案:连续性(或可用性)

解析:灾难恢复(DR)和业务连续性(BCP)的目标就是在中断后尽快恢复业务运营。数据库恢复是其中关键一环,旨在保障业务的连续性和数据的完整性。

13 在数据库安全策略中, ______ 是确保只有合法用户才能访问数据库的关键环节。

答案:身份认证(或Authentication)

解析:这是身份认证的根本作用,是安全访问的第一道闸门,用于验证声称的身份是否属实。

14 数据库加密技术通常包括存储加密和 ______ 。

答案:传输加密

解析:数据库加密主要在两个层面:静态数据(存储加密,如透明数据加密TDE)和动态数据(传输加密,如使用TLS/SSL协议保护客户端与数据库服务器之间的通信)。

15 在数据库恢复过程中,保持通信畅通的重要性在于及时沟通恢复进展、协调资源分配以及 ______ 。

答案:应对突发问题

解析:恢复过程往往是高压且多变的,有效的沟通机制能帮助团队快速同步信息、调整策略,共同解决恢复过程中出现的意外挑战。

习题9

一、选择题

1 ( )最准确地描述了维克托·迈尔-舍恩伯格及肯尼斯·库克耶在《大数据时代》中提及的大数据特点。
A. 大数据指采用抽样调查法对所有数据进行分析处理
B. 大数据具有4V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(高价值密度)
C. 大数据指不用随机分析法,而是采用所有数据进行分析处理,并具有5V特点:Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)
D. 大数据仅指数据量巨大,无需考虑处理速度和数据类型

答案:C

解析:《大数据时代》的核心观点之一就是“样本=总体”,强调分析所有数据而非抽样;同时,该书作者也较早系统地阐述了大数据的特点,最经典的“4V”包括Volume, Velocity, Variety, Value,并指出大数据价值密度低的特点。后续实践中,“Veracity(真实性)”被广泛接受为第五个V。选项C的描述最为准确和全面。

2 ( )体现了大数据数据库在物联网领域的应用。
A. 电商平台分析销售数据优化库存管理
B. 银行利用大数据评估客户信用风险
C. 物联网设备数据通过时序数据库进行实时监控
D. 列式数据库加速数据分析报告的生成

答案:C

解析:物联网(IoT)领域是典型的大数据应用场景,其特点是海量设备持续产生带时间戳的数据(时间序列数据)。时序数据库(Time-Series Database)是专门为高效存储、查询这类数据而设计的数据库,属于大数据数据库在IoT领域的典型应用。A、B、D选项虽然也是大数据应用,但未明确指向物联网领域。

3 ( )适用于存储和处理复杂的、非结构化或半结构化的数据。
A. 关系型云数据库
B. 非关系型云数据库
C. 数据仓库云服务
D. 以上都是

答案:B

解析:非关系型(NoSQL)数据库的核心优势之一就是其灵活的数据模型,能够很好地处理非结构化(如文本、图片、视频)和半结构化(如JSON、XML)数据。关系型数据库(A)主要处理结构化数据。数据仓库(C)通常用于分析处理,其底层可以是关系型或非关系型,但“数据仓库”概念本身不强调处理非结构化数据的灵活性。因此B选项最准确。

4 云数据库的一个主要优势是( )。
A. 需要高额的初始投资
B. 数据扩展受限
C. 可以实现按需付费和按需扩展
D. 仅适用于大型企业

答案:C

解析:云数据库的核心优势在于其提供的“服务”模式。它消除了用户自建数据库的硬件投入和维护成本,允许用户根据业务需求的变化,灵活地(通常是自动化地)调整计算和存储资源,并只为实际使用的部分付费。这与A、B、D选项描述的缺点或限制正好相反。

5 以下哪个领域没有直接体现数据库与人工智能技术的结合应用( )。
A. 金融领域的欺诈行为识别
B. 医疗领域的疾病辅助诊断
C. 烹饪领域的新菜式研发
D. 智能家居的自动化控制

答案:C

解析:数据库为AI提供训练数据和实时数据支撑。A(欺诈识别)需要交易历史数据库和机器学习模型;B(辅助诊断)需要医疗影像、病历数据库和AI分析;D(智能家居)需要用户行为数据、环境数据数据库和AI决策。烹饪领域的新菜式研发可能涉及数据(如食材搭配、口味偏好),但这不是当前数据库与AI技术结合的突出和典型应用领域。

6 大数据的价值密度具有( )的特征。
A. 高价值密度
B. 低价值密度
C. 价值密度恒定
D. 价值密度与数据量无关

答案:B

解析:大数据的“Value(价值)”特点通常描述为“低价值密度”,即海量的数据中,真正有价值的信息比例相对较低,需要强大的数据处理和分析技术(如数据挖掘、AI)才能提取出高价值的洞察。

7 在大数据中,( )的数据类型属于半结构化数据。
A. 数据库中的表格数据
B. 社交媒体的用户评论
C. XML 文件
D. 监控摄像头拍摄的视频

答案:C

解析:半结构化数据具有一定的结构,但不像关系型数据库的表那样严格和固定。XML文件通过标签定义数据的层次和关系,是典型的半结构化数据。A是结构化数据,B是典型的非结构化文本数据(虽然可以从评论中提取结构化信息,但原始形态是非结构化的),D是非结构化数据。

8 ( )最适合存储和处理物联网设备产生的时间序列数据。
A. 关系型数据库
B. 非关系型数据库
C. 分布式数据库
D. 列式数据库

答案:B

解析:物联网设备产生的时间序列数据,具有写入密集、按时间顺序排列、查询常围绕时间窗口等特点。专门的时序数据库(Time-Series Database,如InfluxDB, TimescaleDB)是处理这类数据的最佳选择,而它们都属于非关系型数据库(NoSQL)的范畴。虽然某些列式数据库(D)或分布式数据库(C)也可能用于此场景,但“非关系型数据库”这个大类包含了专门的时序数据库,是最适合的答案。

9 ( )是云计算的特点。
A. 低可靠性
B. 静态不可扩展
C. 高灵活性
D. 仅支持特定软件环境

答案:C

解析:高灵活性是云计算的关键特点之一,体现在用户可以灵活选择服务类型(IaaS/PaaS/SaaS)、配置资源、部署应用等。A、B、D选项都是对云计算特点的错误描述,云计算的典型特点包括高可靠性、弹性可扩展和广泛的兼容性。

10 对于创业公司,云计算的( )特点能帮助它们节省前期成本,专注核心业务。
A. 虚拟化
B. 按需部署
C. 动态可扩展
D. 高可靠性

答案:B

解析:“按需部署”(或称按需付费)意味着创业公司无需投入大量资金购买硬件、软件许可证和建设数据中心,只需根据实际使用量付费。这极大降低了创业的初始IT成本(CAPEX转化为OPEX),使其能将有限的资金和精力集中于产品开发和市场拓展等核心业务。

11 ( )的场景更适合使用关系型云数据库。
A. 存储物联网传感器采集的大量时间序列数据
B. 存储电商平台的用户评论和点赞数据
C. 存储金融机构的客户账户信息和交易记录
D. 存储高流量网站的缓存数据

答案:C

解析:关系型数据库的优势在于事务处理(ACID)、数据一致性和复杂的关联查询。金融机构的客户账户和交易记录对数据准确性、一致性和安全性要求极高,且涉及复杂的关联操作(如转账、对账),是关系型数据库的经典应用场景。A场景更适合时序数据库,B场景(评论、点赞)可能更适合文档型或键值型数据库,D场景(缓存)通常使用内存数据库如Redis。

12 在一个内容管理系统中,如果要存储一篇文章的标题、作者、内容、发布时间、评论等信息,且这些信息的结构可能需要灵活调整,最好使用的云数据库是( )。
A. 关系型云数据库
B. 文档型非关系型云数据库
C. 键值对非关系型云数据库
D. 列族非关系型云数据库

答案:B

解析:内容管理系统(如博客、CMS)中的文章数据是典型的文档型数据,一篇文章(一个文档)包含多个字段(标题、作者、内容等),且结构可能因需求而变化(如新增“标签”字段)。文档型数据库(如MongoDB)以JSON/BSON格式存储数据,天然支持这种半结构化、灵活可变的模式,并且能轻松处理嵌套的评论信息。

13 ( )是数据库智能化在性能优化方面的体现。
A. 自动整合多源数据
B. 智能查询优化系统调整查询策略
C. 利用加密技术加强隐私保护
D. 跨模态分析挖掘数据联系

答案:B

解析:数据库智能化旨在利用AI/ML技术提升数据库自身的“智商”。智能查询优化器可以学习查询历史、数据分布等,动态选择或生成最优的执行计划,甚至进行参数自动调优,这是数据库在“性能优化”方面智能化的核心体现。A属于数据集成,C属于安全,D属于数据分析,都不是针对数据库“自身性能优化”的。

14 数据库智能化中,通过( )可实时监控系统运行状态,解决潜在问题。
A. 向量数据库
B. 自动化运维技术
C. 智能数据集成
D. 流计算

答案:B

解析:自动化运维(AIOps)是数据库智能化的重要应用领域。它利用机器学习模型对数据库的运行指标(如CPU、内存、慢查询、锁等待)进行实时监控和分析,能够自动发现异常模式、预测性能瓶颈,并可能触发自动修复动作或告警,从而实现预防性维护和快速故障响应。

二、填空题

1 云数据库根据数据库类型一般分为______数据库和非关系型数据库,其中非关系型云数据库包含文档型数据库、______数据库和列族数据库等类型。

答案:关系型、键值对

解析:这是云数据库的基本分类。关系型数据库以SQL为主要操作语言。非关系型(NoSQL)数据库主要类型包括:文档型(如MongoDB)、键值对型(如Redis)、列族型(如HBase)、图形数据库等。

2 云计算的特点包括虚拟化、______、______、动态可扩展和按需部署。

答案:高可靠性、高灵活性

解析:这是对云计算核心特性的总结。高可靠性通过冗余和分布式架构实现;高灵活性体现在服务模型和资源选择的多样性上。

3 金融领域,人工智能分析交易数据,数据库提供存储与访问机制;医疗领域,人工智能辅助诊疗,数据库提供______功能。

答案:高效存储(或数据管理与访问、存储支持等,意思相近即可)

解析:本题强调数据库在AI应用中的基础支撑作用。无论在哪个领域,AI模型都需要从数据库中高效地读取训练数据和实时数据,并将结果写回。因此,数据库的核心功能就是提供高效、可靠的数据存储与访问服务。

4 大数据的______特点体现为数据在不同时间和环境下会动态变化,需要数据处理系统灵活调整策略。

答案:高速(Velocity)

解析:“Velocity(高速)”不仅指数据产生的速度快(如流数据),也指数据的变化和流动速度快,要求处理系统能实时或近实时地处理数据,并适应数据的动态变化。

5 在大数据中,由于数据量庞大,其中可能包含很多不准确或虚假的信息,因此需要保证数据的______。

答案:真实性(Veracity)

解析:“Veracity(真实性)”是大数据“5V”特性之一,强调数据质量的重要性。大数据中混杂着大量噪声、不一致甚至错误的数据,如何清洗和验证数据,确保分析基础的真实可靠,是大数据治理的重要课题。

6 在大数据数据库中,______数据库以表格形式组织数据,具有结构化存储的特点,其管理和维护数据十分规范,常见的有 Oracle、MySQL 和 SQL Server 等。

答案:关系型

解析:这是对关系型数据库基本特征的描述。它以二维表为基本数据结构,遵循严格的模式(Schema),使用SQL进行管理和查询。

7 对于存储和查询传感器数据,股票价格数据等按时间顺序排列的数据,通常会使用专门的______数据库,如 InfluxDB。

答案:时序(Time-Series)

解析:时序数据库是专门为处理时间序列数据优化的数据库。它针对时间戳索引、数据压缩、时间窗口聚合查询等场景进行了特殊设计,比通用数据库在此类应用上性能更高。

8 云计算的______特点使得企业在业务高峰期可以扩充计算、存储、网络带宽等资源,而在高峰期过后能自动缩减多余资源。

答案:动态可扩展(或弹性)

解析:动态可扩展(弹性伸缩)是云计算的标志性能力。它允许用户根据负载情况,自动或手动地增加或减少资源,实现资源利用率最优化和成本节约。

9 云计算中的虚拟化特点将物理资源转化为虚拟形态,一台物理服务器可虚拟出多个相互隔离、独立运行系统和应用的虚拟机。

答案:(题目为陈述句,无需填空)

解析:这是对虚拟化技术的描述,它是实现云计算资源共享和隔离的基础技术。

10 对于资金紧张、业务不确定的创业公司,云计算的______特点可帮助其节省前期成本,使其专注于核心业务。

答案:按需部署(或按需付费)

解析:与选择题第10题对应。按需付费模式将高昂的固定资产投入转变为可预测的运营费用,降低了创业的门槛和风险。

PTA

根据E-R图转换关系模型习题

1 根据给出的E-R图,选择正确的关系模型选项。
A. 顾客(顾客号,顾客名,联系方式)
B. 订购(顾客号,订购数量,交货地点)
C. 订购(顾客号,物品号,订购数量,交货地点)
D. 物品(物品号,物品名,数量,单价)
E. 订购(订购数量,交货地点)

答案:A、C、D

解析: 这道题正确,说明E-R图中存在“顾客”、“物品”和“订购”三个实体,且“订购”是“顾客”与“物品”之间的多对多(M:N)联系。

  • A选项:将“顾客”实体转换为一个独立的关系模式,主键为“顾客号”。正确。
  • C选项:将多对多联系“订购”转换为一个独立的关系模式。由于多对多联系本身不能由任何一端的主键唯一标识,因此必须将两端实体的主键(顾客号、物品号)联合起来作为新关系模式的主键。同时,联系的属性(订购数量,交货地点)也应加入。正确。
  • D选项:将“物品”实体转换为一个独立的关系模式,主键为“物品号”。正确。
  • B选项错误:缺少“物品号”,无法唯一标识订购关系,也无法确定订购的是什么物品。
  • E选项错误:缺少两端实体的主键,无法与“顾客”和“物品”实体关联。

2 根据给出的E-R图,选择正确的关系模型选项。
A. 部门(部门号,部门名,所在位置)
B. 属于(工号,部门号,部门名,所在位置)
C. 教师(工号,姓名,性别,职称,部门号)
D. 属于(工号,部门号,部门名)
E. 教师(工号,姓名,性别,职称)

答案:A、C

解析: 这道题错误,说明E-R图中“教师”与“部门”之间可能是多对一(N:1)或一对一(1:1)的联系,且教师实体为“N”端。

  • A选项:将“部门”实体转换为一个独立的关系模式,主键为“部门号”。这是必要的。正确。
  • C选项:将“教师”实体转换为一个关系模式。由于教师属于部门(N:1),可以在“教师”关系模式中加入“部门号”作为外键,来映射“属于”这个联系。这是处理一对多或多对一联系的常用方法,避免了创建额外的关系模式。正确。
  • B选项错误:既然“属于”联系可以通过在“教师”表中加外键实现,就没必要创建独立的关系模式。即使创建,其属性也应仅为两端实体的主键(工号,部门号)和联系本身的属性,不应包含“部门名”和“所在位置”等“部门”实体的属性,这会造成数据冗余。
  • D选项错误:同B,且包含了“部门名”这个冗余属性。
  • E选项错误:缺少“部门号”外键,无法体现教师与部门的所属关系。

3 根据给出的E-R图,选择正确的关系模型选项。
A. 科室(科名,科地址,科电话)
B. 拥有(工作证号,科名)
C. 医生(工作证号,姓名,职称,年龄,科名)
D. 医生(工作证号,姓名,职称,年龄)
E. 科室(科名,科地址,科电话,工作证号)

答案:A、C

解析: 这道题错误,说明E-R图中“医生”与“科室”之间很可能是多对一(N:1)的联系,即一个科室拥有多名医生,一名医生属于一个科室。

  • A选项:将“科室”实体转换为一个独立的关系模式,主键为“科名”。正确。
  • C选项:将“医生”实体转换为一个关系模式,并加入“科名”作为外键,来映射“拥有”这个联系。这是处理多对一联系的正确方法。正确。
  • B选项错误:当联系为多对一时,通常不需要将联系转换为独立的关系模式,只需在“N”端(医生)加入外键即可。即使创建,其属性也只是两端主键,且“拥有”可能不是多对多联系。
  • D选项错误:缺少“科名”外键,无法体现医生与科室的所属关系。
  • E选项错误:将“工作证号”放入“科室”表中是错误的。如果一个科室有多名医生,一个科室号就会对应多个工作证号,这违反了第一范式。正确的做法是在“医生”表中存储“科名”。

4 根据给出的E-R图,选择正确的关系模型选项。
A. 病房(病房号,科名,病房地址)
B. 科室(科名,科地址,科电话)
C. 病房(病房号,病房地址)
D. 组成(科名,病房号,病房地址)
E. 组成(科名,病房号)

答案:B、A

解析: 这道题错误,说明E-R图关系复杂。需要分情况讨论: 情况一(最常见): 如果“科室”与“病房”是一对多(1:N)关系(一个科室有多个病房,一个病房属于一个科室)。

  • B选项(科室表)是必须的。正确。
  • A选项(病房表)包含了外键“科名”,这是在“N”端(病房)表中加入“1”端(科室)主键的正确做法。同时“病房地址”是病房的属性。正确。
  • 此时C选项错误,因为缺少“科名”外键。D、E选项均不需要,因为联系已通过外键体现。
情况二: 如果“科室”与“病房”是多对多(M:N)关系(一个科室有多个病房,一个病房可能由多个科室共用,这种场景较少见)。
  • B选项(科室表)是必须的。正确。
  • C选项(病房表,仅含自身属性)是必须的。正确。
  • E选项(组成表,作为独立的关系模式,主键是(科名,病房号))也是必须的。正确。
  • 此时A选项错误,因为病房不能只属于一个科室。D选项错误,因为“病房地址”是病房实体的属性,不应放在联系的关系模式中。
根据常见医院结构,情况一的可能性更大。因此最可能的正确答案是 A 和 B

5 根据给出的E-R图,选择正确的关系模型选项。
A. 病房(病房号,病房地址)
B. 病房(病房号,病历号,病房地址)
C. 病人(病历号,姓名,性别,病房号)
D. 病人(病历号,姓名,性别)
E. 入住(病房号,病历号)

答案:A,C

解析: 这道题的正确选项组合表明,“病人”与“病房”之间是多对多(M:N)的“入住”联系。一个病人可能在不同时间入住不同病房,一个病房在不同时间会入住多个病人。

如果“入住”联系本身还有属性(如入住时间、出院时间),则应添加到E选项的关系模式中。