列表

详情


阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某企业拟构建一个高效、低成本、符合企业实际发展需要的办公自动化系统。工程师小李主要承担该系统的公告管理和消息管理模块的研发工作。公告管理模块的主要功能包括添加、修改、删除和查看公告。消息管理模块的主要功能是消息群发。
小李根据前期调研和需求分析进行了概念模型设计,具体情况分述如下。
【需求分析结果】
(1)该企业设有研发部、财务部、销售部等多个部门,每个部门只有一名部门经理,有多名员工,每名员工只属于一个部门。部门信息包括:部门号、名称、部门经理和电话,其中部门号唯一确定部门关系的每一个元组。
(2)员工信息包括:员工号、姓名、岗位、电话和密码。员工号唯一确定员工关系的每一个元组,岗位主要有经理、部门经理、管理员等,不同岗位具有不同的权限。一名员工只对应一个岗位,但一个岗位可对应多名员工。
(3)消息信息包括:编号、内容、消息类型、接收人、接收时间、发送时间和发送人。其中(编号,接收人)唯一标识消息关系中的每一个元组。一条消息可以发送给多个接收入,一个接收人可以接收多条消息。
(4)公告信息包括:编号、标题、名称、内容、发布部门、发布时间。其中编号唯一确定公告关系的每一个元组。一份公告对应一个发布部门,但一个部门可以发布多份公告,一份公告可以被多名员工阅读,一名员工可以阅读多份公告。
【概念模型设计】 根据需求分析阶段收集的信息,设计的实体联系图(不完整)如图1-1所示。


1-1实体联系图

【逻辑结构设计】根据概念模型设计阶段完成的实体联系图,得出如下关系模式(不完整):
部门((a),部门经理,电话)
员工(员工号,姓名,岗位号,部门号,电话,密码)
岗位(岗位号,名称,权限)
消息((b),消息类型,接收时间,发送时间,发送人)
公告((c),名称,内容,发布部门,发布时间)
阅读公告((d) ,阅读时间)

【问题1】(5分)
根据问题描述,补充4个联系,完善图2-1所示的实体联系图。联系名可用联系1、联系2、联系3 和联系4代替,联系的类型分为1 :1、1:n和m:n(或 1:1、1:*和* :*)。
【问题2】(8 分)
(1)根据实体联系图,将关系模式中的空(a)~(d)补充完整。
(2)给出“消息”和“阅读公告”关系模式的主键与外键。
【问题3】(2 分)
消息和公告关系中都有“编号”属性,请问它是属于命名冲突吗?用100字以内文字说明原因。

参考答案:

【问题1】
联系名称可不做要求,但不能出现重名。


【问题2】
(1)
(a)部门号,名称
(b)编号,内容,接收人
(c)编号,标题
(d)公告编号,员工号(注:编号,员工号也正确)
(2)消息关系模式的主键:编号,接收人
外键:接收人、发送人
阅读公告关系模式的主键:公告编号,员工号
外键:公告编号,员工号
【问题3】
不属于命名冲突。因为这两个属性分别属于两个不同的关系模式,可以通过“关系名.属性名”区别,即可以用“消息.编号”和“公告.编号”来区别。

详细解析:

本题考查数据库概念结构设计及概念结构向逻辑结构转换的过程。
此类题目要求考生认真阅读题目对现实问题的描述,经过分类、聚集、概括等方法,从中确定实体及其联系。题目已经给出了4个实体,需要根据需求描述,给出实体间的联系。
【问题1】
根据题意“一个员工只对应一个岗位,但一个岗位可对应多名员工”,可以得出员工与岗位之间的对应联系类型为n:1。
由“一条消息可以发送给多个接收人,一个接收人可以接收多条消息”,可以得出员工与消息之间的收发联系类型为1 :n:m。
由“一份公告对应一个发布部门,但一个部门可以发布多份公告”,可以得出部门与公告间的所属联系类型为1 :n。
由“一份公告可以有多个员工阅读,一个员工可以阅读多份公告”,可以得出公告与员工之间的阅读联系类型为n:m。
完整的E-R图如下:


【问题2 】
(1)根据题意,完整的关系模式如下:
部门(部门号,名称,部门经理,电话)
员工(员工号,姓名,岗位号,部门号,电话,密码)
岗位(岗位号,名称,权限)
消息(编号,内容,接收人,消息类型,接收时间,发送时间,发送人)
公告(编号,标题,名称,内容,发布部门,发布时间)
阅读公告(公告编号,员工号,阅读时间)
(2)消息关系模式和阅读公告关系模式的主键和外键的分析如下:
根据题意,消息关系模式的主键为(编号,接收人)。由于接收人、发送人都应参考员工关系的员工号,因此接收人、发送人为消息关系的外键。根据题意,阅读公告关系模式的主键为(公告编号,员工号)。外键为公告编号,员工号。因为公告编号应参考公告关系的编号,而编号是公告关系的主键,所以公告编号是阅读公告关系的外键;又因为员工号应参考员工关系的员工号,而员工号是员工关系的主键,所以公告关系的员工号为外键。
【问题3】
不属于命名冲突。因为这两个属性分别属于两个不同的关系模式,可以通过“关系名.属性名”区别,即可以用“消息.编号”和“公告.编号”来区别。

上一题