阅读下列说明,回答问题1至问题3,将解答填入对应栏内。
【说明】
为防控新冠疫情,一些公共设施需要定期消毒,管理部门为高效完成工作并记录必要的工作信息,设计了相应的数据库,其中有一个表用来记录公共汽车的消毒情况,表的结构如下:
消毒记录(日期,车牌号,行驶路线,消毒人员工号,消毒人员姓名)
其中车牌号和消毒人员工号唯一,同一辆车保持固定的行驶路线。假设同一人员每天可以负责多辆车的消毒工作。
【问题1】(6分)
给出消毒记录表中成立且左侧只有一个属性的所有函数依赖关系。题中设计的消毒记录表是否满足2NF?请用100字以内的文字说明原因。
【问题2】 (6分)
如果要将消毒记录表规范化为满足3NF,请用100字以内的文字简要说明解决方案,并给出各个新表的主码和外码。
【问题3】 (3分)
如果每辆车每日有多次消毒,需要记录每次消毒的消毒时间,在问题2设计结果的基础上,如何在不破坏3NF且不增加冗余的前提下做到?请简单说明方案。
【问题1】
左侧只有一个属性的函数依赖关系有2个,分别为:
车牌号->行驶路线
消毒人员工号->消毒人员姓名
不满足2NF,根据题干可以得到消毒记录表的候选键为(日期,车牌号,消毒人员工号),由于存在车牌号->行驶路线,属于部分依赖。根据2NF的要求,存在非主属性对主属性的部分依赖,所以不满足2NF。
【问题2】
由于消毒记录表不满足2NF,需要将消毒记录表进行拆分成多个表,拆分的表如下:
消毒记录1(车牌号,行驶路线)
消毒记录2(消毒人员工号,消毒人员姓名)
消毒记录3(车牌号,日期,消毒人员工号)
由于拆分后的三个表都不存在非主属性对主属性的部分和传递函数依赖,所以都满足3NF。
【问题3】
由于每辆车每日有多次消毒记录时间,可以在问题2的基础上增加表:
消毒记录4(车牌号,日期,消毒时间)
【问题1】
左侧只有一个属性的函数依赖关系有2个,分别为:
车牌号->行驶路线
消毒人员工号->消毒人员姓名
不满足2NF,根据题干可以得到消毒记录表的候选键为(日期,车牌号,消毒人员工号),由于存在车牌号->行驶路线,属于部分依赖。根据2NF的要求,存在非主属性对主属性的部分依赖,所以不满足2NF。
【问题2】
由于消毒记录表不满足2NF,需要将消毒记录表进行拆分成多个表,拆分的表如下:
消毒记录1(车牌号,行驶路线)
消毒记录2(消毒人员工号,消毒人员姓名)
消毒记录3(车牌号,日期,消毒人员工号)
由于拆分后的三个表都不存在非主属性对主属性的部分和传递函数依赖,所以都满足3NF。
【问题3】
由于每辆车每日有多次消毒记录时间,可以在问题2的基础上增加表:
消毒记录4(车牌号,日期,消毒时间)