列表

详情


【说明】
某学校拟开发一套校友捐赠管理系统,以便对校友的捐赠资金进行管理。
【需求分析】
校友可以向学校提出捐赠申请,说明捐赠的金额、捐赠类型和使用方式。捐赠类型包括一次性捐赠和周期性捐赠。捐赠的使用方式分为两种:一种用于资助个人,即受益人为多名学生或老师,主要用于奖学金、奖教金和助学金等;另一种用于资助捐赠项目,即资助已有的捐赠项目和设立新的捐赠项目,主要用于改善教学设施、实验室建设和设备购买等。一个捐赠项目可以涉及校内的多个受益单位,每个单位在该项目中有确定的受益比例。每个单位的受益比例是指在一个捐赠项目中的每个单位所应得的金额占该捐赠项目总受益金额的比例。一个捐赠项目可以由多个捐赠来资助,一个捐赠也可以资助多个捐赠项目。系统需记录一个捐赠给所资助的每个捐赠项目的具体的捐赠金额,即每个捐赠项目能从一个捐赠中受益的金额。
初步设计了校友捐赠信息数据库,其关系模式如图1-1所示。

关系模式的主要属性、含义及约束如表1-1所示。

【问题1】(5分)
对关系“校友信息”,请回答以下问题:
(1)列举出所有候选键的属性。
(2)它可达到第几范式,用60字以内文字简要叙述理由。
【问题2】(6分)
对关系“捐赠信息”,请回答以下问题:
(1)用100字以内文字简要说明它会产生什么问题。
(2)将其分解为第三范式,分解后的关系名依次为:捐赠信息1,捐赠信息2,……
(3)列出其被修正后的各关系模式的主键。
【问题3】(4分)
对关系“项目受益情况”,请回答以下问题:
(1)它是否是第四范式,用100字以内文字叙述理由。
(2)将其分解为第四范式,分解后的关系名依次为:项目受益情况l,项目受益情2,……

参考答案:

【问题1】 (5分)
(1)“校友编号”和“身份证号”(2分)
(2)“校友信息”关系模式可以达到第二范式,不满足第三范式。(2分)
由于“校友信息”关系模式的主键是“校友编号”,但包含函数依赖:
班级一院系,入学年份
不满足第三范式的要求,即:存在非主属性对码的传递依赖。(1分)
【问题2】 (6分)
(1)“捐赠信息”关系不满足第二范式,即:非主属性不完全依赖于码。
会造成:插入异常、删除异常和修改复杂(或修改异常)。(2分)
(2)分解后的关系模式如下:(2分)
捐赠信息1(捐赠编号,捐赠校友,捐赠时间,捐赠金额,捐赠类型,使用方式)
捐赠信息2(受益人身份证号,受益人姓名,受益人所在单位,受益人类型)
捐赠信息3(捐赠编号,受益人身份证号,受益金额,使用说明)
(3)修正后的主键如下:(2分)
捐赠信息1(捐赠编号,捐赠校友,捐赠时间,捐赠金额,捐赠类型,使用方式)
捐赠信息2(受益人身份证号,受益人姓名,受益人所在单位,受益人类型)
捐赠信息3(捐赠编号,受益人身份证号,受益金额,使用说明)
【问题3】 (4分)
(1)“项目受益情况”关系模式,不满足第四范式。(2分)
答出该关系模式存在多值依赖,给1分;
若答出如下原因,给1分:
项目编号→→受益单位,受益比例
或项目编号→→捐赠编号,项目受益金额
(2)分解后的关系模式如下:(2分)
项目受益情况l(项目编号,受益单位,受益比例)
项目受益情况2(项目编号,捐赠编号,项目受益金额)

详细解析:

本题考查数据库理论的规范化,主要包括码和范式的确定及关系模式的分解。
【问题1】
本问题考查候选键及范式的判断。
在校友信息关系模式中,显然,校友编号和身份证号都能唯一标识一条记录,因此它们都应该是候选键,而其他的属性不能唯一标识一条记录。
由于该关系模式的候选键是单个属性,因此该关系模式中不存在部分依赖,所以满足第2NF,但由于“校友信息”关系模式的主键是“校友编号”,但包含函数依赖:班级→院系,入学年份,因此存在非主属性对码的传递依赖,因此不满足第三范式。因此“校友信息”关系模式可以达到第2NF。
【问题2】
本问题考查范式的判断及关系模式的分解。
在捐赠信息关系中,由于一个捐赠可以有多个受益人,因此捐赠信息关系的主键并不是捐赠编号,而应该是(捐赠编号,受益人身份证号)。因此,该关系模式中存在部分依赖,所以捐赠信息关系模式不满足第2NF,而是第1NF,因此存在插入异常、删除异常和修改异常等问题。
要将该关系模式分解成第3NF,那么首先我们就应该清楚,第3范式消除了非主属性对码的传递依赖和部分依赖。根据题目意思,在本关系模式中应该存在函数依赖:(捐赠编号→捐赠金额,捐赠校友,捐赠类型,使用方式,捐赠时间),(受益人身份证号→受益人姓名,受益人所在单位,受益人类型),这些函数依赖集应该很好确定,另外,就是受益金额和使用说明该怎么确定呢,根据题目意思是要根据捐赠和受益人情况来确定,因此还存在函数依赖(捐赠编号,受益人身份证号)→(受益金额,使用说明)。在清楚了这些依赖关系后,分解就变得容易了,如果要将该关系模式分解成第3范式,那么可以将3个函数依赖中的所有属性分别组合在一起形成一个关系模式,得到关系模式后,我们再来验证,是否有属性被遗漏,如果没有遗漏,在验证分解的结果是否都满足第三范式,如果满足,那么就得到了正确的分解结果,在一般情况下,这么做是成立的。通过验证,很显然分解后的三个关系模式都满足第3NF,它们的主键分别是捐赠编号,受益人身份证号和(捐赠编号,受益人身份证号)。
【问题3】
本问题考查第四范式的理解和应用。
在题目中我们可以看出,项目受益情况关系模式包括项目编号,受益单位,受益比例,捐赠编号,项目受益金额等属性。而题目告诉我们一个捐赠项目可以涉及校内的多个受益单位,每个单位在该项目中有确定的受益比例,那么我们就可以存在多值依赖项目编号→→受益单位,受益比例。
另外,根据题目描述“一个捐赠项目可以由多个捐赠来资助,一个捐赠也可以资助多个捐赠项目。系统需记录一个捐赠给所资助的每个捐赠项目的具体的捐赠金额,即每个捐赠项目能从一个捐赠中受益的金额”,我们可以知道存在多值依赖项目编号→→捐赠编号,项目受益金额。
而且存在的这些多值依赖都是非平凡的多值依赖,根据第四范式的要求:如果关系中存在非平凡的多值依赖X→→Y,X包含码,则该关系模式为第四范式,我们可以知道该关系模式不是第四范式,因为项目编号显然不是该关系模式的主键,它不能唯一确定一条记录。
要将该关系模式分解,也可以采用第二个问中描述的方法,即将该关系模式分解为(项目编号,受益单位,受益比例)和(项目编号,捐赠编号,项目受益金额),很显然,项目受益情况关系模式的属性都包含在分解的两个关系模式中了,分解得到的两个关系模式也都满足第四范式的要求。

上一题