国开《数据库基础与应用》第三章 3-2-4:给关系添加候选码
3-2-4:给关系添加候选码
根据最小函数依赖集求出关系中的侯选码:
候选码定义:设一个关系为R(U),X为U的一个子集,若X能够函数决定U中的每个属性,并且X的任何真子集都不能函数决定U中的每个属性,则称X为关系R的一个候选码。
等价定义:若关系中的一个属性或属性组能够函数决定整个元组,并且它的任何真子集都不能函数决定整个元组,则它被称为该关系的一个候选码。
例如:在上面介绍过的职工关系中,它的最小函数依赖集FD1为:{职工号→姓名,职工号→性别,职工号→年龄,职工号→职务},职工号为该关系的一个候选码;若在该关系中还带有身份证号属性,则身份证号属性的每一个值也能够唯一标识一个元组,身份证号也是一个候选码。
又如:在上面介绍过的教师任课关系中,它的最小函数依赖集为:
{教工号→姓名,教工号→职称,课程号→课程名,课程号→课时数,(职称,课程号)→课时费}
求侯选码分析:一个属性子集(教工号,课程号),看它能否成为此关系的候选码。由于它能够函数决定所有属性,所以它是该关系的一个候选码,并且是唯一的候选码。
注意:(教工号,课程号)到教工号、姓名、职称、课程号、课程名、课时数等是部分函数决定,而到课时费是传递函数决定。即“(教工号,课程号)→(职称,课程号)→课时费”是伪传递性。
再如:在上面介绍的学生关系中,它的最小函数依赖集为:{学号→姓名,学号→性别,学号→系号,系号→系名,系号→系主任名},学号是学生关系的一个候选码。