设关系模式R(S#,C#,GRADE,TNAME,TADDR),其属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名、教师地址等意义。如果规定,每个学生每学一门课只有一个成绩;每门课只有一个教师任教;每个教师只有一个地址(这里不允许教师同名同姓)。(1)试写出关系模式R基本的函数依赖集和候选键。(2)试把R分解成2NF模式集,并说明理由。
设关系模式R(S#,C#,GRADE,TNAME,TADDR),其属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名、教师地址等意义。如果规定,每个学生每学一门课只有一个成绩;每门课只有一个教师任教;每个教师只有一个地址(这里不允许教师同名同姓)。(1)试写出关系模式R基本的函数依赖集和候选键。(2)试把R分解成2NF模式集,并说明理由。
【正确答案】:(1)基本的函数依赖集为:F={(S#,C#)→GRADE,(一个学生修一门课程只有一个成绩)C#→TNAME,(一门课程只有一个教师任教)TNAME→TADDR)(一个教师只有一个地址)因为在上述的函数依赖中存在C#→7TNAME,TNAME→TADDR,由传递性可推出C#→TADDR;由合并性可以推出:(S#,C#)→(GRADE,TNAME,TADDR)所以(S#,C#)是唯一的候选键,也是主键。主属性是S#和C#,非主属性是GRADE、TNAME和FADDR。(2)由于存在C#→TNAME和C#→TADDR,即存在非主属性TNAME和TADDR对主键的部分依赖,所以该关系R不属于2NF,下面要想办法消除部分函数依赖,投影原关系为两个关系:R1(S#,C#,GRADE)R2(C#,TNAME,TADDR)R,函数依赖为(S#,C#)→GRADE,主键为(S#,C#),不存在部分依赖,R1是2NF。R2函数依赖是F={C#→TNAME,C#→TADDR,TNAME→TADDR},候选键为C#和TFNAME确立C#为主键,C#→TADDR是完全函数依赖,不存在部分依赖,所以R2是2NF。
Top