【软件设计师真题】下午题第二大题---数据库设计
数据库设计的考点和上午考题的考点重叠,只是考查方式不同。常考的考点有数据模型、主键和超键、E-R 模型转换为关系模型、SOL,语句等。
一、真题一
1、题目
某销售公司当前的销售业务为商城实体店销售。现该公司拟开展网络销售业务,需要开发一个信息化管理系统。请根据公司现有业务及需求完成该系统的数据库设计。
【需求描述】
(1)记录公司所有员工的信息。员工信息包括工号、身份证号、姓名、性别、出生日期和电话,并只登记一部电话。
(2)记录所有商品的信息。商品信息包括商品名称、生产厂家、销售价格和商品介绍。
系统内部用商品条码唯一区别每种商品。
(3)记录所有顾客的信息。顾客信息包括顾客姓名、身份证号、登录名、登录密码和电话号码。一位顾客只能提供一个电话号码。系统自动生成唯一的顾客编号。
(4)顾客登录系统之后,在网上商城购买商品。顾客可将选购的商品置入虚拟的购物车内,购物车可长期存放顾客选购的所有商品。顾客可在购物车内选择商品、修改商品数量后生成网购订单。订单生成后,由顾客选择系统提供的备选第三方支付平台进行电子支付,支付成功后系统需要记录唯一的支付凭证编号,然后由商城根据订单进行线下配送。
(5)所有的配送商品均由仓库统一出库。为方便顾客,允许每位顾客在系统中提供多组收货地址、收货人及联系电话。一份订单所含的多个商品可能由多名分拣员根据商品所在仓库信息从仓库中进行分拣操作,分拣后的商品交由配送员根据配送单上的收货地址进行配送。
(6)新设计的系统要求记录实体店的每笔销售信息,包括营业员、顾客、所售商品及其数量。
【概念模型设计】
根据需求阶段收集的信息,设计的实体联系图(不完整)如图 2-1 所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
员工(工号,身份证号,姓名,性别,出生日期,电话);
商品(商品条码,商品名称,生产厂家,销售价格,商品介绍,(a));
顾客(顾客编号,姓名,身份证号,登录名,登录密码,电话);
收货地点(收货 ID,顾客编号,收货地址,收货人,联系电话);
购物车(顾客编号,商品条码,商品数量);
订单(订单 D,顾客编号,商品条码,商品数量,(b));
分拣(分拣 ID,分拣员工号,©,分拣时间);
配送(配送 DD,分拣 ID,配送员工号,收货 ID,配送时间,签收时间,签收快照);销售(销售 DD,营业员工号,顾客编号,商品条码,商品数量)。
【问题 1】(4 分)
补充图 2-1 中的“配送”联系所关联的对象及联系类型。
【问题 2】(6 分)
补充逻辑结构设计中的(a)、(b)和©三处空缺。
【问题3】(5 分)
对于实体店销售,:若要增加送货上门服务,由营业员在系统中下订单,与网购的订单进行后续的统一管理。请根据该需求,对图2-1进行补充,并修改订单关系模式。
2、解析
本题考查数据库系统中实体联系模型和关系模式设计方面的应用知识,属于比较传统的题目,考查点和往年类似。
【问题 1】
本题考查数据库的概念结构设计,两个实体集间的联系分为三类:一对一(1∶1)、一对多(1∶n)和多对多(im:n)。
根据题意,一名配送员可以配送到多个地点,一个地点也可有多名配送员配送,所以配送员与地点之间是多对多的关系。
【问题2】
本题考查数据库的逻辑结构设计,题目要求补充完整各关系模式。根据需求描述,商品关系模式除了应包括商品名称、生产厂家、销售价格和用于区别商品的唯一商品条码,还应有数量说明,另外,所有商品配送均由仓库统一出库,所以应有商品的仓库信息,即(a处应填商品数量和仓库信息:根据需求描述(4)可知,订单关系模式还缺少支付凭证编号(b)处应填入支付凭证编号;在分拣关系模式中除了包含分拣 ID、分拣员工号、分拣时间还应该有分拣的是哪种商品及该商品的订单信息,所以©处应填商品条码、订单 ID。
【问题 3】
对于实体店销售,若要增加送货上门服务,可参照顾客关系模式,增加营业员关系模式,在订单关系模式中增加“营业员 ID”属性,并设为外键,实现与营业员关系模式联系。
3、答案
【问题 1】
配送员-配送-地点,多对多联系。
【问题 2】
(a)商品数量,仓库信息;
(b)支付凭证编号;
©商品条码,订单 ID.
【问题 3】
在营业员与订单之间增加联系“送货上门”,并将联系记录于订单关系中,即在订单关系中增加属性“营业员 D”作为外键。
二、真题二
1、题目
某企业拟构建一个高效、低成本、符合企业实际发展需要的办公自动化系统。工程师小李主要承担该系统的公告管理和消息管理模块的研发工作。公告管理模块的主要功能包括添加、修改、删除和査看公告。消息管理模块的主要功能是消息群发。
小李根据前期调研和需求分析进行了概念模型设计,具体情况分述如下。
【需求分析结果】
(1)该企业设有研发部、财务部、销售部等多个部门,每个部门只有一名部门经理,有多名员工,每名员工只属于一个部门,部门信息包括:部门号、名称、部门经理和电话,其中部门号唯一确定部门关系的每一个元组。
(2)员工信息包括:员工号、姓名、岗位、电话和密码。员工号唯一确定员工关系的每一个元组:岗位主要有经理、部门经理、管理员等,不同岗位具有不同的权限。一名员工只对应一个岗位,但一个岗位可对应多名员工。
(3)消息信息包括:编号、内容、消息类型、接收人、接收时间、发送时间和发送人。其中(编号,接收人)唯一标识消息关系中的每一个元组。一条消息可以发送给多个接收人,一个接收人可以接收多条消息。
(4)公告信息包括:编号、标题、名称、内容、发布部门、发布时间。其中编号唯一确定公告关系的每一个元组。一份公告对应一个发布部门,但一个部门可以发布多份公告;一份公告可以被多名员工阅读,一名员工可以阅读多份公告。
【概念模型设计】
根据需求分析阶段收集的信息,设计的实体联系图(不完整)如图 2-2 所示。
【逻辑结构设计】
根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
部门((a),部门经理,电话);
员工(员工号,姓名,岗位号,部门号,电话,密码);
岗位(岗位号,名称,权限);
消息((b),消息类型,接收时间,发送时间,发送人);
公告(©,名称,内容,发布部门,发布时间);
阅读公告((d),阅读时间)。
【问题 1】(5 分)
根据问题描述,补充四个联系,完善图 2-2所示的实体联系图。联系名可用联系1、联系 2、联系3和联系4代替,联系的类型分为1:1、1:n和m:n(或1:1、1:* 和 * : *)。
【问题 2】(8 分)
(1)根据实体联系图,将关系模式中的空(a)~(d)补充完整,
(2)给出“消息”和“阅读公告”关系模式的主键与外键。
【问题3】(2 分)
消息和公告关系中都有“编号”属性,请问它是属于命名冲突吗?用 100字以内文字说明原因。
2、解析
【问题 1】
每个部门有多名员工,每名员工只属于一个部门,所以部门和员工之间是一对多的关系。一份公告可以被多名员工阅读,一名员工可以阅读多份公告,可见公告和员工之间是多对多的关系。一份公告对应一个发布部门,但一个部门可以发布多份公告,所以部门和公告之间是一对多的关系。一名员工只对应一个岗位,但一个岗位可对应多名员工,所以岗位和员工之间是一对多的关系。一条消息可以发送给多个接收人,一个接收人可以接收多条消息,所以员工和消息之间是多对多的关系。
【问题2】
部门信息包括:部门号、名称、部门经理和电话,部门关系模式应有部门号、名称、部门经理和电话 4 个属性,部门号是主码;消息信息包括:编号、内容、接收人、消息类型、接收时间、发送时间和发送人,消息关系模式应有编号、内容、接收人、消息类型、接收时间、发送时间和发送人7个属性,(编号,接收人)是主码:公告信息包括:编号、标题、名称、内容、发布部门、发布时间,公告关系模式应有编号、标题、名称、内容、发布部门、发布时间 6 个属性;一份公告可以被多名员工阅读,公告编号唯一确定公告关系的每一个元组,所以阅读公告关系模式应由员工号、公告编号、阅读时间组成,(员工号,公告编号)是主码。
【问题 3】
略。
3、答案
【问题1】
完善的实体联系图如图 2-3 所示
【问题 2】
(a )部门号,名称;
(b )编号,内容,接收人;
(c )编号,标题;
(d )员工号,公告编号。
消息的主键:(编号,接收人);外键:接收人,发送人。
阅读公告的主键:(员工号,公告编号);外键:员工号,公告编号。
【问题 3】
不属于命名冲突
命名冲突是在合并 ER 模型时提出的概念,合并 ER 模型时之所以产生冲突,是因为对于同样的对象,不同的局部 E-R 模型有着不同的定义,在本题中,本就是不同对象的属性,所以不存在冲突的说法。
三、真题三
1、题目
某省针对每年举行的足球联赛,拟开发一套信息管理系统,以方便管理球队、球员、主教练、主裁判、比赛等信息。
【需求分析】
(1)系统需要维护球队、球员、主教练、主裁判、比赛等信息。
球队信息主要包括:球队编号、名称、成立时间、人数、主场地址、球队主教练。
球员信息主要包括:姓名、身份证号、出生日期、身高、家庭住址。
主教练信息主要包括:姓名、身份证号、出生日期、资格证书号、级别。
主裁判信息主要包括:姓名、身份证号、出生日期、资格证书号、获取证书时间、级别。
(2)每支球队有一名主教练和若干名球员。一名主教练只能受聘于一支球队,一名球员只能效力于一支球队。每支球队都有自己的唯一主场场地,且场地不能共用。
(3)足球联赛采用主客场循环制,一周进行一轮比赛,一轮的所有比赛同时进行。
(4)一场比赛有两支球队参加,一支球队作为主队身份、另一支作为客队身份参与比赛·场比赛只能有一名主裁判,每场比赛有唯一的比赛编码,每场比赛都记录比分和日期。
【概念结构设计】
根据需求分析阶段的信息,设计的实体联系图(不完整)如图 2-4 所示。
【逻辑结构设计】
根据概念结构设计阶段完成的实体联系图,得出如下关系式(不完整):
球队(球队编号,名称,成立时间,人数,主场地址);
球员(姓名,身份证号,出生日期,身高,家庭住址,(1));
主教练(姓名,身份证号,出生日期,资格证书号,级别,(2));
主裁判(姓名,身份证号,出生日期,资格证书号,获取证书时间,级别);
比赛(比赛编码,主队编号,客队编号,主裁判身份证号,比分,日期)。
【问题 1】(6 分)
补充图 2-4 中的联系和联系的类型。
图 2-4 中的联系“比赛”应具有的属性是哪些?
【问题 2】(4 分)
根据图 2-4,将逻辑结构设计阶段生成的关系模式中的空(1)、(2)补充完整。
【问题 3】(5 分)
现在系统要增加赞助商信息,赞助商信息主要包括赞助商名称和赞助商编号。赞助商可以赞助某支球队,一支球队只能有一个赞助商,但赞助商可以赞助多支球队。赞助商也可以单独赞助某些球员,一名球员可以为多个赞助商代言。请根据该要求,对图 2-4 进行修改,画出修改后的实体间联系和联系的类型。
2、解析
本题考查数据库设计,涉及的考点有数据库概念结构设计和逻辑结构设计。
【问题 1】
联系的类型分为 1∶1、1∶n 和 m:n(或 1∶1、1∶* 和 * : * ),该题中球队与主裁判只有通过比赛联系在一起,联系类型为* : * ,根据题目需求分析可知,每场比赛有唯一的比赛编码,且每场比赛都记录比分和日期,所以图 2-4中的联系“比赛”应具有比赛编码、比分和日期三个属性。
【问题2】
根据题目需求分析可知球员信息主要包括:姓名、身份证号、出生日期、身高、家庭住址。但球员属于球队,比赛以球队为单位组织进行,所以球员关系模式中缺失球队编号,即(1)处应填球队编号;同理,也不难分析出主教练关系模式中也缺少球队编号,即(2)处填入球队编号。
【问题3】
根据题目中问题 3 描述,增加的实体赞助商与球队实体和球员实体存在赞助联系,根据问题描述很容易得到赞助商与球队之间的联系类型为1:*,与球员的联系类型为 * : * 。
3、答案
【问题 1】
完善的实体联系图如图 2-5 所示,
比赛联系应具有的属性包括:比赛编码,比分,日期。
【问题 2】
(1)球队编号;
(2)球队编号。
【问题 3】
修改后的实体联系图如图 2-6 所示