Skip to content

数据库系统 试题

一、 选择题(1分/题 * 15 = 15分)

题目 1: 数据库系统中的数据模型通常由()三部分组成。

A. 数据结构、数据操作和完整性约束

B. 数据定义、数据操作和安全性约束

C. 数据结构、数据管理和数据保护

D. 数据定义、数据管理和运行控制

  • 答案A
  • 解析:数据模型是数据库系统的核心概念,用于描述数据、数据之间的联系以及数据的语义。它必须包含三个基本要素:
    1. 数据结构:描述系统的静态特性(例如,关系模型中的二维表结构)。
    2. 数据操作:描述系统的动态特性,即允许执行的操作(如查询、插入、删除、修改)。
    3. 完整性约束:保证数据的正确性和有效性(例如,主键不能为空,外键必须存在等)。其他选项混淆了数据库管理系统(DBMS)的功能(如数据管理、安全控制)与数据模型本身的组成。

题目 2: 数据库系统的核心是( )。

A. 数据库 B. 数据库管理系统 C. 数据模型 D. 软件工具 (注:原卷此处排版缺失A选项,通常A为“数据库”)

  • 答案B
  • 解析:数据库系统(DBS)是一个大概念,包含数据库(DB)、数据库管理系统(DBMS)、应用程序和数据库管理员(DBA)。其中,**数据库管理系统(DBMS)**是负责建立、使用和维护数据库的系统软件,它统一管理和控制数据,是整个系统的核心与大脑。

题目 3: 下列四项中,不属于数据库系统的特点的是()

A. 数据结构化 B. 数据由DBMS统一管理 C. 数据冗余度大 D. 数据独立性高

  • 答案C
  • 解析:文件系统由于各自维护自己的文件,会导致同一数据多处存放(冗余度大)。而数据库系统的首要目的之一就是减少数据冗余,实现数据共享。因此,“数据冗余度大”是文件系统的缺点,绝不是数据库系统的特点。

题目 4: E-R 图是数据库设计的工具之一,它适用于建立数据库的( )。 A. 概念模型 B. 逻辑模型 C. 结构模型 D. 物理模型

  • 答案A
  • 解析:E-R图(实体-联系图)是用于需求分析后,将现实世界中的业务逻辑转化为计算机能理解的模型的第一步。它独立于任何具体的DBMS,完全从业务概念出发,因此对应的是概念模型。逻辑模型是将E-R图转化为具体的表结构;物理模型则涉及数据在磁盘上的具体存储。

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

  • 答案A
  • 解析:设计关系模式(即确定有哪些表,表中有哪些列,主外键是什么)是将概念阶段的E-R图转化为特定关系型数据库(如MySQL, SQL Server)支持的数据模型的过程。这一步属于逻辑结构设计

题目 6: 数据的物理独立性是指( ) A. 数据库与数据库管理系统相互独立 B. 用户程序与数据库管理系统相互独立 C. 用户的应用程序与存储在磁盘上数据库中的数据是相互独立的 D. 应用程序与数据库中数据的逻辑结构是相互独立的

  • 答案C
  • 解析: 数据库具有“三级模式和两级映像”。
    • 物理独立性:底层数据在磁盘上的存储位置、存储格式改变时,上层应用程序不需要修改。
    • 逻辑独立性(对应选项D):数据库的整体表结构(逻辑层面)增加或修改时,上层应用程序不需要修改。题目问的是物理独立性,故选C。

题目 7: 要保证数据库的数据独立性,需要修改的是( ) A. 三层模式之间的两种映射 B. 模式与内模式 C. 模式与外模式 D. 三层模式

  • 答案A
  • 解析:数据的独立性完全依靠DBMS在三级模式(外模式、模式、内模式)之间提供的两种映射(外模式/模式映射、模式/内模式映射)来保证。当底层发生变化时,DBA只需要修改这两种映射关系,就能保证上层不受影响。

