2021年上半年数据库系统工程师考试
基础知识
● 在 CPU 中,用 (1) 给出将要执行的下条指令在内存中的地址。
(1) A.程序计数器
B.指令寄存器
C.主存地址寄存器
D.状态条件寄存器
参考答案:(1)A
● 以下关于 RISC 和 CISC 计算机的叙述中,正确的是(2)。
(2) A.RISC 不采用流水线技术,CISC 采用流水线技术
B.RISC 使用复杂的指令,CISC 使用简单的指令
C.RISC 采用很少的通用寄存器,CISC 采用很多的通用寄存器
D.RISC 采用组合逻辑控制器,CISC 普遍采用微程序控制器
参考答案:(2)D
在RISC中,CPU中通用寄存器数量相当多, 以硬布线控制逻辑为主,不用或少用微码控制。而在CISC中普遍采用微程序控制器。
● 采用 DMA 方式传送数据时,每传送一个数据都需要占用一个(3)。
(3) A.指令周期
B.总线周期
C.存储周期
D.机器周期
参考答案:(3)B
在DMA传送数据时要占用系统总线。
● 若磁盘的转速提高一倍,则(4)。
(4) A.平均存取时间减半
B.平均寻道时间加倍
C.转等待时间减半
D.数据传输速率加倍
参考答案:(4)C
● 一个栈的输入序列为 12.3.4,5,不可能得到的输出序列是(5)。
(5) A.2,3,4,1,
B.5.4.1.3.2
C.2,3,1,4.5
D.1.5.4.3.2
参考答案:(5)B
● (6)算法是不稳定的排序算法。
(6) A.简单选择
B.冒泡
C.直接插入
D.归并排序
参考答案:(6)B
不稳定的排序算法主要有以下四种:1、选择排序; 2、快速排序; 3、希尔排序(shell); 4、堆排序。
●(7) 是一种先进先出的线性表,只允许在表的一端插入元素,而在表的另一端删除元素。
(7) A.栈
B.队列
C.串
D.树
参考答案:(7)B
● 一颗 5 层的二叉树,其最多有(8)个结点,第 5 层最多有(9)个结点。
(8) A.15 B.16 C.31 D.32
(9) A.15 B.16 C.31 D.32
参考答案:(8)C (9)B
●(10) 排序又被称为缩小增量排序,是对直接插入排序方法的改进。
(10) A.简单选择
B.冒泡
C.快速
D.希尔
参考答案:(10)D
● 以下关于计算机安全原则的叙述中,不正确的是(11)。
(11)A.在系统设计时,实现安全措施应具有简洁性
B.系统的保护机制不应该公开
C.用户和程序在操作时应当使用尽可能少的特权
D.多用户系统中允许多个用户共享资源的机制应该最小化
参考答案:(11)B
●攻击者使网络中的服务器充斥着大量需要回复的信息,消耗带宽,导致系统停止正常服务或者响应很慢,这种攻击类型属于(12)。
(12) A.直注入攻击
B.TCP 会话动持
C.DoS 攻击
D.ARP 欺骗攻击
参考答案:(12)C
● 以下关于蜜罐的叙述中,不正确的是(13)。
(13) A.蜜罐对攻击者更有吸引力
B.对蜜罐的任何连接都被确定为入侵
C.蜜罐计算机中有吸引力的文件使入侵者逗留并留下证据
D 蜜罐能够主动发现攻击者
参考答案:(13)D
● 不属于 SQL 注入防范措施的是(14)。
(14) A.使用预编译语句,绑定变量
B.对用户提交的数据进行严格过滤
C.使用安全函数
D.使用动态 SQL 语句
参考答案:(14)D
SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
● 5 防止重放攻击最有效的方法是(15)。
(15) A.对用户密码进行加密存储使用
B.使用一次一密的加密方式庭的机学
C.强制用户经常修改用户密码
D.强制用户设置复杂度高的密码
参考答案:(15)B
● 根据(计算机软件保护条例》的规定,对软件著作权的保护不包括(16)。
(16) A.目标程序
B.软件文档
C.源程序
D.开发软件所用的操作方法
参考答案:(16)D
● 甲、乙两公司于 2020 年 7 月 7 日就各自开发的库存管理软件分别申请“宏达”和“鸿达”商标 v 注册,两个库存管理软件相似,甲第一次使用时间为 2019 年 7 月,乙第一次使用时间为 2019年 5 月,此情形下,(17)能获准注册。
(17) A.“宏达”
B.“宏达”和“鸿达”均
C.由甲、乙协商哪个
D.“鸿达”
参考答案:(17)D
● CPU 的速度要远快于打印机的速度,为解决这个速度不匹配的问题,可以使用(18)。
(18) A.并行技术
B.缓存技术
C.虚拟内存技术就微
D.交换技术
参考答案:(18)B
● 假设所有的作业同时到达,平均周转时间最短的调度算法是(19)。
(19)A.先来先服务
B.优先级调度
C.短作业优先
D.轮转算法
参考答案:(19)C
先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。
短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。
时间片轮转调度算法:每个进程被分配一个时间段,称作它的时间片,即该进程允许运行的时间。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它就会被移到队列的末尾。
基于优先级调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业输入并调入内存处理时,优先选择优先级别数最高的作业。
作业周转时间(Ti)=完成时间(Tei)-提交时间(Tsi)
作业平均周转时间(T)=周转时间/作业个数
● 同一进程的多个线程之享的内容不包括(20)。
(20) A.地址空间
B.栈
C.全局变量
D.记账信息
参考答案:(20)B
线程共享地址空间,但线程的私有数据、线程栈等又是需要单独保存的。所以,地址空间、全局变量、记账信息都是可共享的。
● 在死锁产生的必要条件中,可以使用(21)方法破坏“不可剥夺条件”。
(21) A.假脱机
B.预先静态分配
C.强制剥夺资源
D.所有资源排序使用
参考答案:(21)C
产生死锁的四个必要条件:
互斥条件:一个资源每次只能被一个进程使用。
请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
假脱机方法用于破坏互斥条件。有些资源天生不可强制剥夺,因此不能使用强制剥夺资源,否则会导致任务失败。所有资源排序使用可以用来破坏循环等待条件。预先静态分配方法可以破坏“不可剥夺条件”。
● 在程序设计语言中,(22) 表示了构成语言的各个记号和使用者的关系,而语境是指理解和实现程序设计语言的环境,包括(23) 环境和运行环境。
(22)A.语法 B.语义 C.语用 D.词法
(23)A.开发 B.调试 C.测试 D.编译
参考答案:(22)C (23)D
在程序设计语言中,语用表示了构成语言的各个记号和使用者的关系,而语境是指理解和实现程序设计语言的环境,包括编译环境和运行环境。
● 在程序编译过程中,执行类型分析和检查是在(24)阶段。
(24)A.词法分析
B.语法分析
C.语义分析
D.代码优化
参考答案:(24)C
一般的编译程序工作过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,以及出错处理和符号表管理,如下图所示。
● ISO 软件质量模型由 3 个层次组成,分别是质量特性,质量子特性和最度指标。例如(25)质量子特性属于可靠性质量特性。
(25) A.依从性
B.成熟性
C.易操作性
D.易安装性
参考答案:(25)B
ISO软件质量模型:
软件质量的6大特性:功能性、可靠性、易用性、效率、维护性、可移植性
软件质量的27个子特性:
功能性:适合性、准确性、互操作性、安全性、功能性的依从性
可靠性:成熟性、容错性、可恢复性、可靠性的依从性
易用性:易理解、易学习、易操作、吸引性、可使用性的依从性
效率:时间特性、资源特性、效率的依从性
维护性:易分析性、稳定性、易变更性、易测试性、可维护性的依从性
可移植性:适应性、易安装性、遵循性、易替换性、可移植性的依从性
●在 UML 图中,(26)展现了一组对象以及它们之间的关系,描述了类实例的静态快照。
(26) A.类图
B.对象图
C.序列图
D.状态图
参考答案:(26)B
●(27) 强调风险分析,比较适用于庞大、复杂且高风险的系统。
(27) A.瀑布模型
B.螺旋模型
C.V 模型
D.原型化模型
参考答案:(27)B
● 软件能力成熟度模型(CMM)是对软件组织进化阶段的描述,分为5个成熟度级别,其中在(28)级别,说明该组织已经建立了基本的项目管理过程来跟踪成本和进度。
(28) A.可重复级
B.已定义级
C.已管理级
D.优化级
参考答案:(28)A
软件能力成熟度模型(CMM)分为5个等级:
初始级:软件过程的特点是无秩序的,甚至是混乱的,软件处于无章法和步骤可循的状态,或者制订的规范未能覆盖基本的关键过程要求,且执行没有政策、资源方面的保证,那么仍被视为初始级。
可重复级:已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。焦点集中在软件管理过程上。一个可管理的过程就是一个可重复的过程,一个可重复的过程则能逐渐演化和成熟。
定义级:用于管理和工程的软件过程均已文档化、标准化,并已形成整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合、适当修改后的标准软件过程来进行操作。要求制定企业范围的工程化标准,而且无论是管理还是工程开发都需要一套文档化的标准,并将这些标准集成到企业软件开发标准过程中去。
管理级:软件过程和产品质量有详细的度量报告,软件产品和过程得到了定量的认识和控制。
优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地进行过程改进。
●在地址栏中输入 www.abe com,测览器默认的应用层协议是(29)
(29) A.HTTP
B.DNS
C.TCP
D.FTP
参考答案:(29)A
● WLAN 的含义是(30)。
(30) A.无线局域网
B.无线广域网
C.有线网络
D.共享网络
参考答案:(30)A
● 防火墙的主要功能不包括(31)。
(31) A.包过滤
B.访问控制
C.加密认证
D.应用层网关
参考答案:(31)A
防火墙的主要功能:包过滤、访问控制、应用层网关等。
●下列协议中,属于安全远程登录协议的是(32)。
(32) A.TLS
B.TCP
C.SSH
D.TFTP
参考答案:(32)C
● 数据模型中,唯一标识实体的属性集称为(33)。
(33) A.外码
B.码
C.属性
D.元组
参考答案:(33)B
●关系模型中,一组具有相同数据类型的值的集合称为(34)。
(34) A.域
B.变量
C.分量
D.元组
参考答案:(34)A
● 相比于文件系统,用数据库系统管理数据,具有(35)的优势。
(35) A.数据冗余高
B.数据独立性高
C.数据结构化程度低
D.数据联系弱
参考答案:(35)B
● 在一个关系表中,一个表的列代表一个(36)。
(36) A.关系
B.记录
C.元组
D.属性
参考答案:(36)D
● 如下表所示,有两个关系 E 和 F,若它们经过某一关系运算后的结果为{计算机学院},这一关系运算为(37)。
(37)A.E*F
B.F*E
C.E/F
D.F/E
参考答案:(37)C
● 某公司开发系统记录员工基本信息。假设每个员工只在一个部门工作:每个员工必须提供工作和家庭两部电话号码。(38) 不满足 1NF。
(38) A.R1(员工编号,姓名,性别)
B.R2(员工编号,姓名,家庭电话,工作电话)
C.R3(员工编号,姓名,部门)
D.R4(员工编号,姓名,电话{家庭电话,工作电话}
参考答案:(38)D
● 结构化查询语言(SQL)的出现,极大地促进了(39)的应用。
(39) A.层次数据库
B.网络数据库
C.关系数据库
D.文件管理系统
参考答案:(39)C
●有一进口商品数据表 item_info(item_id,item_type,unit_price,item_count),其中 item_id 是自动编号字段,其他属性可以为 NULL 如果用 SQL 语句:INSERT INTO item_info(unit_price, item_count) VALUES (9.99, 150)向数据表中插入元组时,则该元组的 item_type 属性值为(40)。
(40) A.NULL
B.任意值
C.0
D.插入失败,不存在该元组
参考答案:(40)A
●原子性、一致性、持久性、(41)是数据库事务的四个特征。
(41) A.只读性
B.封装性
C.隔离性
D.恢复性
参考答案:(41)C
●假设有两个数据库表isurance和epoeer分别记录了某地所有工作人员的社保信息和基本信息:
insurance (id, is valid),各属性分别表示身份证号、社保是否有效,其中 is_ valid=1 表示社保有效,is valid=0 表示社保无效。
employee (id, name, salay, is local),各属性分别表示身份证号、姓名、每月工资,户口是否在当地,其中 is_local=1 表示户口在当地,is local=0 表示户口不在当地。
2021 年农历新年,为防控疫情,鼓励留在工作地过年,决定对社保有效且户口不在当地的人群发放津贴。可筛选出满足补贴发放条件人员的 SQL 语句为(42)。
(42) A.SELECT * FROM employee, insurance WHERE insurance.id = employee.id AND insurance.is_Valid=1
B.SELECT * FROM employee, insurance WHERE insurance.is valid= 1 AND employee.is local=0
C.SELECT * FROM employee, insurance WHERE insurance.id = employee.id AND insurance.is_valid= 1 AND insurance.is local=0
D.SELECT * FROM employee, insurance WHERE insuranceid = employee.id AND insurance.is_valid= 1 AND employee.is local=1
参考答案:(42)C
● 在一个数据库中,如果要赋予用户 userA 可以查询 department 表的权限,应使用语句(43)。
(43) A.GRANT SELECT ON department TO userA
B.REVOKE SELECT ON department FROM userA
C.GRANT SELECT ON department FROM userA WITH GRANT OPTION
D.REVOKE SELECT ON department TO userA
参考答案:(43)A
●要从数据库中删除 people 表及其所有数据,以下语句正确的是(44)。
(44) A.DELETE table people
B.DROP table people
C.ERASE table people
D.ALTER table people
参考答案:(44)B
●某电影院某日电影入座情况如下表所示。为调整场次,要统计 2021 年 2 月 21 日到场人数总数大于 100 的电影,可满足要求的 SQL 语句是(45)。
(45) A.SELECT film,sum(attendance) FROM movie WHERE pdate='20210221' HAVING sum(attendance)> 100
B.SELECT film,sum(attendance) FROM movie WHERE pdate=‘20210221’ AND attendance >100 GROUP BY film
C.SELECT film,sum(attendance) FROM movie WHERE pdate=‘20210221’ GROUP BY film HAVING sum(attendance)> 100
D.SELECT film,sum(attendance) FROM movie WHERE pdate=‘20210221’ AND sum(attendance)>100 GROUP BY film
参考答案:(45)C
● 设有关系模式:选课(学号,课程号,课程名,成绩),其函数依赖集为{课程号+课程名,课程名一>课程号,(学号,课程号)→成绩}。则关于该关系模式,以下说法错误的是(46)。将“选课”分解为两个关系模式: SC (学号,课程号,成绩)和 C(课程号,课程名),则 SC 和 C 最高分别属于(47)。对于关系模式“选课'来说,(学号,课程号)→课程号是特殊的多值依赖,本质上是(48)。
(46)A.每个非平凡函数依赖的决定因素都包含码
B.不存在非函数依赖的多值依赖
C.不存在非主属性对码的部分函数依赖
D.不存在非主属性对码的传递函数依赖
(47)A.3NF 和 3NF
B.BCNF 和 3NF
C.3NF 和 BCNF
D.BCNF 和 BCNF
(48)A.非函数依赖的多值依赖
B.平凡的多值依赖
C.非平凡的函数依赖
D.平凡的函数依赖
参考答案:(46)A (47)D (46)D
● 以下关于数据库事务的叙述中,正确的是(49)。
(49) A.一个数据库应用程序只能包含一个数据库事务
B.一个数据库事务仅包含条 SQL 语句
C.一个数据库事务仅包含一个存储过程
D.一个数据库事务可以包含一组 SQL 语句
参考答案:(49)D
● 关于模式分解,(50)不是分解前后模式等价性的准则。
(50) A.分解后关系模式要达到最高范式
B.分解具有无损连接性
C.分解要保持函数依赖
D.分解既要保持函数依赖,又要具有无损连接性
参考答案:(50)A
●关系模式 R(U, PD 中,属性集 U=(A,B,C, D, E},函数依赖集 F=(A→BC,C→D,BD→A,AD→E,BD→E}。则(CE)F+=(51)
(51) A. CE
B. BCE
C.CED
D.BCED
参考答案:(51)C
● 以下关于数据库事务的说法中,错误的是(52)。
(52) A.数据库事务是恢复和并发控制的基本单位
B.数据库事务必须由用户显式地定义
C.数据库事务具有 ACID 特性
D.COMMIT 和 ROLLBACK 都代表数据库事务的结束
参考答案:(52)B
●下表是某两个事务并发执行时的调度过程,这里不会出现不可重复读的问题,是因为这两个事务都使用了(53);两个事务的并行执行结果是正确的,是因为这两个事务都使用了(54);在执行过程中没有发生死锁,这是因为(55)导致的。
(53)A.三级封锁协议
B.二级封锁协议
C.两段锁协议
D.一次封锁法
(54)A.二级封锁协议
B.三级封锁协议
C.两段锁协议
D.排他锁
(55)A.排他锁
B.共享锁
C.两段锁协议
D.偶然的调度
参考答案:(51)A (52)C (51)D
一级封锁协议:事务T在修改数据对象R之前必须先对其加X锁,直到事务结束才释放。
二级封锁协议: 在一级封锁协议的基础上,事务T在读取R之前先对其加S锁,读完后即可释放S锁。
三级封锁协议:在一级封锁协议的基础上,事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
一级封锁协议解决了丢失修改,二级封锁协议解决了脏读,三级封锁协议解决了不可重复读。
两段锁可以保证多个事务的并发执行是可串行化的调度。所以答案是C。
两段锁是不能保证死锁的,没有发生是因为这次的调度刚好没有出现而已。所以答案是D。
● 以下关于触发器的说法中,错误的是(56)。
(56) A.触发器可以带参数
B.触发器不能被应用程序显式调用
C.触发器可以关联到基本表
D.一个基本表上可以定义多个触发器
参考答案:(56)A
● 在数据库中新建存储过程的关键字是(57)。
(57) A.CREATE PROCEDURE
B.INSERT PROCEDURE
C.CREATE TRIGGER
D.INSERT TRIGGER
参考答案:(57)A
● 数据库故障恢复中,根据日志文件进行的撤销操作是(58)。
(58) A.REDO
B.ROLLBACK
C.UNDO
D.COMMIT
参考答案:(58)C
● 数据库系统中的运算溢出属于(59)。
(59) A.事务故障
B.系统故障
C.介质故障
D.硬件故障
参考答案:(59)A
事务故障是由于程序执行错误而引起事务非预期的、异常终止的故障。它发生在单个事务的局部范围内,实际上就是程序的故障。有的事务故障可以通过事务程序本身发现。
● 以下关于并发调度的说法中,正确的是(60)。
(60) A.以不同串行方式调度执行两个事务,结果都相同
B.并发调度结果与某一种串行调度结果相同,是并发调度正确的必要条件
C.不满足两段锁协议的并发调度,其结果一定是错误的
D.满足两段锁协议的并发调度不会产生死锁
参考答案:(60)B
● 在数据库设计中,下列步骤排序正确的选项是(61)。
①需求分析
②物理结构设计
③概念结构设计
④逻辑结构设计
(61) A.①②③④
B.③①②④
C.①④③②
D.①③④②
参考答案:(61)D
● 以下关于数据库设计的说法中,正确的是(62)。
(62) A.在逻辑结构设计阶段,规范化程度越高越好
B.逻辑结构设计的结果必须满足 BCNF
C.在物理结构设计阶段,聚族可提高特定属性的查询效率
D.在物理结构设计阶段,若选择 B+树索引存取方法,关系上定义的索引数越多越好
参考答案:(62)C
● 数据的逻辑独立性由(63)的映射实现。
(63) A.外模式到逻辑模式
B.外模式到内模式
C.逻辑模式到内模式
D.内模式到逻辑模式
参考答案:(63)A
● (64)要求关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。
(64)A.1NF
B.2NF
C.3NF
D.4NF
参考答案:(64)D
●某公司的数据库在试运行阶段发现 cpu 长时间占用率高于 95%,那么不可能的原因是(65)。在运行一段时间后,由于硬盘故障,该数据库无法运行,这属于(66)。
(65)A.CPU 性能过剩
B.应用复杂过高
C.查询执行成本过高
D.存在大量行锁冲突
(66)A.计算机病毒
B.事务内部故障
C.系统故障
D.介质故障
参考答案:(65)A(66)D
● 以下关于数据库的重组和重构的说法中,正确的是(67)。
(67) A.数据库的重组修改了原设计的逻辑和物理结构
B.数据库的重构不修改原设计的逻辑和物理结构
C.数据库的重组是指按原设计要求重新安排存储位置、回收垃圾、减少指针链以提高系统性能
D.数据库的重构是指按原设计要求重新安持存储位置、回收垃圾、减少指针链等,以提高系统性能
参考答案:(67)C
● 下列选项中,(68) 不属于分布式数据库的优点。
(68) A.可拓展性好
B.具有数据分布透明性
C.体系结构灵活
D.存取结构简单
参考答案:(68)D
● 以下(69)不属于 NoSQL.
(69) A.Cassandra
B.MongoDB
C.PostgreSQL
D.Neo4j
参考答案:(69)C
● 分布式数据库 CAP 理论中的 A 指的是(70)。
(70) A.一致性
B.可用性
C.分区容错
D.原子性
参考答案:(70)A
●When we talk about a database, we must differentiate between the database_ (71)_ ,which is the logical design of the database, and the database_ (72) , which is a snapshot of the data in the database at a given instant in time. The concept of a relation corresponds to the programming‐language notion of a variable, while the concept of a relation schema corresponds to the programming‐language notion of type definition. In general, a relation schema consists of a listof(73)and their corresponding domains. The concept of a relation instance corresponds to the programming‐language notion of a value of a (74) . The valueof a given variable may change with time; similarly the contents of a relation instance may change with time as the relation is updated. In contrast, the_ (75) оfa relation does not generally change.
(71)A.schema B.instance C.table D.entity
(72)A.schema B.table C.instance D.entity
(73)A.variable B.attributes C.rows D.notions
(74)A.constant B.variable C.struct D.array
(75)A.table B.schema 5C.instance D.view
参考答案:(71)A(72)B(73)B(74)B(75)B
应用技术
● 试题一:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。
【需求描述】
(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。
(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。
(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点下订单,不直接与蔬菜供应商发生联系。
(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图1-1所示。
图1-1 实体联系图
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
蔬菜供货商(供货商编号,地址,电话)
社区团购点(团购点编号,地址,电话)
供货(供货商编号,(a))
客户(姓名,客户电话)
订单(订单编号,团购点编号,订单内容,日期,(b))
【问题1】 (6分)
根据问题描述,补充图1-1的实体联系图。
参考答案:
【问题2】 (4分)
补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。
参考答案:
(a):团购点编号。主键为:(供货商编号,团购点编号),外键为:供货商编号,团购点编号。
(b):客户电话。 主键为:订单编号,外键为:团购点编号,客户电话。
【问题3】 (5分)
若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取”联系,对图1进行补充。“快递” 关系模式包括快递编号、客户电话和日期。
参考答案:
● 试题二:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
为防控新冠疫情,一些公共设施需要定期消毒,管理部门为高效完成工作并记录必要的工作信息,设计了相应的数据库,其中有一个表用来记录公共汽车的消毒情况,表的结构如下:
消毒记录(日期,车牌号,行驶路线,消毒人员工号,消毒人员姓名)
其中车牌号和消毒人员工号唯一,同一辆车保持固定的行驶路线。假设同一人员每天可以负责多辆车的消毒工作。
【问题1】 (6分)
给出消毒记录表中成立且左侧只有一个属性的所有函数依赖关系。题中设计的消毒记录表是否满足2NF?请用100字以内的文字说明原因。
参考答案:
左侧只有一个属性的函数依赖关系有2个,分别为:
车牌号->行驶路线
消毒人员工号->消毒人员姓名
不满足2NF,根据题干可以得到消毒记录表的候选键为(日期,车牌号),由于存在车牌号->行驶路线,属于部分依赖。根据2NF的要求,存在非主属性对码的部分依赖,所以不满足2NF。
【问题2】 (6分)
如果要将消毒记录表规范化为满足3NF,请用100字以内的文字简要说明解决方案,并给出各个新表的主码和外码。
参考答案:
由于消毒记录表不满足2NF,需要将消毒记录表进行拆分成多个表,拆分的表如下:
毒记录1(车牌号,行驶路线)
消毒记录2(消毒人员工号,消毒人员姓名)
消毒记录3(车牌号,日期,消毒人员工号)
由于拆分后的三个表都不存在非主属性对码的部分和传递函数依赖,所以都满足3NF。
【问题3】 (3分)
如果每辆车每日有多次消毒,需要记录每次消毒的消毒时间,在问题2设计结果的基础上,如何在不破坏3NF且不增加冗余的前提下做到?请简单说明方案。
参考答案:
由于每辆车每日有多次消毒记录时间,可以在问题2的基础上增加表:
消毒记录4(车牌号,日期,消毒时间)
● 试题三:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某竞赛管理系统的部分数据库关系模式如下:
选手: PLAYER(PnO, Phame, Sex, Region, Tel),各属性分别表示参赛选手的编号、姓名、性别、地区和联系电话;
竞赛项目: CONTEST(CnO, Chame, Type, Date),各属性分别表示竞赛项目的编号、名称、类别和举办日期;
选手参赛: PC(Pno, Cno, City, Rank, Point),各属性分别表示选手编号、竞赛项目编号、竞赛所在城市、选手取得的名次和积分。
有关关系模式的说明如下:
(1)下划线标出的属性是表的主码。
(2)选手参赛表的属性Pno和Cno分别参照了选手表和竞赛项目表的主码。
(3)一个选手参加一项竞赛有一个名次和一个积分,名次有4个取值('一','二','三','无' )。另外,竞赛所在城市不能为空。
根据以上描述,回答下列问题,将SQL语句的空缺部分补充完整。
【问题1】 (5分)
请将下面创建选手参赛表PC的SQL语句补充完整,要求定义实体完整性约束、参照完整性约束,以及其他完整性约束。
CREATE TABLE PC(
Pno CHAR(10) REFERENCES(a)(Pno),
Cno CHAR(3) REFERENCES(b)(Cno),
City CHAR(20)(c)
Rank CHAR(20)(d)
Point SMALLINT,
(e);
参考答案:
(a):PLAYER
(b):CONTEST
(c):NOT NULL
(d):CHECK(Rank IN('一','二','三','无'))
【问题2】(6分)
查询所有未参加'Al'类别竞赛的选手,要求输出选手的编号(Pno),查询结果按照选手编号的升序排列。此功能由下面的SQL语句实现,请补全。
SELECT Pno FROM (f)
WHERE Pno (g) (
SELECT (h) FROM PC, Contest
WHERE (i)
(j) Type='Al' )
(k) Pon;
参考答案:
(f):PLAYER
(g):NOT IN
(h):Pno
(i):PC.Cno=CONTEST.Cno
(j):AND
(k):ORDER BY
【问题3】 (4分)
由于某种原因,编号为'E06'的竞赛项目在正式举办前被取消了。而此前系统中已经记录了一些选手的报名参赛情况,因此需要在系统中删除'E06'的竞赛项目记录,以及该竞赛的所有报名参赛纪录。根据问题1在选手参赛表PC上定义的参照完整性约束,此功能可以由下面的SQL语句实现,请补全。
(l)FROM(m)WHERE Cno= ‘E06’;
(n)FROM(o)WHERE Cno= ‘E06’;
参考答案:
(l):DELETE
(g):PC
(h):DELETE
(i):CONTEST
● 试题四:阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某企业网上书城系统的部分关系模式如下:
书籍信息表:books(book_no, book_name, press_no, ISBN, price, sale_type, all_nums)。其中属性含义分别为:书籍编码、书籍名称、出版商编码、ISBN、 销售价格、销售分类、当前库存数量。
书籍销售订单表:orders(order_no, book_no, book_nums, book_price, order_date,amount)。其中属性含义分别为:订单编码、书籍编码、书籍数量、书籍价格、订单日期和总金额。
书籍再购额度表:booklimit(book_no, sale_type, limit_amount)。其中属性含义分别为:书籍编码、销售分类、再购额度;
书籍最低库存表:bookminlevel(book_no, level) ,其中属性含义分别为:书籍编码,书籍最低库存数量;
书籍采购表:bookorders(book_no, order_amount),其中属性含义分别为:书籍编码和采购数量。
有关关系模式的说明如下:
(1)下划线标出的属性是表的主码。
(2)根据书籍销售情况来确定书籍的销售分类:销售数量小于1万的为普通类型,其值为0;1万及以上的为热销类型,其值为1。
(3)系统具备书籍自动补货功能,涉及到的关系模式有:书籍再购额度表、书籍最低库存表、书籍采购表。其业务逻辑是:当某书籍库存小于其最低库存数量时,根据书籍的销售分类以及书籍再购额度表中的再购额度,生成书籍采购表中的采购订单,完成自动补货操作。
【问题1】(5分)
系统定期扫描书籍销售订单表,根据书籍总的销售情况来确定书籍的销售类别。下面是系统中设置某书籍销售类别的存储过程,结束时需显式提交返回。请补全空缺处的代码。
CREATE PROCEDURE UpdateBookSaleType(IN bno varchar(20))
DECLARE
all_nums number(6);
BEGIN
SELECT (a) (book_nums) INTO all_nums FROM orders
WHERE book_no = (b) ;
IF all_nums < (c) THEN
UPDATE books SET sale_type = 0 WHERE book_no = bno;
ELSE
UPDATE books SET sale_type = (d) WHERE book_no = bno;
END IF;
(e) ;
END;
参考答案:
(a)sum
(b)bno
(c)10000
(d)1
(e)commit
【问题2】 (6分)
下面是系统中自动补货功能对应的触发器,请补全空缺处的代码。
CREATE TRIGGER BookOrdersTrigger (f) update of (g) on books
(h)
WHEN (i) <(SELECT level FROM bookminlevel
WHERE bookminlevel.book_no = OLD.book_no)
AND (j) >=(SELECT level FROM bookminlevel
WHERE bookminlevel.book_no = OLD.book_no)
BEGIN
INSERT INTO (k)
(SELECT book_no,limit_amount
FROM booklimit as TMP
WHERE TMP.book_no = OLD.book_no
AND TMP.sale_type = OLD.sale_type);
END;
参考答案:
(f): after
(g): all_nums
(h): for each row
(i): NEW.all_nums
(j): OLD.all_nums
(k): bookorders
【问题3】 (4分)
假设用户1和用户2同时购买同一书籍,对应事务的部分调度序列如表4-1所示(事务中未进行并发控制),其中T0时刻该书籍的库存数量all_nums=500。
请说明T4时刻,用户2事务读取到的all_nums数值是多少?
请说明T8时刻,all_nums数据是否出现不一致性问题?如出现,请说明属于哪一种数据不一致性。
参考答案:
T4时刻,用户2事务读取到的all_nums数值是498。
在T8时刻,all_nums数据会出现不一致性的问题,由于用户2事务读到了用户1修改过的all_nums,然后在T7时刻用户1事务回滚了之前对all_nums的修改,把all_nums恢复到了500。最终用户2事务读到的数据是498,读到的是脏数据。所以是属于读脏数据的不一致。
● 试题五:阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某数据库系统采用数据转储方式对数据和日志文件进行离线备份,用检查点机制进行恢复。假设其部分日志文件如表5-1所示。日志记录内容中:CHECKPOINT表示检查点, 表示事务Ti开始执行, 表示事务Ti提交, 表示事务Ti将数据项D的值由V1改为V2,CRASH表明系统发生断电故障。假设各数据项的初始值为:I=3J=6,K=11。
【问题1】 (6分)
假设各数据项的初始值为: I=22, J=45, K=9,系统出错恢复后,I、J、K的数值会恢复为多少?
参考答案:
I,J,K的数值会恢复为I=3,J=5,K=9
【问题2】 (4分)
请给出系统恢复时需要重做(Redo)的事务列表和需要撤销(undo)的事务列表。
参考答案:
Redo: T2
Undo:T3
因为在checkpoint这个日志点之前,T1已经完成,T2在检查点之后完成的,T3还没有完成,所以,T2需要重做,T3需要回滚。
【问题3】 (5分)
假设掉电造成磁盘介质损坏,数据库无法启动,请用100字以内的文字简要说明其恢复过程。
参考答案:
(1)重装数据库
(1)装载故障前最近一次的备份和故障前的日志文件副本
(2)按照正常恢复过程执行Undo和Redo恢复。