【说明】
某科研项目管理机构拟开发科研管理系统,以便管理科研项目信息。设计了科研信息数据库,其关系模式如图所示。
科研信息数据库关系模式
关系模式的主要属性、含义及约束如表所示。
属性 | 含义和约束条件 |
课题编号 | 唯一标识某个科研项目的编号 |
负责人 | 某个科研专家的编号 |
单位类别 | 标识参与课题的单位是承担单位还是合作单位 |
人员编号 | 唯一标识具有科研项目申请资格的某个科研专家的编号 |
所有单位 | 科研专家所在的单位名称 |
职工号 | 在某个单位中唯一表示该单位参与项目开发的员工编号 |
职称 | 初级、中级、高级职称 |
一个科研项目(课题)由一位科研专家作为负责人。一个科研项目可以由多个单位参与,这些单位可以作为承担单位或者合作单位来参与科研项目。一个科研项目可以有多个拨款单位,每个单位按合同经费的一定百分比拨款。科研专家是具有科研项目申请资格的科研人员。一位科研专家可以参与不同的科研项目。参与科研项目的每个单位可以有多个除科研专家外的单位员工参与项目的研发。
属性间的函数依赖关系如下。
对于“项目信息”关系模式:
课题编号,单位名称,拨款单位→课题名称,负责人,单位类别,单位排名,合同经费,拨款百分比
课题编号,单位名称→课题名称,负责人,课题类别,单位排名,合同经费
课题编号,拨款单位→课题名称,负责人,合同经费,拨款百分比
课题编号→课题名称,负责人,合同经费
课题编号→拨款单位,拨款百分比
课题编号→单位名称,单位类别,单位排名
对于“科研专家”关系模式:
人员编号→姓名,性别,出生年月,身份证号,最高学位,职称,研究方向,所在单位,单位地址
所在单位→单位地址
身份证号→人员编号
对于“项目研发人员”关系模式;
课题编号,所在单位,职工号→姓名,年龄,学历,职称,分工,排名,参加月数所在单位,职工号→姓名,年龄,学历,职称
【问题3】
对关系“项目信息”,请回答以下问题:
(1)关系“项目信息”是不是第四范式,用100字以内文字叙述理由。
(2)把“项目信息”分解为第四范式,分解后的关系名依次为:项目信息1,项目信息2,…
参考答案:
(1) “项目信息”关系模式,不满足第四范式。
因为,课题编号→课题名称,负责人,合同经费
或答:课题编号→拨款单位,拨款百分比
课题编号→单位名称,单位类别,单位排名
(2)分解后的关系模式如下:
项目信息1 (课题编号,课题名称,负责人,合同经费)
项目信息2 (课题编号,单位名称,单位类别,单位排名)
项目信息3 (课题编号,拨款单位,拨款百分比)
解析:
本题考查的是数据库理论的规范化,属于比较传统的题目,考查点也与往年类似。
问题1考查非主属性和第三范式。
根据 “科研专家”关系的函数依赖可知,不属于任何候选键的属性(非键属性)为:姓名,性别,出生年月,最高学位,职称,研究方向,所在单位,单位地址。
根据第三范式的要求:每一个非主属性既不部分依赖于码也不传递依赖于码。
而根据 “科研专家”关系的函数依赖:
人员编号→所在单位
所在单位→单位地址
所以,“科研专家”关系模式可以达到第二范式,但不满足第三范式。
问题2考查第二范式和第三范式。
根据第三范式的要求:非主属性不完全依赖于码。
而根据 “项目研发人员”关系的函数依赖可知,“项目研发人员”的码为(课题编号,所在单位,职工号),而又存在部分函数依赖:
所在单位,职工号→姓名,年龄,学历,职称。
所以,项目研发人员” 关系不满足第二范式,会造成:插入异常、删除异常和修改复杂(或修改异常)。
因为存在部分函数依赖,因此对“项目研发人员”进行分解,分解后的关系模式如下:
项目研发人员1 (所在单位,职工号,姓名,年龄,学历,职称)
项目研发人员2 (课题编号,所在单位,职工号,分工,排名,参加月数)
其中,
“项目研发人员1”关系的函数依赖为:
所在单位,职工号→姓名,年龄,学历,职称
“项目研发人员2”关系的函数依赖为:
所在单位,职工号→姓名,年龄,学历,职称
课题编号,所在单位,职工号→分工,排名,参加月数
这两个关系中的每一个非主属性既不部分依赖于码也不传递依赖于码,因此满足第三范式的要求。
问题3考查第四范式。
根据“项目信息”关系模式的函数依赖,其码为:课题编号,单位名称,拨款单位。而又存在部分函数依赖:
课题编号,单位名称→课题名称,负责人,课题类别,单位排名,合同经费
课题编号,拨款单位→课题名称,负责人,合同经费,拨款百分比
课题编号→课题名称,负责人,合同经费
所以,“项目信息”关系模式不满足第二范式。
同时,可以根据第四范式的要求:不允许有非平凡且非函数依赖的多值依赖。
而在“项目信息”关系模式存在多值依赖:
课题编号→拨款单位,拨款百分比
课题编号→举位名称,单位类别,单位排名
因此,“项目信息”关系模式不满足第二范式。
因为存在部分函数依赖和多值依赖,因此对“项目信息”进行分解,分解后的关系模式如下:
项目信息1 (课题编号,课题名称,负责人,合同经费)
项目信息2 (课题编号,单位名称,单位类别,单位排名)
项目信息3 (课题编号,拨款单位,拨款百分比)
其中,
“项目信息1”关系的函数依赖为:
课题编号→课题名称,负责人,合同经费
“项目信息2”关系的函数依赖为:
课题编号,单位名称→单位类别,单位排名
“项目信息3”关系的函数依赖为:
课题编号,拨款单位→拨款百分比
这三个关系既不存在部分函数依赖和传递依赖,也不存在多值依赖,因此满足第四范式的要求。