问题描述:
10、定义学生选修课程的关系模式如下:SC(S#,S,C#,C,G,C)其属性分别为学号、姓名、课程号、课程名、成绩、学分)
则对主属性部分依赖的是()
A.(S#,C#)→G
B.S#→Sn
C.(S#,C#)→S#
D.(S#,C#)→C#
问题解答:
对于定义学生选修课程的关系模式 SC(S#, Sn, C#, C, G, Cr),其属性分别为学号(S#)、姓名(Sn)、课程号(C#)、课程名(C)、成绩(G)、学分(Cr)。我们要确定哪些属性对主属性部分依赖。
首先,我们假设主键是 (S#, C#),因为一个学生在一个课程上的成绩是唯一确定的。
分析选项:
A. (S#, C#) → G
- 这是一个完整依赖,因为成绩 G 完全依赖于学号和课程号的组合。
B. S# → Sn
- 这是一个部分依赖,因为 Sn(学生姓名)只依赖于 S#(学号),不依赖于课程号 C#。
C. (S#, C#) → S#
- 这是一个平凡依赖,因为任何属性集合都可以推导出其子集,因此这是一个平凡的函数依赖,不是部分依赖。
D. (S#, C#) → C#
- 这也是一个平凡依赖,同样道理,任何属性集合都可以推导出其子集,因此这是一个平凡的函数依赖,不是部分依赖。
正确答案:
B. S# → Sn
为什么其他选项是错的:
-
选项 A (S#, C#) → G: 这是一个完全依赖,而不是部分依赖,因为 G 完全依赖于 (S#, C#) 这对组合键。
-
选项 C (S#, C#) → S# 和选项 D (S#, C#) → C#: 这两个是平凡依赖,任何属性集合都可以推导出其自身的部分,因此这不属于部分依赖的范畴。
结论:
B. S# → Sn 是正确的,因为它表示学生姓名 Sn 依赖于学号 S#,这是一个部分依赖。
因此,正确答案是 B. S# → Sn。