2021年上半年软件水平考试(中级)数据库系统工程师下午(应用技术)真题试卷
试题一
阅读下列说明,回答问题。
【说明】
某社区蔬菜团购网站,为规范商品收发流程,便于查询客户订单情况,需要开发一个信息系统。请根据下述需求描述完成该系统的数据库设计。
【需求描述】
(1)记录蔬菜供应商的信息,包括供应商编号、地址和一个电话。
(2)记录社区团购点的信息,包括团购点编号、地址和一个电话。
(3)记录客户信息,包括客户姓名和一个电话。客户可以在不同的社区团购点下订单,不直接与蔬菜供应商发生联系。
(4)记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图1-1所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
蔬菜供货商(货商编号,地址,电话)
社区团购点(团购点编号,地址,电话)
供货(供货商编号, (a) )
客户(姓名,客户电话)
订单(单编号,
1.根据问题描述,补充图1-1的实体联系图。
[*]
解析:本题考查对数据库概念结构设计及逻辑结构转换的掌握及应用。此类题目要求考生认真阅读题目,根据题目的需求描述,补充关系模式和实体联系图。
根据题意可知“客户”和“社区团购点”两个实体参与“订单”联系,两者之间为*:*联系。由需求描述(4)“记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期”可知“订单”关系模式的属性除了包含参与联系双方的主键,即“团购点编号”和“客户电话”外,还应该包含“订单内容”和“日期”这两个属性,因此在“订单”联系上还应该补充“订单内容”和“日期”两个属性。
2.补充逻辑结构设计结果中的(a)、(b)两处空缺及完整性约束关系。
(a)团购点编号
(b)[*]
解析:根据需求描述(1)和(2)可知,“蔬菜供应商”和“社区团购点”两个实体参与的“供货”联系为*:*联系,因此对应的“供货”关系模式应包含参与联系双方的主键,即“供货商编号”和“团购点编号”,因此(a)处应补充“团购点编号”。“供货商编号”和“团购点编号”两个属性联合作为“供货”关系模式的主键,应该加下画线标识。
根据需求描述(4)“记录客户订单信息,包括订单编号、团购点编号、客户电话、订单内容和日期”可知,(b)处缺少“客户电话”。所以需要在“订单”关系模式中包含“客户电话”,且以外键标识。
3.若社区蔬菜团购网站还兼有代收快递的业务,请增加新的“快递”实体,并给出客户实体和快递实体之间的“收取”联系,对图1-1进行补充。“快递”关系模式包括快递编号、客户电话和日期。
补充内容如图中虚线所示。
[*]
解析:根据题意需要增加新的“快递”实体,并给出“客户”实体和“快递”实体之间的“收取”联系。因为每个客户可以有多条快递记录,而每条快递记录只能对应一个客户,所以“客户”与“快递”之间是1:*联系。“快递”关系模式包括“快递编号”“客户电话”“日期”三个属性,“快递编号”应加主键标识,“客户电话”应加外键标识。“客户电话”在图中不需要标识在“快递”实体的属性上。
试题二
阅读下列说明,回答问题。
【说明】
为防控新型冠状病毒感染,一些公共设施需要定期消毒。管理部门为高效完成工作并记录必要的工作信息,设计了相应的数据库,其中有一个表用来记录公共汽车的消毒情况。表的结构如下:
消毒记录(日期,车牌号,行驶路线,消毒人员工号,消毒人员姓名)
其中车牌号和消毒人员工号唯一,同一辆车保持固定的行驶路线。假设同一人员每天可以负责多辆车的消毒工作。
4.给出消毒记录表中成立且左侧只有一个属性的所有函数依赖关系。题中设计的消毒记录表是否满足2NF?请用100字以内的文字说明原因。
满足题意的函数依赖有:
车牌号→行驶路线
消毒人员工号→消毒人员姓名
是否满足2NF:否
原因:因为消毒记录表的主码是(日期,车牌号),存在非主属性对码的部分依赖。
解析:本题考查数据库逻辑结构设计和范式理论的应用。此类题目要求考生认真阅读题目对问题的描述,结合数据库系统理论,提出符合规范化要求的模型。
表中存在的函数依赖有:
①车牌号→行驶路线
②消毒人员工号→消毒人员姓名
③(日期,车牌号)→消毒人员工号
满足左侧只有一个属性的依赖为①②。
2NF要求关系满足1NF且每一个非主属性完全依赖于任何一个候选码。因为消毒记录表的主码是(日期,车牌号),非主属性行驶路线和消毒人员姓名并不完全依赖于码,所以不符合2NF。
5.如果要将消毒记录表规范化为满足3NF,请用100字以内的文字简要说明解决方案,并给出各个新表的主码和外码。
拆分为三个表:路线表(车牌号,行驶路线),消毒人员表(消毒人员工号,消毒人员姓名),消毒记录表(日期,车牌号,消毒人员工号)。
路线表主码为车牌号,无外码。
消毒人员表主码为消毒人员工号,无外码。
消毒记录表主码为(日期,车牌号,消毒人员工号),车牌号为外码,消毒人员工号为外码。
解析:3NF要求每一个非主属性既不传递依赖于码,也不部分依赖于码,因此需要将(车牌号,行驶路线)和(消毒人员工号,消毒人员姓名)这两组关系拆分为表,并将原关系中的非主属性从消毒记录表中去除。
6.如果每辆车每日有多次消毒,需要记录每次消毒的消毒时间,在问题2设计结果的基础上,如何在不破坏3NF且不增加冗余的前提下做到?请简单说明方案。
方案为:修改消毒记录表为(日期,车牌号,消毒人员工号,消毒时间)。
解析:消毒时间不影响公共汽车路线和消毒人员表,因此这两个表不需要修改。需要在消毒记录表中增加消毒时间属性,码变为(日期,车牌号,消毒人员工号,消毒时间)。
试题三
阅读下列说明,回答问题。
【说明】
某竞赛管理系统的部分数据库关系模式如下:
选手:PLAYER(Pno,Pname,Sex,Region,Tel),各属性分别表示参赛选手的编号、姓名、性别、地区和联系电话;
竞赛项目:CONTEST(Cno,Cname,Type,Date),各属性分别表示竞赛项目的编号、名称、类别和举办日期;
选手参赛:PC(Pno,Cno,City,Rank,Point),各属性分别表示选手编号、竞赛项目编号、竞赛所在城市、选手取得的名次和积分。
本文档预览:3600字符,共11197字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载