例1:
现有如下关系模式:R(教师号,姓名,部门号,部门名称,科研项目编号,项目名称,项目经费,担任工作,完成时间)每名教师可以参加多项科研项目,每个项目可以有多名教师参加,教师参加科研工作包括担任工作及他完成所担任部分的完成时间。 (1)根据上述条件,写出关系模式R的关键码。 (2)R最高属于第几范式,为什么? (3)将R规范到3NF。
由关系模式可以得出(肉眼凭经验看出):
候选码:(教师号,部门号,科研项目编号)
(教师号)→(姓名)
(部门号)→(部门名称)
(科研项目编号)→项目名称
(科研项目编号)→项目经费
由题目描述可以得出:
(教师号,科研项目编号)→(担任工作)
(教师号,科研项目编号)→(完成时间)
(1)肉眼看出候选码就是(教师号,部门号,科研项目编号)
(2)第一范式,存在姓名依赖于教师号,而担任工作依赖于教师号和科研项目编号,这是个非主属性对码的部分函数依赖
(3)
教师(教师号,姓名)
部门(部门号,部门名称)
科研项目(科研项目编号,项目名称,项目经费)
教师科研情况(教师号,科研项目编号,担任工作,完成时间)
例2:
现有关系模式如下:
借阅(图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅日期,归还日期)
(1)读者编号是候选码吗请说明理由。
(2)写出该关系模式的主码。
(3)该关系模式中是否存在部分函数依赖如果存在,请写出两个。
(4)该关系模式最高满足第几范式并说明理由。
(5)如何分解该关系模式,使得分解后的关系模式均满足第三范式(3NF)
由关系模式可以得出:
候选码:(图书编号,读者编号,借阅日期)
(图书编号)→(书名)
(图书编号)→(作者名)
(图书编号)→(出版社)
(读者编号)→(读者姓名)
归还日期不能依赖于借阅日期
(1)不是,读者编号只能决定书名、作者名、出版社,不能决定所有的属性,因此该关系模式不能完全依赖于读者编号。
(2)(图书编号,读者编号,借阅日期)
(3)偶上边写了5个XDDD
(4)第一范式,因为存在非主属性对码的部分函数依赖,比如(图书编号,读者编号,借阅日期)→(书名),而(图书编号)→(书名)。
(5)
图书(图书编号书名,作者名,出版社)
读者(读者编号,读者姓名)
借阅记录(图书编号,读者编号,借阅日期,归还日期)
为什么没有(借阅日期)→(归还日期)呢?
因为一个借阅日期告诉我们,我们只知道借了某个东西以后需要归还,但没有具体时间,想什么时候还是未知的,因此不能决定。
为什么会有(图书编号,读者编号,借阅日期)→(归还日期)呢?
这就得怪题目不严谨了!明明借了一本书只要在规定时间内的某一天还就可以了,这也是不能预测的某一天,除非已经有了规定:该书必须在哪天还,或者说这里的归还日期指的是最后的归还日期,也就是deadline,截止日期,哈哈哈那就是咋们中华文化广大精神了,咋们在图书馆借了某本书后确实是有个成文的规定,在规定时间还,这样想的话就比较合理,但是题目中真的没有任何描述,所以真的很不严谨。
例3:
现有如下关系模式,用于记录学生参加竞赛信息:
参加竞赛(竞赛编号,竞赛名称,竞赛组织者,竞赛开始日期,学号,学生姓名,获奖等级)
若有以下规定,
(1)所有竞赛的编号是唯一的;
(2)一名学生可以在不同日期参加不同的竞赛,但在同一日期只能参加一个竞赛;一个竞赛可有多名学生参加;
(3)每名学生参加一次竞赛,会获得一个不同等级的奖项。
请完成如下问题:
1)请写出该关系模式的码。(5分)
2)该关系模式满足第几范式?请说明理由。 (5分)
3)请给出关系模式的一个有效分解,使得分解后的关系模式均满足第三范式? (5分)
由关系模式可以得出:
候选码:(竞赛编号,学号)
(竞赛编号)→(竞赛名称)
(竞赛编号)→(竞赛组织者)
(竞赛编号)→(竞赛开始日期)
(学号)→(学生姓名)
获奖等级没法肉眼判断。。
由题目规定可以得出:
(学号,竞赛开始日期)→(竞赛编号)
(学号)→(竞赛编号)
(学号,竞赛编号)→(获奖等级)
1)(竞赛编号,学号)
2)第一范式,因为该关系模式中存在非主属性对码的部分函数依赖,比如(学号,竞赛编号)→(获奖等级)、(竞赛编号)→(竞赛组织者)
竞赛(竞赛编号,竞赛名称,竞赛组织者,竞赛开始日期)
学生(学号,学生姓名)
参赛信息(学号,竞赛编号,获奖等级)