题目 8: “授权”和“收回权限”是DBS采用的( )措施。 (注:原卷缺失文字,合理推断为“收回权限”即GRANT和REVOKE) A. 安全性 B. 完整性 C. 并发控制 D. 数据恢复 (注:排版错乱,A为安全性,推测B为完整性等)

  • 答案A(安全性)
  • 解析:授权(GRANT)指的是允许特定用户查看或修改数据的权限,这是为了防止恶意用户非法访问数据,属于安全性控制范畴。完整性则是防止合法用户输入错误的数据。

题目 9: DBMS能实现对数据库中数据的查询、插入、修改和删除等操作,这种功能称为() A. 数据定义功能 B. 数据管理功能 C. 数据操纵功能 D. 数据控制功能

  • 答案C
  • 解析:在SQL语言中,操作数据的动作(增删改查:INSERT, DELETE, UPDATE, SELECT)统称为数据操纵语言(DML - Data Manipulation Language)。数据定义功能(DDL)是用来建表、删表的。

题目 10: 有一名为“列车运营”实体,含有:车次、日期、实际发车时间、实际抵达时间、情况摘要等属性,该实体主键是( ) A. 车次 B. 日期 C. 车次+日期 D. 车次+情况摘要

  • 答案C
  • 解析:主键的作用是唯一标识一条记录。一趟列车(如G123)每天都会发车,因此单靠“车次”无法唯一确定一条具体的运营记录。单靠“日期”更不行,因为每天有很多车次。只有联合“车次+日期”,才能唯一确定特定一天、特定一趟列车的运营情况。

题目 11: 学校数据库中有学生和宿舍两个关系:学生(学号,姓名)和宿舍(楼名,房间号,床位号,学号)。假设有的学生不住宿,床位也可能空闲,如果要列出所有学生住宿和宿舍分配的情况,包括没有住宿的学生和空闲的床位,则应执行( ) A. 全外连接 B. 左外连接 C. 右外连接 D. 自然连接

  • 答案A
  • 解析: 连接查询中,自然连接只会保留匹配的行。
    • 左外连接:保留左表所有行,右表没有的补空。
    • 右外连接:保留右表所有行,左表没有的补空。
    • 全外连接(Full Outer Join):左右两表的所有行都保留。题目要求既要保留“没有住宿的学生(左表未匹配)”,又要保留“空闲的床位(右表未匹配)”,因此必须使用全外连接。

题目 12: 关系规范化中的插入操作异常是指() A. 不该删除的数据被删除 B. 不该插入的数据被插入 C. 应该删除的数据未被刪除 D. 应该插入的数据未被插入

  • 答案D
  • 解析:插入异常是指由于表结构设计不合理(如存在部分依赖),导致某些本身存在且应该被录入的信息,因为缺少主键的一部分而无法被插入到数据库中。

题目 13: 设 D1={张三,李四}, D2={数学,语文}, D3={优,良} 则笛卡尔积D1×D2×D3的基是() A. 3 B. 6 C. 8 D. 9

  • 答案C
  • 解析:笛卡尔积是指将各个集合中的元素进行所有可能的排列组合。其结果的基(也就是组合后的记录总数)等于各个集合元素个数的乘积。由于这三个集合都包含2个元素,计算过程为:2×2×2=82 \times 2 \times 2 = 8

题目 14: 在视图上不能完成的操作是( )。 A. 更新视图 B. 查询 C. 在视图上定义新的基本表 D. 在视图上定义新视图

  • 答案C
  • 解析:视图被称为“虚表”,它自身不存储数据,其数据来源于背后的基本表。因此,你不能在一个虚拟的表上再去建立物理存储的“基本表”。

