将课程关系C(C#,CNAME,CLASSH)转换为具有函数依赖约束的关系模式

将课程关系C(C#,CNAME,CLASSH)转换为具有函数依赖约束的关系模式

这里是将课程关系转换为具有函数依赖的关系模式:
关系模式:
C(C#, CNAME, CLASSH, PROF#)
PF(PROF#, PNAME)
函数依赖:
C# -> CNAME, CLASSH (课程编号决定课程名称和课程时间)
PROF# -> PNAME (教师编号决定教师姓名)
为了满足第一范式,我们需要把PROF#属性移到PF关系中:
C(C#, CNAME, CLASSH)
PF(PROF#, PNAME, C#)
此时C关系中的PROF#属性被移除,PF关系中新增了C#属性以标识授课老师。
C#作为外键引用C关系。
现在这两个关系模式满足第一范式,同时也满足更高的范式,因为:
C关系中不存在任何非主属性对主键的函数依赖,满足第二范式
PF关系的非主属性PNAME仅依赖于主键PROF#,满足第二范式
C关系和PF关系的联合不会导致任何非主属性对主键的传递函数依赖,满足第三范式
所以这两个关系模式是非冗余的,符合关系数据库的设计原则