问答题
.阅读下列说明,回答问题1至问题3。
[说明]
某社会救助基金会每年都会举办多项社会公益救助活动,需要建立一个信息系统,对之进行有效管理。
[需求描述]
1.任何一个实名认证的个人或者公益机构都可以发起一项公益救助活动,基金会需要记录发起者的信息。如果发起者是个人,需要记录姓名、身份证号和一部电话号码;如果发起者是公益机构,需要记录机构名称、统一社会信用代码、一部电话号码、唯一的法人代表身份证号和法人代表姓名。一个自然人可以是多个机构的法人代表。
2.公益救助活动需要提供翔实的资料供基金会审核,包括被捐助人姓名、身份证号、一部电话号码、家庭住址。
3.基金会审核并确认项目后,发起公益救助的个人或机构可以公开宣传并募捐,募捐得到的款项进入基金会账户。
4.发起公益救助的个人或机构开展救助行动,基金会根据被捐助人所提供的医疗发票或其他信息,直接将所筹款项支付给被捐助者。
5.救助发起者针对任一被捐助者的公益活动只能开展一次。
[逻辑结构设计]
根据上述需求,设计出如下关系模式:
公益活动(发起者编号,被捐助者身份证号,发起者电话号码,发起时间,结束时间,募捐金额),其
中对于个人发起者,发起者编号为身份证号;对于机构发起者,发起者编号为统一社会信用代码
个人发起者(姓名,身份证号,电话号码)
机构发起者(机构名称,统一社会信用代码,电话号码,法人代表身份证号,法人代表姓名)
被捐助者(姓名,身份证号,电话号码,家庭住址)
问答题
1. [问题1]
对关系“机构发起者”,请回答以下问题:
(1)列举出所有候选键。
(2)它是否为3NF,用100字以内文字简要叙述理由。
(3)将其分解为BC范式,分解后的关系名依次为:机构发起者1,机构发起者2,……并用下画线标示分解后的各关系模式的主键。
【正确答案】对关系“机构发起者”:
(1)候选键:统一社会信用代码
(2)不是3NF。存在非主属性“法人代表姓名”对候选键“统一社会信用代码”的传递依赖:统一社会信用代码→法人代表身份证号,法人代表身份证号→法人代表姓名。所以统一社会信用代码→法人代表姓名,为传递依赖。
(3)分解后的关系模式:
机构发起者1(机构名称,统一社会信用代码,电话号码,法人代表身份证号)
机构发起者2(法人代表身份证号,法人代表姓名)
【答案解析】
问答题
2. [问题2]
对关系“公益活动”,请回答以下问题:
(1)列举出所有候选键。
(2)它是否为2NF,用100字以内文字简要叙述理由。
(3)将其分解为BC范式,分解后的关系名依次为:公益活动1,公益活动2,……并用下画线标示分解后的各关系模式的主键。
【正确答案】对关系“公益活动”:
(1)候选键:(发起者编号,被捐助者身份证号)
(2)不是2NF。候选键(发起者编号,被捐助者身份证号)部分决定非主属性“发起者电话号码”。
(3)分解后的关系模式:
公益活动1(发起者编号,被捐助者身份证号,发起时间,结束时间,募捐金额)
“发起者电话号码”己在个人发起者和机构发起者中出现,无需再用关系模式处理。
【答案解析】
问答题
3. [问题3]
基金会根据被捐助人提供的医疗发票或其他信息,将所筹款项支付给被捐助者。可能存在分期多次支付的情况,为了统计所筹款项支付情况(详细金额和时间),试增加“支付记录”关系模式,用100字以内文字简要叙述解决方案。
【正确答案】因为需要针对每个公益活动,统计每次支付的金额和时间,所以在增加的“支付记录”关系模式中需要体现发起者编号、被捐助者身份证号、金额和时间,即增加的关系模式为:
支付记录(发起者编号,被捐助者身份证号,金额,时间)
【答案解析】 本题考查数据库理论的规范化,属于比较传统的题目。
[问题1]
本问题考查候选键和第三范式。
“机构发起者”关系的候选键为:统一社会信用代码。
分析“机构发起者”关系的函数依赖可知:存在非主属性“法人代表姓名”对候选键“统一社会信用代码”的传递依赖:统一社会信用代码→法人代表身份证号,法人代表身份证号→法人代表姓名。所以统一社会信用代码→法人代表姓名,为传递依赖。所以,“机构发起者”关系模式不满足第三范式。
分解后的关系模式为:
机构发起者1(机构名称,统一社会信用代码,电话号码,法人代表身份汪号)
机构发起者2(法人代表省份证号,法人代表姓名)
[问题2]
本问题考查候选键和第二范式。
“公益活动”关系的候选键为:(发起者编号,被捐助者身份证号)。
候选键(发起者编号,被捐助者身份证号)部分决定非主属性“发起者电话号码”。所以,“公益活动”关系模式不满足第二范式。
分解后的关系模式为:
公益活动1(发起者编号,被捐助者省份证号,发起时间,结束时间,募捐金额)
因为“发起者电话号码”已在个人发起者和机构发起者中出现,所以无需再用关系模式处理。
[问题3]
本问题考查新关系的增加。
因为需要针对每个公益活动,统计每次支付的金额和时间,所以在增加的“支付记录”关系模式中需要体现发起者编号、被捐助者身份证号、金额和时间,从而确定新增加的关系模式为:
支付记录(发起者编号,被捐助者身份证号,金额,时间)