题目 15: 在数据库中,产生数据不一致的根本原因是()。 A. 数据存储量太大 B. 没有严格保护数据 C. 未对数据进行完整性控制 D. 数据冗余

  • 答案D
  • 解析:如果同一个数据在数据库中存了多份(数据冗余),当需要修改这个数据时,如果只修改了其中一份而忘记修改另一份,就会导致同一数据的不同副本出现差异。这是数据不一致的根本诱因。

二、 填空题(1分/空 * 10空 = 10分)

1. 数据库与文件系统的根本区别是

  • 答案:数据的结构化
  • 解析:文件系统内部可能有结构,但整体是无结构的;而数据库中的数据整体上是高度结构化的(具有模式)。

2. 关系R(A,B,C)和S(A, D, E)中,R的主键是(A,B,C),S是的主键是A,则A在R中称为

  • 答案:外键(或外部码)
  • 解析:关系R中包含了关系S的主键A,因此A在R中作为参照另一张表的桥梁,被称为外键。

3. SQL 是一种综合性的语言,是___、___、数据控制语言的组合。

  • 答案:数据定义语言(DDL)、数据操纵语言(DML)
  • 解析:SQL语言分为三大部分:定义表结构的DDL,增删改查数据的DML,以及进行权限管理的数据控制语言(DCL)。

4. 关系模型的基本数据结构是___ ,其数据库存储时的基本组织方式___。

  • 答案:关系(或二维表)、文件
  • 解析:在用户看来,关系模型就是一张张的二维表;而在操作系统的底层存储上,数据库通常是以文件的形式组织在磁盘上的。

5. 关系的完整性包含___和___。(注:标准理论为三类,原卷留有两个空)

  • 答案:实体完整性、参照完整性(或用户定义的完整性)
  • 解析:实体完整性要求主键不为空;参照完整性要求外键必须在主表中存在;用户定义的完整性则是针对特定业务规则的约束。填前两者即可。

三、 简答题(5分/题 * 4题 = 20分)

1. 试述使用数据库系统的好处。

  • 答案
    1. 实现数据共享,减少数据冗余:多个应用程序可以共用同一个数据库,避免重复存储。
    2. 具有高度的数据独立性:底层数据结构的改变不会严重影响上层应用程序的使用。
    3. 提供统一的数据控制机制:由DBMS统一保证数据的完整性(不符合规则的数据无法写入)、安全性(无权限无法访问)、并发控制(多人同时修改不出错)以及数据恢复(崩溃后可恢复)。
    4. 数据整体结构化:能够清晰表达复杂事物及其之间的联系。

2. 试述视图的优点。

  • 答案
    1. 简化用户操作:可以将多张表复杂的连接查询逻辑封装在视图中,用户直接查询视图即可。
    2. 增强数据安全性:可以通过视图向不同用户展示不同的数据列,隐藏敏感字段。
    3. 提供逻辑数据独立性:当底层物理表的结构发生变化时,可以通过修改视图的定义,使得对外暴露的视图结构保持不变,从而不用修改应用程序。

3. 请描述数据库设计的步骤,并对每个步骤进行描述。

  • 答案
    1. 需求分析:调查和分析用户的业务活动和数据需求,明确系统要“做什么”。
    2. 概念结构设计:将需求转化为抽象的、独立于底层系统的E-R图。
    3. 逻辑结构设计:将E-R图转化为特定DBMS支持的数据模型(如关系模式),并进行规范化优化。
    4. 物理结构设计:为逻辑数据模型选取最适合应用环境的物理存储结构和存取方法(如建立索引)。
    5. 数据库实施:编写SQL语句建库建表,组织数据入库,并编写调试应用程序。
    6. 数据库运行与维护:系统投入运行后,进行长期的监控、备份、性能优化及必要的结构调整。

4. 请简述关系的完整性与安全性的不同。

  • 答案
    • 完整性:主要防范的是合法用户由于误操作等原因录入了不正确、不符合语义规则的数据(例如年龄输入为负数,或关联了不存在的外键)。核心目标是保证数据的准确性和有效性
    • 安全性:主要防范的是非法用户或恶意攻击对数据的窃取、破坏或未经授权的篡改。核心目标是保护数据不被越权访问

四、 SQL语句(共20分)

前提关系说明

  • 学生 Student(学号 Sno, 学生姓名 Sname, 性别 Sgender, 出生日期 Birthday, 系 Sdept)
  • 课程 Course(课程号 Cno, 课程名 Cname, 先行课 Cpno, 学分 Ccredit)
  • 学生选课 SC(学号 Sno, 课程号 Cno, 分数 Grade)

1. 在Student表中新增一个Email列,其数据类型为varchar(30)。(2分)

  • SQL语句ALTER TABLE Student ADD Email varchar(30);
  • 解析:修改已有表的结构必须使用 ALTER TABLE,新增列使用 ADD 关键字。

2. 为出生日期 Birthday 列创建索引。(2分)

  • SQL语句CREATE INDEX idx_birthday ON Student(Birthday);
  • 解析:创建索引使用 CREATE INDEX 语法,后跟自定义的索引名称(如idx_birthday),并指定表名和要建立索引的列名。

3. 在Student表中查询性别为“男”且系别为“计算机科学与技术”的学生数据。(2分)

  • SQL语句SELECT * FROM Student WHERE Sgender='男' AND Sdept='计算机科学与技术';
  • 解析:这题考察基础的单表条件查询。使用 WHERE 子句过滤,多个条件需同时满足时使用逻辑运算符 AND 连接。

4. 在Student表中查询邮箱域名为“@stumail.nwu.edu.cn”的学生数据。(2分)

  • SQL语句SELECT * FROM Student WHERE Email LIKE '%@stumail.nwu.edu.cn';
  • 解析:由于域名是在邮箱字符串的结尾,我们需要使用模糊匹配。LIKE 配合通配符 % 表示匹配任意长度的任意字符序列。

5. 找出Student表中年龄最大和年龄最小的学生出生日期。(4分)

  • SQL语句SELECT MIN(Birthday), MAX(Birthday) FROM Student;
  • 解析:年龄最大意味着出生日期最早(值最小),年龄最小意味着出生日期最晚(值最大)。使用聚合函数 MIN()MAX() 即可。

6. 分系别统计Student表中的学生人数。(4分)

  • SQL语句SELECT Sdept, COUNT(*) FROM Student GROUP BY Sdept;
  • 解析:“分系别”意味着需要以“系(Sdept)”为依据进行分组,故使用 GROUP BY Sdept;统计人数使用聚合函数 COUNT(*)

7. 将学生的学号及其平均成绩定义为一个试图。(4分)

  • SQL语句CREATE VIEW Stu_AvgGrade AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno;
  • 解析:创建视图使用 CREATE VIEW 视图名 AS,后面紧跟对应的查询语句。本题需按学号分组查询SC表中的平均成绩。

五、 数据库设计(共20分)

题目背景: 设有关系模式 R(读者编号, 姓名, 单位编号, 单位名称, 图书号, 书名, 借阅日期, 还书日期),用来表示读者借阅图书信息。 规则:每个读者属于一个单位;借阅呈多对多关系;每个读者每天每本书最多借一次。

1. 根据上述条件,试画出反应R中关系的E-R图(不必画实体的属性)。(6分)

  • 答案解析:由于系统限制纯文本输出,可以这样画:
    • 三个实体(用矩形框表示):读者、单位、图书。
    • 两个联系(用菱形框表示)
      • 所属(连接“读者”和“单位”):由于每个读者只属于一个单位,而一个单位有多个读者,连线标记为 N : 1
      • 借阅(连接“读者”和“图书”):多对多关系,连线标记为 M : N。需要注意的是,由于“每天借一次”的规定,借阅联系需要附带属性:借阅日期、还书日期(连在借阅菱形上)。

