2023 年上半年数据库系统工程师考试
基础知识
● 计算机中,系统总线用于(1)。
(1)A.接口和外设
B.运算器、控制器和寄存器
C.CPU、主存及外设部件
D.DMA 控制器和中断控制器
参考答案:(1)C
系统总线通常用来连接计算机中的各个部件(如CPU、内存和I/O设备)
寄存器和运算器部件主要用片内总线连接,接口和外设由外部总线进行连接。
● 在由高速缓存,主存和硬盘构成的三级存储体系中,CPU 执行指令时需要读取数据,那么 DMA控制器和中断 CPU 发出的数据地址是 (2) 。
(2)A.高速缓存地址
B.主存物理地址
C.硬盘的扇区地址
D.虚拟地址
参考答案:(2)B
程序中用到的是虚拟地址,硬件中访问的通常是物理地址。
● 设信息位是 8 位,用海明码来发现并纠正 1 位出错的情况,则校验码的位数至少为 (3) 。
(3)A.1 B.2 C.4 D.8
参考答案:(3)C
根据海明校验位计算公式2^r-1>=m+r,本题中信息为位数是8,代入不等式进行计算,r>=4,因此校验位的位数至少为4位,
● 中断向量提供(4)
(4)A.被选中设备的地址
B.待传送数据的起始地址
C.中断服务程序入口地址
D.主程序的断点地址
参考答案:(4)C
中断是这样一个过程: 在CPU执行程序的过程中,由于某一个外部的或CPU内部事件的发生,使CPU暂时中止正在执行的程序,转去处理这一事件(即执行中断服务程序),当事件处理完毕后又回到原先被中止的程序,接着中止前的状态继续向下执行。这一过程就称为中断。
其中对于中断源的识别标志,是可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址,也称为中断向量。
● 如果一个线性表最常用的操作是存取第 i 个元素及其后继(若存在)的值,那么使该操作最快的存储方式是(5) 。
(5)A.单链表
B.单循环链表
C.双链表
D.数组
参考答案:(5)D
数组是顺序存储结果,优点是查询速度快,缺点是在插入和删除数据需要移动数据。而链表结果的优点是插入和删除数据快,缺点是查询速度慢。
● 设有一个具有头结点的单链表,指针 h 指向其头结点,则当 (6)时该单链表为空;如果该单链表非空,且指针 p 指向链尾,那么 (7) 。
(6)A.h==NULL
B.h->next==NULL
C.h->next-next==NULL
D.h->next=h
(7)A.p->next==NULL
B.p->next=h
C.p->next->next==NULL
D.p->next->next==h
参考答案:(6)B (7)A
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。单链表中每个结点的结构如下:
当h->nextNULL时为空,如果指针p指向链尾,那么p->nextNULL.
● 如果一棵二叉树有 10 个度为 2 的结点,5 个度为 1 的结点,那么度为 0 的结点个数为(8)。
(8)A.15 B.11 C.9 D.0
参考答案:(8)B
根据如下二叉树的特性,对任何一棵二叉树,如果其叶子节点数为n0,度为2的节点数为n2,则n0=n2+1。10+1=11。
● 若一棵二叉树的先序遍历序列为 EFHIGJK,中序遍历序列为 HFIEJKG,则该二叉树根结点的右孩子为 (9) 。
(9)A.E
B. F
C.G
D.H
参考答案:(9)C
先序遍历是根左右:EFHIGJK.,说明E是根节点,中序遍历是左根右,HFIEJKG,说明JKG在根节点E的右边,根据选项只有C是在右边,所以答案是C。
● 已知一个有序表为(12,18,24,35,47,50,62,83,90,115,134),当折半查找值为90 的元素时,经过(10) 次比较后查找成功。
(10)A.2 B.3 C.4 D.5
参考答案:(10)A
第1次查找:low=0,high=10 mid=[(0+10)/2]=5 50<90
第2次查找:low=5+1,high=10 mid=[(6+10)/2]=8 90=90
● 自动向应用程序注入意想不到的输入,以发现可利用的脆弱性的测试方法是 (11)。
(11)A.源代码测试
B.二进制代码测试
C.动态渗透测试
D.模糊测试
参考答案:(11)D
软件脆弱性的存在是威胁信息系统安全的最主要原因之一。模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。在不运行程序的情况下,对源代码或二进制代码进行逻辑语法、语义分析,分别是源代码测试和二进制代码测试。渗透测试是通过安全测试工具进行入侵来评估安全性。
● 生日攻击属于 (12) 加密模式。
(12)A.流密码
B.分组密码
C.替换密码
D.HASH 碰撞
参考答案:(12)D
所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。如果不同的输入得到了同一个哈希值,就发生了"哈希碰撞"。
而生日攻击是指在网络安全中利用生日现象,找到冲突的密码学哈希函数值,伪造报文,攻击报文身份验证算法的模式。
流密码也称为序列密码,是一种重要的密码体制,它的明文消息按字符或比特逐位加密。
分组密码是将明文消息经过二进制编码后的序列分割为固定长度的组,用同一秘钥和算法对每一组加密。且通常情况是密文、明文等长。比如我国的SM4分组密码算法。
替换式密码,又名取代加密法,是密码学中按规律将文字加密的一种方式。
● Windows 操作系统设置在多次无效登录后锁定账号,可以防止 (13)。
(13)A.木马
B.暴力攻击
C.IP 地址欺骗
D.格式化字符串攻击
参考答案:(13)B
暴力攻击是黑客使用枚举的方法,使用运算能力较强的计算机,尝试每种可能的字符破解密码,这些字符包括大小写、数字和通配符等。
● 以下关于网络钓鱼的叙述中,不正确的是 (14)
(14)A.网络钓鱼属于社会工程攻击
B.网络钓鱼与 Web 服务没有关系
C.典型的网络钓鱼攻击是将被攻击者引诱到一个钓鱼网站
D.网络钓鱼融合了伪装、欺骗等多种攻击方式
参考答案:(14)B
网络钓鱼是通过大量发送声称来自于银行或其他知名机构的欺骗性垃圾邮件,意图引诱收信人给出敏感信息。它属于社会工程攻击,融合了伪装、欺骗等多种攻击方式。它跟web服务是有关系,因为攻击者利用欺骗性的电子邮件和伪造的 Web 站点来进行网络诈骗活动,受骗者往往会泄露自己的私人资料。
● 以下不属于物理安全的是(15)
(15)A.对机房中旋转的计算机硬件进行保护
B.攻击监视器的闪光、声音、无线电或其他信号来检测通信与计算
C.利用物理系统接口的弱点来渗透系统
D.通过侦听网络数据报文来获取用户数据
参考答案:(15)D
通过侦听网络数据报文来获取用户数据,属于网络安全。
● 著作权中,(16)的保护期限不受期限限制
(16)A.发表权
B. 发行权
C.展览权
D.署名权
参考答案:(16)D
署名权保护期没有期限。根据相关法律规定,自然人的作品,其发表权等相关权利的保护期限为五十年,但作者的署名权、修改权、保护作品完整权的保护期不受限制。
● 国际上为保护计算机软件知识产权不受侵犯所采用的主要方式是实施(17)。
(17)A.合同法
B.物权法
C.版权法
D.刑法
参考答案:(17)C
著作权也称为版权。版权法是一个统称,包含各种与著作权有关的法律法规。
● 从磁盘读取数据的时候,占总时间比重最高的是(18) 。
(18)A.查找时间
B. 旋转延迟时间
C.传输时间
D.计算时间
参考答案:(18)A
磁盘的存取时间
(1)找磁道的时间
(2)找块(扇区)的时间,即旋转延迟时间,占比时间比重最高。
(3)传输时间
● 以下进程状态转换,不会发生的转换是(19) 的转换。
(19)A.就绪到运行
B.运行到就绪
C.等待到运行
D. 运行到等待
参考答案:(19)C
三态模型的转换如下所示。
运行态——等待态 等待使用资源,如等待外设传输,等待人工干预
等待态——就绪态 资源得到满足,如外设传输结束,人工干预完成
运行态——就绪态 运行时间片到,出现有更高优先权进程
就绪态——运行态 CPU空闲时选择一个就绪进程
● IC 方法中,(20) 不需要忙等待。
(20)A.锁变量
B.Peterson 方法
C.TSL 指令
D.信号量
参考答案:(20)D
信号量是一种线程同步机制,通过使用计数器来实现。当计数器大于0时,表示资源可用;当计数器等于0时,表示资源不可用。在使用信号量进行进程间通信时,线程可以通过调用wait操作来等待资源的可用,而不需要忙等待。只有当资源可用时,线程才会被唤醒继续执行。
所以只有信号量不需要忙等待。而ABC选项都是需要忙等待。
● 页面替换算法中,(21)采用访问页面的引用位和修改位作为参考指标。
(21)A.时钟算法
B.先入先出算法
C.二次机会算法
D.最近未使用算法
参考答案:(21)D
页面替换算法中,最近未使用算法采用访问页面的引用位和修改位作为参考指标。
第二次机会算法的基本思想是与FIFO相同的,但是有所改进,避免把经常使用的页面置换出去。当选择置换页面时,依然和FIFO一样,选择最早置入内存的页面。但是二次机会法还设置了一个访问状态位。所以还要检查页面的的访问位。如果是0,就淘汰这页;如果访问位是1,就给它第二次机会,并选择下一个FIFO页面。当一个页面得到第二次机会时,它的访问位就清为0,它的到达时间就置为当前时间。如果该页在此期间被访问过,则访问位置为1。这样给了第二次机会的页面将不被淘汰,直至所有其他页面被淘汰过(或者也给了第二次机会)。因此,如果一个页面经常使用,它的访问位总保持为1,它就从来不会被淘汰出去。
把所有的页面都保存在一个类似钟面的环形链表中,一个表针指向最老的页面。当发生缺页中断时,算法首先检查表针指向的页面,如果它的R位是0就淘汰该页面,并把新的页面插入这个位置,然后把表针前移一个位置;如果R位是1就清除R位并把表针前移一个位置,重复这个过程直到找到了一个R位为0的页面为止。
● 程序控制结构中, (22)提供了在两种或多种分支中选择其中一个的逻辑。
(22)A.顺序 B.选择 C.循环 D.函数
参考答案:(22)B
● 按照数据组织形式的不同,枚举属于 (23) 类型。
(23)A.基本 B.用户定义 C.指针 D.构造
参考答案:(23)B
按照数据组织形式的不同,枚举属于用户定义类型。构造类型包括数组、结构、联合。基本类型包括整型、字符型、实型、布尔类型。
● 黑盒测试不能发现的错误是(24) 。
(24)A.错误的功能
B.遗漏的功能
C.程序数据结构的有效性
D.初始化或终止性错误
参考答案:(24)C
进行黑盒测试主要是为了发现以下几类错误: 1、是否有错误的功能或遗漏的功能 2、界面是否有错误,输入是否能够正确接受,输出是否正确 3、是否有数据结构或外部数据库访问错误 4、性能是否能够接受 5、是否有初始化或终止性错误测试程序内部数据结构的有效性等是属于白盒测试的内容。
● 软件过程模型中,(25)主要用于解决需求的不确定性问题。
(25)A.螺旋模型
B.瀑布模型
C.V 模型
D.原型化模型
参考答案:(25)D
需求明确情况下使用瀑布模型。而原型化方法主要用于解决需求不确定的情况。
● 数据流图设计中(26)指出了系统所需数据的发源地和系统所产生数据的归宿地,是指软件系统之外的人员或组织。
(26) A.外部系统
B.数据存储
C.加工
D.外部实体
参考答案:(26)D
● 在 UML 图中,(27)展现了一组对象、接口、协作和它们之间的关系;(28)展现了运行处理节点及其构件的配置,组出了体系结构的静态实施视图。
(27)A.类图
B.序列图
C.部署图
D.状态图
(28) A.序列图
B.类图
C.部署图
D.状态图
参考答案:(27)A (28)C
● Modem 的主要作用是(29)。
(29)A.数模转换
B.路由转发
C.认证
D.地址转换
参考答案:(29)A
Modem是调制解调器,通过电话线提供网络访问,调至解调器的作用在于把来自于计算机的数字传输转化为能够通过电话系统传输的模拟信号,同时也把来自电话线的模拟信号转化为计算机能够理解的数字信号。
● 在 OSI 参考模型中,负责对应用层消息进行压缩、加密功能的层次为(30)。
(30)A.传输层
B.会话层
C. 表示层
D.应用层
参考答案:(30)C
应用层:实现具体的应用功能。
表示层:数据的格式与表达、加密、压缩。
会话层:建立、管理和终止会话。
传输层:端到端的连接。
网络层:分组传输和路由选择。
数据链路层:传送以帧为单位的信息。
物理层:二进制传输。
● 以下关于 Telnet 的叙述中,不正确的是(31)。
(31)A.telnet 支持命令模式和会话模式
B.telnet 采用明文传输
C.telnet 默认端口是 23
D.telnet 采用 UDP 协议
参考答案:(31)D
Telnet基于TCP协议提供远程登录功能,端口号23,使得用户在本地主机上运行Telnet客户端,就可登录到远端的Telnet服务器. 在本地输入的命令可以在服务器上运行,服务器把结果返回到本地,如同直接在服务器控制台上操作,这样就可以在本地远程操作和控制服务器。
Telnet服务虽然使用方便,但由于其安全性不高,Telnet是一个明文传送协议,用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此目前通常使用SSH代替Telnet进行远程管理。
● WWW 控制协议是(32)。
(32)A.FTP
B.HTTP
C. SSL
D.DNS
参考答案:(32)B
HTTP协议是超文本传输协议,是用于从WWW服务器传输超文本到本地浏览器的传送协议。
● (33)是国产数据库管理系统。
(33) A. SQL Server
B. MySQL
C. HarmonyOS
D. openGauss
参考答案:(33)D
openGauss是一款高性能、高安全、高可靠的企业级开源的关系型的国产数据库管理系统。
● 数据模型的组成要素不包括(34)的。
(34)A.数据结构
B. 数据操作
C. 并发控制
D. 数据的完整性约束
参考答案:(34)C
数据模型的组成要素包括数据结构、数据操作和数据约束。其中并发控制不属于数据模型的组成要素。
● 视图属于数据库系统三级模式结构的(35)。
(35)A. 逻辑模式
B. 外模式
C. 概念模式
D.内模式
参考答案:(35)B
数据库系统的三级模式结构包括:
- 内模式(物理模式):描述了数据在物理存储介质上的存储方式和组织方式。
- 概念模式(逻辑模式):描述了整个数据库的逻辑结构,包括数据的实体、关系和约束等。
- 外模式(用户模式):对用户或应用程序的数据需求进行抽象和描述,是对概念模式的一种子集。
答案B是正确的。根据数据库系统的三级模式结构,视图属于外模式。
● 设有关系 R(E,F,G)和 S(F,G,H,K),关系代数表达式(36)可正确计算:如果进行运算 R-S,其结果集包含属性(37)。
(36)A.R⋃S
B.R⋂S
C.R-S
D.R×S
(37)A.E
B.F,G
C.H,K
D.E,F,G
参考答案:(36)D (37)A
并、交、差的关系运算是要求具有相同的关系模式。而笛卡尔积是不需要。所以第1空答案是D。如果关系模式不相同,在关系代数中,两个关系进行差运算时,只保留第一个关系中的所有属性。对于给定的关系R(E,F,G)和S(F,G,H,K),如果进行运算R-S,结果集将仅包含来自关系R的属性(即属性E,F和G)。属性H和K将被丢弃。所以第2空选D。
● “授予用户 WANG 对视图 Course 的查询权限”功能的 SQL 语句是(38) 。
(38)A.GRANT SELECT ON TABLE Course TO WANG
B.GRANT SELECT ON VIEW Course TO WANG
C.REVOKE SELECT ON TABLE Course TO WANG
D.REVOKE SELECT ON VIEW Course TO WANG
参考答案:(38)B
● 若关系模式 R(U,F)属于 3NF,则(39)。
(39)A.一定属于 BCNF
B.消除了插入和删除异常
C.仍存在一定的插入和删除异常
D.属于 BCNF 且消除了插入和删除异常
参考答案:(39)B
根据关系数据库的范式理论,在3NF(第三范式)中,一个关系模式必须满足以下条件:
每个非主属性都必须直接依赖于候选键。
没有传递依赖(即不存在A->B->C的情况)。
根据以上条件,3NF确保了消除了传递依赖和部分依赖,从而消除了部分插入异常和更新异常。但是,3NF仍然可能存在插入和删除异常的风险。因为满足3NF不一定满足BCNF。
● 在 SQL 中,LIKE 后表示任意长度字符串的通配符是(40) 。
(40)A._ B.% C.? D.*
参考答案:(40)B
● 以下关于视图的叙述中,错误的是(41)。
(41)A.视图是虚拟表 B.视图可以从视图导出 C.视图的定义存放在数据库中 D.所有视图都可以更新
参考答案:(41)D
视图不一定都可以更新。根据视图的定义和基础表的结构和约束条件,只有满足特定条件的视图才能进行更新操作。对于满足更新条件的视图,可以通过UPDATE、INSERT和DELETE语句对其进行更新操作。但对于不满足更新条件的视图,试图进行更新操作将会导致错误。因此,视图并非都可以更新。
● 在 SQL 中,表达年龄(Sage)非空的 WHERE 子句为(42) 。
(42)A.Sage<>NULL B.Sage!=NULL C.Sage IS NOT NULL D.Sage NOT IS NULL
参考答案:(42)C
在SQL中,用于判断字段是否非空的关键字是IS NOT NULL。所以在表达年龄(Sage)非空的WHERE子句中,应该使用Sage IS NOT NULL。
● 对于不包含子查询的 SELECT 语句,聚集函数不允许出现的位置是(43)。
(43)A.SELECT 子句
B.WHERE 子句
C.GROUP BY 子句
D. HAVING 子句
参考答案:(43)B
在SQL中,聚集函数用于对某一列或表达式进行计算,并返回一个聚合值,比如SUM、COUNT、AVG等。而WHERE子句用于筛选满足特定条件的记录,只有符合条件的记录才会被包含在查询结果中。
● 在 SQL 中,能够改变基本表中元组的物理存储位置的方法是(44) 。
(44)A. 使用 UNIQUE 索引
B.使用 CLUSTER 索引
C.使用 ORDER BY 子句
D.使用 GROUP BY 子句
参考答案:(44)B
CLUSTER索引是一种特殊类型的索引,它会按照指定的列顺序对表中的数据进行物理排序。这种排序使得存储在同一磁盘块上的相关数据在查询时更容易访问,可以提高查询性能。使用CLUSTER索引可以改变基本表中元组的物理存储位置,将它们重新组织为按照指定的列排序的方式。
● 设有关系:选课(学号,姓名,课程号,成绩),规定姓名不重复,那么这一规则属于(45);“学号”与“姓名”之间的数据依赖可表述为(46);选课关系最高属于(47) 。
(45)A.实体完整性
B.参照完整性
C.用户定义的完整性
D.概念模型完整性
(46)A.“学号”与“姓名”之间相互函数依赖
B.“学号”与“姓名”之间相互不函数依赖
C.“姓名”函数依赖于“学号”,反之不然
D.“学号”函数依赖于“姓名”,反之不然
(47)A.1NF
B.2NF
C.3NF
D.BCNF
参考答案:(45)C (46)A (47)C
“学号与姓名之间的数据依赖可表述为”属于用户定义的完整性。用户定义的完整性是指用户对于数据的约束和规则的定义,例如数据的唯一性、非空性、参照完整性等。在这个问题中,规定了姓名不重复的约束,属于用户定义的完整性。
“学号”与“姓名”之间相互函数依赖。函数依赖是指一个集合中的一个或多个属性的值唯一地决定了另一个属性的值。在这个问题中,学号唯一地决定了姓名的值,同时姓名也唯一地决定了学号的值,所以是相互函数依赖关系。
选课关系最高属于3NF(第三范式)。第三范式要求一个关系中的所有属性都依赖于主键,而不是依赖于其他非关键属性。
● 在关系模式 R(A,B,C,D)中,AB->->B 显然成立,因为此数据依赖本质上是(48) 。
(48)A.非平凡的函数依赖
B. 平凡的函数依赖
C.平凡的多值依赖
D. 非函数依赖的多值依赖
参考答案:(48)B
当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。
● 当多个事务执行时,任一事务的更新操作,在其成功提交之前,对其他事务都是不可见的,这指的是事务的 (49) 。
(49)A.原子性
B.一致性
C.隔离性
D.持久性
参考答案:(49)C
● 数据库管理系统需要处理多种故障,其中 CPU 故障属于 (50) 。
(50)A.事务故障
B.系统故障
C.介质故障
D.计算机病毒
参考答案:(50)B
系统故障是指特定类型的硬件错误、操作系统故障、DBMS代码错误、突然停电等。其中CPU故障属于系统故障。
● 一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据,这种现象称为(51) 。
(51)A.脏读
B.丢失修改
C.不可重复读
D.幻读
参考答案:(51)A
● 在事务隔离级别中,(52)隔离级别禁止不可重复读和脏读现象,但是有时可能出现幻读数据。
(52)A.Read Uncommitted
B.Read Committed
C.Repeatable Read
D.Serializable
参考答案:(52)C
四种隔离级别
① Read uncommitted (读未提交):最低级别,不允许丢失修改。
② Read committed (读已提交):可避免脏读的发生。
③ Repeatable read (可重复读):可避免脏读、不可重复读的发生。
④ Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
● (53)约束通过被引用表中实际存在的记录值,对引用表中相应属性的取值进行了约束和限制。
(53)A.非空
B.主键
C.外键
D.唯一性
参考答案:(53)C
● 某大学学生管理系统中,要求学生的年龄在 16~22 岁间,该规则可以通过(54) 约束来实现。
(54)A.主键
B.CHECK
C.defalut
D.唯一性
参考答案:(54)B
● 触发器涉及到的激发事件不包括(55) 。
(55)A.SELECT
B.UPDATE
C.DELETE
D.INSERT
参考答案:(55)A
● 在行级触发器中,只有(56) 语句的条件表达式值为真,触发器才会触发。
(56)A.referencing
B.when
C.if
D.for each row
参考答案:(56)B
在行级触发器中,触发器在满足指定条件的情况下才会被触发。这个条件由触发器的WHEN子句来定义。
WHEN子句是触发器定义的一部分,它可以指定一个条件表达式。只有当该条件表达式的值为真时,触发器才会被触发执行相关的操作。
● 以下关于触发器的说法中,错误的是(57) 。
(57)A.触发器用于实现一些复杂的业务规则
B.触发器内部可以使用事务控制语句
C.触发器只能被动触发,不能直接调用
D.触发器内部不能使用 DDL 语句
参考答案:(57)B
触发器中不能包含事务控制语句。因为触发器是触发语句的一部分,触发器内部被提交、回退时,整体也被提交、回退了。
●(58) 协议规定对任何数据进行读写之前必须对该数据加锁,且在释放一个封锁之后,事务不再申请和获得任何其他封锁。
(58)A.一级封锁
B.二级封锁
C.三级封锁
D.两段锁
参考答案:(58)D
● 如果经常使用范围查询,(59) 会更高效。
(59)A.B 树索引
B.散列索引
C.位图索引
D. 倒序索引
参考答案:(59)A
● 以下关于 SQL 语句优化的说法中,错误的是 (60)
(60)A.尽可能地减少多表查询
B.只检索需要的属性列
C.尽量使用相关子查询
D.经常提交修改,尽量释放锁
参考答案:(60)C
● 在数据库运行阶段,如果频繁访问两个表中的关联数据,则考虑采用(61)的方法;如果表中元组数量很大,导致操作效率降低,在不修改程序和表逻辑模式的情况下,可以考虑采用(62)的方法。
(61)A.表合并
B.水平分解
C.物理分区
D.垂直分解
(62)A.表合并
B.水平分解
C.物理分区
D.垂直分解
参考答案:(61)A (62)B
● 引入索引的目的是(63)。
(63)A.提高查询语句执行效率
B.实现数据的物理独立性
C.提高更新语句执行效率
D.实现数据的逻辑独立性
参考答案:(63)A
● 数据库物理设计的主要工作不包括(64)。
(64)A.确定数据分布
B.确定关系模式
C.确定存储结构
D.确定访问方式
参考答案:(64)B
确定关系模式属于逻辑结构设计的主要工作。数据库物理设计主要涉及确定数据分布、存储结构和访问方式。
● (65)属于事务故障。
(65)A.读错误
B.写错误
C.逻辑错误
D.系统掉电
参考答案:(65)C
事务故障是指在事务执行过程中发生的错误或异常情况,导致事务无法完成或产生不一致的结果。其中逻辑错误是事务故障。
● (66)机制先在日志中记录一个事务的所有 write 操作,而该事务的所有 write 操作拖延到事务最后一条语句被执行后才执行,来保证事务的原子性。
(66)A.延迟修改
B.立即修改
C.撤销
D.重做
参考答案:(66)A
延迟修改是一种用于保证事务原子性的机制。在延迟修改机制中,对于一个事务中的所有写操作,先在日志中记录下来,而实际的修改操作则被延迟到该事务的最后一条语句被执行后才执行。
延迟修改机制的主要目的是保证事务的原子性。通过将修改操作延迟执行,可以在事务执行过程中允许回滚操作,从而实现事务的原子性。
● 事务故障时可能已对数据库进行了修改,为了消除该事务对数据库的影响,要利用日志文件中的记录,强行 (67) 该事务,将数据库恢复到初始状态。
(67)A.中止
B.回滚
C.重启
D.终止
参考答案:(67)C
● 磁盘属于 (68)存储器。
(68)A.非易失性
B.易失性
C.永久性
D.虚拟
参考答案:(68)A
● 分布式数据库的设计主要考虑数据分布的设计,数据分布主要目的是提高访问的(69),即通过数据的合理分布,尽可能使更多的数据能够就地存放,以减少远距离的数据访问。
(69)A.局部性
B.全局性
C.重构性
D.完整性
参考答案:(69)A
● NoSQL 数据库的存储模型有(70)。
(70)A.列存储,图存储,文件存储
B.KEY-VALUE 存储,图存储,关系表存储
C.对象存储,XML 存储,层次存储
D.对象存储,图存储,关系表存储
参考答案:(70)A
● (71) is a software package,designed to store,retrieve,query and manage datalUser interfaces(UIs) allows data to be created,read,updated and deleted by authorized entities.The system users include database administrators(DBAs), application programmers and end users.Most of the time, (72) are the only ones to directly interact with a system. They use (73) to deal with database schemas and descriptions,of how the data should reside in the database.They use (74) to deal with data manipulation which includes most common SQL statements such as SELECT,INSERT,UPDATE,DELETE,etc...They also focus on managing and maintaining the (75) of the database system: prevent unauthorized access of the data.
(71) A.DB B.DBMS C.SQL D.DDL
(72) A.database administrators(DBAs) B.application programmers
C.end users D.programmers
(73) A.DDL B.DML C.SQL D.MML
(74)A.DDL B.DML C.SQL D.MML
(75) A.maintenance B.security C.performance D.capacity
参考答案:(71)B (72)A (73)A (74)B(75)B
数据库管理系统(DBMS)是一个软件包,旨在存储、检索、查询和管理数据。用户界面(UI)允许授权实体创建、读取、更新和删除数据。系统的用户包括数据库管理员(DBAs)、应用程序程序员和最终用户。大部分情况下,数据库管理员是唯一直接与系统交互的人员。他们使用数据库定义语言(DDL)来处理数据库模式和描述数据在数据库中的存储方式。他们使用数据操作语言(DML)来处理数据的操作,其中包括最常见的SQL语句,如SELECT、INSERT、UPDATE、DELETE等。他们还专注于管理和维护数据库系统的安全性,防止未经授权的访问数据。
应用技术
● 试题一:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某新能源汽车公司为了提升效率,需要开发一个汽车零件采购系统。请根据下述需求描述完成该系统的数据库设计。
【需求描述】
(1)记录供应商的信息,包括供应商的名称、地址和一个电话。
(2)记录零件的信息,包括零件的编码、名称和价格。
(3)记录车型信息,包括车型的编号、名称和规格。
(4)记录零件采购信息。某个车型的某种零件可以从多家供应商采购,某种零件也可以被多个车型采用,某家供应商也可以供应多种零件;还包括采购数量和采购日期。
【概念结构设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图2-1所示。
图2-1 实体联系图
【逻辑结构设计】
根据概念结构设计阶段完成的实体联系图,得出如下关系模式(不完整):
供应商( 名称,地址,电话)
零件( 编码,名称,价格)
车型( 编号,名称,规格)
采购( 车型编号, 供应商名称,(a),(b), 采购日期)
【问题1】(5分)
根据问题描述,补充图2-1的实体联系图(不增加新的实体)。
参考答案:
【问题2】(3分)
补充逻辑结构设计结果中的(a)、(b)两处空缺,并标注主键和外键完整性约束。
参考答案:
(a) 零件编码
(b) 采购数量
【问题3】(7分)
该汽车公司现新增如下需求:记录车型在全国门店的销售情况。门店信息包括门店的编号、地址和电话;销售包括销售数量和销售日期等。
对原有设计进行以下修改以实现该需求:
(1)在图2-1中体现门店信息及其车型销售情况,并标明新增的实体和联系,及其必要属性。
(2)给出新增加的关系模式,并标注主键和外键完整性约束。
参考答案:
门店(编号,地址,电话);主键:门店编号;外键:无。
销售(门店编号,车型编号,销售数量,销售日期);主键(门店编号,车型编号,销售日期);外键(门店编号,车型编号)。
● 试题二:阅读下列说明,回答问题1至问题2,将解答填入答题纸的对应栏内。
【说明】
一汽车厂商对配件进行统一管理,设计了相应的数据库,其中一个表记录了维修配件的使用信息。其表结构如下:
维修配件使用表(车牌号,维修时间,配件编码,配件名称,配件供应商,配件仓库编码,仓库地址,维修配件数量)
其中,车牌号和配件编码满足唯一性。假设同一辆车在同一次维修情况下可能需要多种维修配件;一种配件只能存放于一个配件仓库,一种配件只能由一个配件供应商提供。维修时间精确到秒。
【问题1】 (7分)
题中给出的维修配件使用表存在数据冗余,请给出具体的冗余属性并说明因此会出现哪些异常?
参考答案:
冗余属性有:配件名称,配件供应商,配件仓库编码,仓库地址。
出现的异常有:存在插入异常,修改异常和删除异常。
【问题2】 (8分)
维修配件使用表是否满足BCNF?如果不满足,请对其进行模式分解,使分解后的关系模式满足BCNF,并标记出主键和外键。
参考答案:
不满足。
分解为三个关系模式,分别是:
分解1(配件仓库编码,仓库地址),主键是配件仓库编码,外键无。
分解2(配件编码,配件名称,配件供应商,配件仓库编码),主键是配件编码,外键是配件仓库编码。
分解3(车牌号,维修时间,配件编码,维修配件数量),主键是(车牌号,维修时间,配件编码),外键是配件编码。
● 试题三:阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某教务管理系统的部分数据库关系模式如下:
学生:STUDENT(Sno,Sname,Ssex,Sage,Sdept),各属性分别表示学号、姓名、性别、年龄、所在系名;
课程:COURSE(Cno,Cname,Cpno,Ceredit),各属性分别表示课程号、课程名、先修课的课程号、学分;
选课:SC(Sno,Cno,Grade),各属性分别表示学号、课程号、成绩。
有关关系模式的说明如下:
(1)下划线标出的属性是表的主键。
(2)课程名取值唯一。
根据以上描述,回答下列问题,将SQL语句的空缺部分补充完整。
【问题1】(3分)
请将下面创建课程表COURSE的SQL语句补充完整,要求定义实体完整性约束、参照完整性约束以及其他完整性约束。
CREATE TABLE COURSE(
Cno CHAR(4) PRIMARY KEY,
Cname CHAR(30) (a),
Cpno CHAR(4) REFERENCES (b) ((c))
Ccredit INT
);
参考答案:
(a)UNIQUE
(b)COURSE
(c)Cno
【问题2】 (4分)
有一门课程号为“C036的新开课要求所有学生选修。该课的基本信息已经录入课程表COURSE中,现需在选课表SC中插入该课的选课记录。实现此功能的SQL语句如下,请补全。
(d) INTO SC(Sno, (e))
SELECT Sno, (f) FROM (g );
参考答案:
(d)INSERT
(e)Cno
(f)‘C036’
(g)STUDENT
【问题3】 (4分)
查询每一门课程的间接先修课(先修课的先修课),要求输出课程号和间接先修课的课程号。即使某门课程没有先修课,也需要输出,不过其间接先修课为空。此功能由下面的SQL语句实现,请补全。
SELECT K1.Cno, (h)
FROM COURSE K1 (i) OUTER JOIN COURSE K2 (j) ((k));
参考答案:
(h)k2. Cpno
(i)LEFT
(j)ON
(k)k1. Cpno =k2. Cno
【问题4】 (4分)
查询选修了课程表中已有全部课程的学生,要求输出学号和姓名。此功能由下面的SQL语句实现,请补全。
SELECT Sno,Sname FROM STUDENT
WHERE NOT EXISTS(
SELECT * FROM (l)
WHERE (m)(
SELECT * FROM (n)
WHERE(o)
)
);
参考答案:
(l)COURSE
(m)not exists
(n)SC
(o)SC.Sno= STUDENT.Sno and SC.Cno= COURSE.Cno
双重否定(两个NOT EXISTS)的语句表肯定。
● 试题四:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某企业内部信息系统部分简化后的关系模式如下:员工表:EMPLOYEES(Eid,Ename,Address,Phone,Jid):属性含义分别为:员工编码、员工姓名、家庭住址、联系电话、岗位级别编码。
岗位级别表:JOB_LEVELS(Jid,Jname,Jbase_salary):属性含义分别为:岗位级别编码、岗位名称、岗位基本工资。
员工工资表:SALARY(Eid,attendance_wage,merit_pay,overtime_wage,salary,tax,year,month):属性含义分别为:员工编码、考勤工资、绩效工资、加班工资、最终工资、税、年份、月份。
该企业在每月25日计算员工的工资。首先是根据考勤系统以及绩效系统中的数据,计算出员工的考勤、绩效和加班工资,存入到员工工资表;其次结合员工的岗位基本工资,计算出最终工资,完成对员工工资表记录的更新。最后依据员工工资表完成工资的发放。
【问题1】 (6分)
下面是月底25日计算某员工最终工资的存储过程程序,请补全空缺处的代码。
CREATE PROCEDURE SalaryCalculation((a) empId char(8),IN iYear number(4),IN iMonth number(2))
DECLARE
attendance number(14,2);
merit number(14,2);
overtime number(14,2);
base number(14,2);
all_salary number(14,2);
BEGIN
SELECT attendance_wage,merit_pay,overtime_wage
INTO (b)
FROM SALARY
WHERE Eid=empld FOR UPDATE;
SELECT Jbase_salary INTO :base
FROM EMPLOYEES T1,(c)
WHERE T1.Jid=T2.Jid AND T1.Eid=empld;
all_salary=attendance+merit+overtime+base;
UPDATE SALARY SET salary =:all_salary
WHERE (d) AND year=iYear AND month=iMonth;
(e);
EXCEPTION WHEN OTHERS THEN
(f);
END;
参考答案:
(a)IN
(b):attendance,:merit,:overtime
(c)JOB_LEVELS T2
(d)eid= empld
(e)COMMIT
(f)ROLLBACK
【问题2】 (5分)
为了防止对员工工资表的非法修改(包括内部犯罪),系统特意规定了员工工资表修改的业务规则:对员工工资表的修改只能在每月25日的上班时间进行。
下面是员工工资表修改业务规则对应的程序,请补全空缺处的代码。
CREATE TRIGGER CheckBusinessRule (g) INSERT OR DELETE OR (h)on SALARY
FOR EACH (i)
BEGIN
IF (TO_CHAR(sysdate,'DD')<>(j)) OR(to_number(TO_CHAR(sysdate,'HH24')) (k) BETWEEN 8 AND 18)
THEN Raise_Error;//抛出异常
END IF;
END;
参考答案:
(g)before
(h)update
(i)row
(j)‘25’
(k)not
【问题3】 (4分)
人事部门具有每月对员工进行额外奖罚的权限,该奖罚也反应到员工的最终工资上。假设当某月计算一位员工的最终工资时,同一时间人事部门对该员工执行了奖励2000元的事务操作,对应事务的部分调度序列如表4-1所示。
(1)请说明该事务调度存在哪种并发问题?
(2) 采用2PL是否可以解决该并发问题?是否会产生死锁?
参考答案:
(1)该事务存在丢失更新的问题。因为人事部门奖罚事务更新的最终工资被计算最终工资事务的写入而覆盖了。
(2)可以。可能会产生死锁。
两段锁协议(2PL)是指对任何数据进行读写之前必须对该数据加锁:在释放一个封锁之后, 事务不再申请和获得任何其他封锁。所谓"两段"锁的含义是: 事务分为两个阶段。第一阶段是获得封锁,也称为扩展阶段。第二阶段是释放封锁,也称为收缩阶段。需要注意的是采用两段锁协议也有可能产生死锁,这是因为每个事务都不能及时解除被它封锁的数据,可能会导致多个事务互相都要求对方己封锁的数据不能继续运行。
● 试题五:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某装备的组装过程需要经过多道程序,由于工作空间狭小,同时只能有一人在操作间工作,所以在每道工序之间需要先完成使用配件的出库后,操作人员携带配件到操作间进行安装工作,安装过程中需要扫描配件编码以自动记录该配件的安装情况。
假使存在三个事务用于处理某一类配件的某次安装实施,事务T1负责出库登记,T2负责安装登记,T3负责将未使用的配件重新入库。所有三个事务执行完成后,T1出库的数量应等于T2安装的数量与T3重新入库的数量之和。数据项I记录配件的库存数量,数据项J记录成功安装的数量。
某次组装过程出库了12个配件,安装了6个。假设数据库系统采用检查点机制对故障进行恢复,部分日志文件如表5-1所示。日志记录内容中:<Ti,START>表示事务Ti开始执行,<Ti,COMMIT>表示事务Ti提交,<Ti,D,V1,V2>表示事务Ti将数据项D的值由V1修改为V2。例如:<T1,I,22,3>表示事务T1将数据项I的数值从22修改为3。<Ti,D,V>表示将事务Ti回滚,数据项D的值回滚到V。<Ti, abort>表示事务Ti回滚结束。CRASH表示系统磁盘出错。请回答以下问题。
【问题1】 (5分)
请用100字以内的文字简要说明数据库系统常见故障类型。并说明表5-1中的日志记录表明数据库出现哪种类型的故障。
参考答案:
常见故障类型是事务故障、系统故障和介质故障。事务故障是由于事务程序内部错误而引起的。系统故障是特定类型的硬件错误、操作系统故障等。介质故障是指外存故障,如磁盘损坏、磁头碰撞等。
表 5-1 日志记录中的数据库出现介质故障。
【问题2】 (4分)
请给出系统恢复时需要重做(Redo)的事务列表和需要辙销(Undo)的事务列表。
参考答案:
REDO 列表:T2
UNDO 列表:T3
【问题3】 (6分)
根据题干中所描述的业务逻辑,请填写表5-1日志记录中的空白(a);请给出Undo恢复的补偿日志记录,填写空白(b)和(c)。
参考答案:
(a)14
(b)<T3,I,8>
(c)<T3, abort>