果关系STUDENT不属于3NF,请将关系STUDENT逐步分解为

img


分解成3NF,先分解成2nf,得出是R1(S#,SNAME,SDEPT,MNAME) R2(S#,CNAME,GRADE) ,
后面答案写分解成3nf,我觉得是要分解,但是有个问题就是,答案是这样的(关系R1中存在非主属性对候选码的传递函数依赖S#→SDEPT,SDEPT→MNAME),我在想就是本来那个关系模式就有 S#→MNAME,所以是不是不算是传递函数依赖啊,

引用 皆我百晓生 小程序回复内容作答:

在分解关系STUDENT为3NF时,您需要先将其分解为2NF,然后再进一步分解为3NF。

先将关系STUDENT分解为2NF,得到R1(S#, SNAME, SDEPT, MNAME)和R2(S#, CNAME, GRADE)。

接下来,我们需要判断R1和R2是否满足3NF的要求。在这里,您提到了S# -> MNAME这一依赖关系。如果S#是R1的候选码(即S# -> SNAME, SDEPT, MNAME),那么S# -> MNAME并不算是传递函数依赖。因为传递函数依赖是指非主属性对候选码的传递的依赖关系。

然而,如果S#不是R1的候选码,而是只是一个非主属性,那么S# -> MNAME就可以看作是传递函数依赖。

在此场景下,如果S#只是一个非主属性,则应将R1进一步分解为R3(S#, SDEPT)和R4(S#, MNAME)。这样可以消除R1中的传递函数依赖。

总的来说,是否将S# -> MNAME视为传递函数依赖取决于S#的定义。如果S#是候选码,则不算传递函数依赖,如果S#只是非主属性,则算传递函数依赖。