国开《数据库基础与应用》第三章 3-2-5:侯选码应用举例
3-2-5:侯选码应用举例
求关系的侯选码应用举例:
例1:设一个教学关系为(教师号,姓名,课程号,课程名,课程学分,专业号,专业名,教学等级分),假定每个教师有一个唯一的教师号,每门课程有一个唯一的课程号,每个专业有一个唯一的专业号,每个教师号对应一个姓名,每个课程号对应一个课程名和一个课程学分,每个专业号对应一个专业名,教学等级分是根据某个教师给某个专业上某门课程的教学评价效果而得到的分数,每个教师可以给不同的专业上不同的课程,请通过函数依赖分析,求出该关系的候选码。
分析:根据题意,即所给教学关系模式的语义,可知存在着以下最小函数依赖集:
FD={教师号→姓名,课程号→课程名,课程号→课程学分,专业号→专业名,(教师号,课程号,专业号)→教学等级分}
由FD可以看出,只有教师号、课程号和专业号这3个属性没有决定因素,所以(教师号,课程号,专业号)的组合属性是该关系的一个候选码,它是该关系的惟一一个候选码。
在这个教学关系中,若规定每个教师的姓名也是唯一的,则教师号和姓名是一一对应的,即相互依赖的,将得到该关系的两个候选码(教师号,课程号,专业号)和(姓名,课程号,专业号)。
例2:设一个关系为R(A,B,C,D,E,F),它的最小函数依赖集FD为{A→B,A→C,(C,D)→E},请求出该关系的候选码。
分析:由该关系的FD可知,B、C、E属性都对应有决定因素,A、D、F属性都没有决定因素,所以A、D、F属性应该包含在候选码中。
设(A,D,F)是一个候选码,再检查它是否能够函数决定其他所有属性。由A→B可得(A,D,F)→B。由A→C可得(A,D,F)→C。因A→C,(C,D)→E,根据函数依赖的增广性规则可得(A,D)→(C,D),再根据传递性规则可得(A,D)→E。或者根据函数依赖的伪传递性规则,可由A→C和(C,D)→E,直接得到(A,D)→E。有了(A,D)→E可得(A,D,F)→E,此也为部分函数依赖。
注意:在分析一个关系的函数依赖时,要完全根据关系模式的语义进行,绝不能根据一个关系的当前值来判定。