2. R最高属于第几范式,为什么?(5分)

  • 答案:最高属于第一范式(1NF)
  • 解析: 首先明确主键:因为一个读者可以多次借阅同一本书,要唯一确认一条借阅记录,必须依赖 (读者编号, 图书号, 借阅日期) 这三个字段共同构成复合主键。 产生问题的原因在于部分函数依赖
    • “姓名”、“单位编号” 只依赖于主键中的“读者编号”,与“图书号”、“借阅日期”无关。
    • “书名” 只依赖于主键中的“图书号”。 这种非主属性(如姓名)依赖于主键的一部分的情况,违反了第二范式(2NF)的要求(2NF要求所有非主属性必须完全依赖于整个主键)。因此,它仅仅满足最基础的列不可分的1NF。

3. 举例说明R在何种情况下会发生删除异常。(5分)

  • 答案与解析: 假设读者“张三”(单位编号1,单位名称“信息学院”)归还了所有他借过的图书,并且我们需要将该借阅历史从关系R中删除。由于R不仅包含了借阅记录,还混杂了张三的基本信息,当删除张三所有借阅记录的那一刻,张三的姓名、所在单位的信息也会随着借阅记录一起被彻底从数据库中抹除。这就叫删除异常(不该丢失的数据丢失了)。

4. 请将R规范到3NF,并标注每种关系中的主码。(4分)

  • 答案:需要将其拆分为四张表,以消除部分依赖和传递依赖(带下划线的为主码):
    1. 读者 (读者编号, 姓名, 单位编号)
    2. 单位 (单位编号, 单位名称)
    3. 图书 (图书号, 书名)
    4. 借阅 (读者编号, 图书号, 借阅日期, 还书日期)
  • 解析
    • 将图书信息独立成表,消除了“书名”对主键的部分依赖。
    • 将借阅历史独立成表,由原复合主键和业务相关属性构成。
    • 将读者自身信息独立成表,进一步发现,在原表逻辑中“读者编号 \rightarrow 单位编号 \rightarrow 单位名称”,存在传递依赖(违反3NF)。因此必须把单位信息单独拆离出来,使系统达到第三范式(3NF)。

六、 嵌入式SQL填空(15分)

题目背景: 这是一段将SQL语句嵌入到C语言中执行的代码。核心逻辑是通过游标遍历查询结果,并交互式地询问用户是否要修改当前记录的年龄。

代码填空与解析

  • 空 (1)EXEC SQL INCLUDE SQLCA;

    • 解析:在C语言主程序的声明部分,必须首先引入SQL通信区(SQLCA)。它是DBMS与宿主语言程序之间交流状态信息(例如操作是否成功、返回错误码等)的数据结构。
  • 空 (2)EXEC SQL DECLARE SX CURSOR FOR

    • 解析:在执行连接数据库的代码后,代码上方有一个 SELECT Stno, Sname... FROM Student 的查询语句。在嵌入式SQL中,对于返回多行结果的查询,必须声明一个游标(Cursor)来逐行处理。该空的作用就是声明游标 SX
  • 空 (3)EXEC SQL OPEN SX;

    • 解析:注释提示“打开游标SX”。在使用游标之前,必须用OPEN命令打开它,此时DBMS才真正执行查询并将结果集准备好。
  • 空 (4)EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex, :HSage;

    • 解析:进入循环后,注释提示“推进游标,将当前数据放入主变量”。FETCH操作用于将游标当前指向的某一条记录提取出来,并赋值给C语言中定义的变量(主变量前需加冒号 : 标识)。
  • 空 (5)EXEC SQL UPDATE Student

    • 解析:注释提示“嵌入式 SQL 更新”。紧随其后的代码是 SET Sage=:NEWAGE WHERE CURRENT OF SX;,这属于“定位更新”(修改游标当前指向的行)。因此这里需要补全UPDATE的基础语法,即指定要更新的表名。
書體

本站所載,間有由 AI 所生成者。其辭義真偽,請君自審之。