题目
设学生管理系统中有以下三个关系:S (sno, sname, ssex, sage, sdept)C (cno, cname, cpno, ccredit)SC (sno, cno, grade)其中, S 为学生表, 各属性含义如下:Sno-学号, sname-姓名, ssex-性别, sage-年龄, sdept-专业C 为课程表, 各属性含义如下:Cno-课程号, cname-课程名, cpno-先修课程号, ccredit-学分SC 为选修表, 各属性含义如下:Sno-学号, Cno-课程号, grade-成绩使用关系代数[1]语言完成以下查询:查询选修课成绩大于 90 分的男生的学号和姓名
设学生管理系统中有以下三个关系: S (sno, sname, ssex, sage, sdept) C (cno, cname, cpno, ccredit) SC (sno, cno, grade) 其中, S 为学生表, 各属性含义如下: Sno-学号, sname-姓名, ssex-性别, sage-年龄, sdept-专业 C 为课程表, 各属性含义如下: Cno-课程号, cname-课程名, cpno-先修课程号, ccredit-学分 SC 为选修表, 各属性含义如下: Sno-学号, Cno-课程号, grade-成绩 使用关系代数[1]语言完成以下查询: 查询选修课成绩大于 90 分的男生的学号和姓名
题目解答
答案
根据题目要求,需查询成绩大于90分的男学生的学号和姓名。
1. 筛选 SC 表中 grade > 90 的记录:$\sigma_{grade > 90}(SC)$。
2. 筛选 S 表中 ssex = '男' 的记录:$\sigma_{ssex = '男'}(S)$。
3. 将两表按 sno 自然连接[2]:$\sigma_{grade > 90}(SC) \bowtie \sigma_{ssex = '男'}(S)$。
4. 投影出 sno 和 sname:$\pi_{sno, sname}(\cdot)$。
最终表达式为:
\[
\pi_{sno, sname}(\sigma_{grade > 90}(SC) \bowtie \sigma_{ssex = '男'}(S))
\]
解析
本题考查关系代数的应用,解题思路是通过对不同关系表进行筛选和连接操作,最终投影出所需的属性。
- 首先,我们要从选修表
SC中筛选出成绩大于 90 分的记录。在关系代数中,使用选择操作符 $\sigma$ 来实现筛选,条件为grade > 90,即 $\sigma_{grade \gt 90}(SC)$。 - 接着,从学生表
S中筛选出性别为男的记录。同样使用选择操作符 $\sigma$,条件为ssex = '男',即 $\sigma_{ssex = '男'}(S)$。 - 然后,将筛选后的
SC表和S表按照学号sno进行自然连接。自然连接操作符为 $\bowtie$,连接后的结果为 $\sigma_{grade \gt 90}(SC) \bowtie \sigma_{ssex = '男'}(S)$。 - 最后,从连接后的结果中投影出学号
sno和姓名sname。投影操作符为 $\pi$,即 $\pi_{sno, sname}(\sigma_{grade \gt 90}(SC) \bowtie \sigma_{ssex = '男'}(S))$。