数据库的关系代数问题

设有学生数据库关系模式如下(其中中文为解释,英文为表名字段名):
学生S(学号sno, 姓名sname, 性别gender, 身高height)
课程C(课程号cno, 学分credit, 开课系别dept, 开课季节semester)
成绩SC(学号sno, 课程号cno, 成绩grade)
请用关系代数表示下列查询:
1.查询身高超过1.8米的男生的学号和姓名
2.查询计算机系秋季所开每一门课程的课程号和学分
3.查询所有至少选修一门计算机系所开课程的女生的姓名
4.查询所有课程的成绩都在90分以上(含90分)的学生的姓名、学号
5.查询选修了所有学分数超过3的课程的学生姓名
求大神们帮忙解答一下啊。。。

[例]设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)

下面用关系代数表达式表达每个查询语句。

(1) 检索学习课程号为C2的学生学号与成绩。
πSNO,GRADE(σ CNO='C2'(SC))

(2) 检索学习课程号为C2的学生学号与姓名
πSNO,SNAME(σ CNO='C2'(SSC))
由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。

此查询亦可等价地写成:
πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC)))
这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。

(3)检索选修课程名为MATHS的学生学号与姓名。
πSNO,SANME(σ CNAME='MATHS'(SSCC))

(4)检索选修课程号为C2或C4的学生学号。
πSNO(σ CNO='C2'∨CNO='C4'(SC))

(5) 检索至少选修课程号为C2或C4的学生学号。
π1(σ1=4∧2='C2'∧5='C4'(SC×SC))
这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果关系中的属性序号。
希望能解决您的问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-04
1,πsno,sname(σ height>‘1.8米’ (S))

2,πcon,credit(σ dept='计算机系' ∧semester=‘秋季’ (C))
3,πsname(σ dept=‘计算机系’∧gender=‘女生’ (C(连接符怎么打?我用join代替)join SC join S))
4,πsno,sname(σ grade>=‘90’ (S join SC))
5πsname(σ credit>‘3’(C join S)

家庭作业吗? 根据书本比葫芦画瓢都能做出来本回答被提问者采纳
相似回答