分别求出下面5组关系的候选码并判断该模式是第几范式,试说明理由并对其进行优化,至少达到BCNF模式:
第一题
设一个职工关系为Employees(职工号,姓名,性别,年龄,职务)
候选码?
候选码为:职工号
该模式为第几范式?
第四范式(4NF)
理由?
每一个属性都不可再分,属于第一范式
非主属性完全函数依赖于候选码,属于第二范式
没有传递函数依赖,属于第三范式
非主属性之间没有函数依赖,属于BCNF
属性之间没有非平凡且非函数依赖的多值依赖,属于第四范式
如何优化?
不用优化
第二题
设一个学生关系为Student(学号,姓名,性别,系号,系名,系主任名),通常每个学生只属于一个系,每个系有许多学生,每个系都对应唯一的系名和系主任名。
候选码?
候选码为(学号)
该模式为第几范式?
第二范式(2NF)
理由?
有传递函数依赖,所以不是第三范式。
如何优化?
将Student(学号,姓名,性别,系号,系名,系主任名)关系模式分解为:
Student(学号,姓名,性别,系号)
Department(系号,系名,系主任名)
分解后的关系模式Student和Department,没有传递函数依赖,为第三范式。
关系模式Student非主属性之间没有函数依赖,为BCNF。
关系模式Department没有非主属性,所以也就没有非主属性之间的函数依赖,为BCNF
关系模式Student和Department,属性之间没有非平凡且非函数依赖的多值依赖,为第四范式
第三题
设一个教师任课关系为Teachers(教工号,姓名,职称,课程号,课程名,课时数,课时费),该关系给出某个学校每个教师在一个学期内任课安排的情况,假定每个教师可以讲授多门课程,每门课程可以由不同教师来讲授。
候选码?
候选码为:(教工号,课程号)
由于任一个单属性都不能函数决定关系中的所有属性,所以都不是候选码,若选取一个属性子集(教工号,课程号),由于它能够函数决定所有属性,所以它是该关系的一个候选码,并且是唯一的候选码。
该模式为第几范式?
第一范式(1NF)
理由?
存在非主属性部分函数依赖于候选码,所以不是第二范式。
如何优化?
将关系模式Teachers(教工号,姓名,职称,课程号,课程名,课时数,课时费)分解为:
Teachers(教工号,姓名,职称)
Course(课程号,课程名,课时数)
Fee(教工号,课程号,课时费)
分解后的关系模式Teachers、Course和Fee,非主属性完全函数依赖于候选码,为第二范式。
分解后的关系模式Teachers、Course和Fee,没有传递函数依赖,为第三范式。
分解后的关系模式Teachers、Course和Fee,非主属性之间没有函数依赖,为BCNF。
分解后的关系模式Teachers、Course和Fee,属性之间没有非平凡且非函数依赖的多值依赖,为第四范式。
第四题
设有关系模式study(教工名,项目名,项目经费,部门名,部门领导),如果规定每个教工可参与多个项目,分别获得一笔不等的项目经费;每个项目只属于一个部门管理;每个部门只有一个部门领导。
候选码?
候选码为(教工名,项目名)
该模式为第几范式?
第一范式(1NF)
理由?
存在非主属性部分函数依赖于候选码,所以不是第二范式。
如何优化?
将系模式study(教工名,项目名,项目经费,部门名,部门领导)分解为:
study(教工名,项目名,项目经费)
project(项目名,部门名)
department(部门名,部门领导)
分解后的关系模式study、project和department,非主属性完全函数依赖于候选码,为第二范式。
分解后的关系模式study、project和department,没有传递函数依赖,所以为第三范式。
分解后的关系模式study、project和department,非主属性之间没有函数依赖,所以为BCNF。
分解后的关系模式study、project和department,属性之间没有非平凡且非函数依赖的多值依赖,所以为第四范式。
第五题
设一个教学关系为Teaching(教师号,姓名,课程号,课程名,课程学分,专业号,专业名,教学等级分),假定每个教师有一个唯一的教师号,每门课程有一个唯一的课程号,每个专业有一个唯一的专业号,每个教师号对应一个姓名,每个课程号对应一个课程名和一个课程学分,每个专业号对应一个专业名,教学等级分是根据某个教师给某个专业上某门课程的教学评价效果而得到的分数,每个教师可以给不同的专业上不同的课程,请通过函数依赖分析,求出该关系的候选码。
候选码?
候选码为(教师号,课程号,专业号)
该模式为第几范式?
第一范式
理由?
存在非主属性部分函数依赖于候选码,所以不是第二范式。
如何优化?
将关系模式Teaching(教师号,姓名,课程号,课程名,课程学分,专业号,专业名,教学等级分)分解为:
Teaching(教师号,姓名)
Course(课程号,课程名,课程学分)
Faculty(专业号,专业名)
TeachingGrade(教师号,课程号,专业号,教学等级分)
分解后的关系模式Teaching、Course、Faculty和TeachingGrade,非主属性完全函数依赖于候选码,为第二范式。
分解后的关系模式Teaching、Course、Faculty和TeachingGrade,没有传递函数依赖,为第三范式。
分解后的关系模式Teaching、Course、Faculty和TeachingGrade,非主属性之间没有函数依赖,为BCNF。
分解后的关系模式Teaching、Course、Faculty和TeachingGrade,属性之间没有非平凡且非函数依赖的多值依赖,为第四范式。
参考资料:
关系数据库设计中范式理论的教学方法探讨 李俊,罗勇胜 顺德职业技术学院广东佛山528300 文章编号:1005-1228(2016)02-0068-04
参考资料文档下载:






