我知道成绩是不存在部分依赖,那存在部分函数依赖的是哪个?
还有部分函数依赖应该在S1中把,他们的非主属性的元素不还是在一个表中吗,为什么把成绩分解出去就消除了部分函数依赖了呢,成绩不是不存在部分函数依赖吗,为什么分解成绩阿
还有第三题,S11表,Sno—>Sname,Sname—>Sd,那Sno—>Sd啊,就算Sno和Sname可以互推这个不成立
但是他把Sd和Sdname分解出去了,Sno—>Sd,Sd—>Sdname,Sno—>Sdame,那Sno和Sdname不是也能互推,如果这个成立那为什么上面那个不成立啊
这里看的不是很明白,感觉绕进去了
1.关系模式 S 的基本函数依赖为:
Sno -> Sname, SD, Sdname
SD -> Sdname
(Sno, Course) -> Grade
主码为 {Sno, Course}
2.原关系模式 S 属于 2NF。因为存在非主属性对主码的部分函数依赖,即 (Sno, Sname) -> SD 和 (SD, Sdname) -> Sname。需要将 S 分解成高一级范式以消除这些部分函数依赖。将 S 分解成两个关系模式 S1(Sno, Sname, SD, Sdname) 和 S2(Sno, Course, Grade),S1 和 S2 都属于 1NF,S2 的主码为 {Sno, Course},S1 的主码为 Sno。
3.将 S1 分解成两个关系模式 S11(Sno, Sname, SD) 和 S12(SD, Sdname),S11 和 S12 都属于 2NF,且不存在非主属性对主码的传递函数依赖。因此 S 分解后的关系模式为:
S11(Sno, Sname, SD)
S12(SD, Sdname)
S2(Sno, Course, Grade)
这样做的目的是消除非主属性对主码的部分函数依赖和传递函数依赖,使得每个关系模式都符合更高一级的范式要求。同时,这样的分解也可以提高数据的存储效率和查询效率。