关系代数习题及答案

关系代数习题及答案关系代数运算是数据库的基础,首先提供一个神仙网站:关系代数,这个网站同时提供关系代数查询和SQL语句查询,可以检查关系代数的正确性,以及把SQL语句转为关系代数运算式。网站还有使用教程,简直不能太贴心!但是他不支持的部分SQL语句,这些都在help中有详细说明。help中说该网站支持Count等集合查询,但我至今没搞懂使用方法。。。我知道后会更新,如果有小伙伴知道欢迎留言!进入正题首先…

关系代数运算是数据库的基础,首先提供一个神仙网站:关系代数,这个网站同时提供关系代数查询和SQL语句查询,可以检查关系代数的正确性,以及把SQL语句转为关系代数运算式。网站还有使用教程,简直不能太贴心!
在这里插入图片描述
但是他不支持的部分SQL语句,这些都在help中有详细说明。
在这里插入图片描述

help中说该网站支持Count等集合查询,但我至今没搞懂使用方法。。。我知道后会更新,如果有小伙伴知道欢迎留言!
在这里插入图片描述

进入正题

首先贴四个表,可粘贴复制进上面提供的那个网站直接使用:

1. Student表:

Student = {
   Sno, Sname, Ssex, Sbirthday, Class
   
   '108', '曾华', '男', 1977-09-01, '95033'
   '105', '匡明', '男', 1975-10-02 '95031'
   '107', '王丽', '女', 1976-01-23, '95033'
   '101', '李军', '男', 1976-02-20, '95033'
   '109', '王芳', '女', 1975-02-10, '95031'
   '103', '陆君', '男', 1974-06-03, '95031'
}

2. Course表:

Course = {
   Cno, Cname, Tno
   
   '3-105', '计算机导论', '825'
   '3-245', '操作系统', '804'
   '6-166', '数字电路', '856'
   '9-888', '高等数学', '831'
}

3. Score表:

Score = {
   Sno, Cno, Degree
   
   '103', '3-245', 86
   '105', '3-245', 75
   '109', '3-245', 68
   '103', '3-105', 92
   '105', '3-105', 88
   '109', '3-105', 76
   '101', '3-105', 64
   '107', '3-105', 91
   '102', '3-105', 78
   '101', '6-166', 85
   '107', '6-166', 79
   '108', '6-166', 81
}

4. Teacher表:

Teacher = {
   Tno, Tname, Tsex, Tbirthday, Prof, Depar
   
   '804', '李诚', '男', 1958-12-02, '副教授', '计算机系'
   '856', '张旭', '男', 1969-03-12, '讲师', '电子工程系'
   '825', '王萍', '女', 1972-05-05, '助教', '计算机系'
   '831', '刘冰', '女', 1977-08-14, '助教', '电子工程系'
}

题目及答案

  1. 查询Student表中的所有记录的Sname、Ssex和Class列。
    π Sname, Ssex, Class (Student)
  2. 查询教师所有的单位即不重复的Depart列。
    π Depart (Teacher)
  3. 查询Student表的所有记录。
    π (Student)
  4. 查询Score表中成绩在60到80之间的所有记录。
    σ Degree >= 60 ∧ Degree <= 80 (Score)
  5. 查询Score表中成绩为85,86或88的记录。
    σ Degree = 85 ∨ Degree = 86 ∨ Degree = 88 (Score)
  6. 查询Student表中“95031”班或性别为“女”的同学记录。
    σ Class = ‘95031’ ∨ Ssex = ‘女’ (Student)
  7. 以Class降序查询Student表的所有记录。
    τ Class desc Student
  8. 以Cno升序、Degree降序查询Score表的所有记录。
    τ Cno asc, Degree desc Score
  9. 查询Score表中的最高分的学生学号和课程号。
    (π Sno, Cno (Score) – π Score.Sno, Score.Cno (Score ⨝ Score.Degree > S1.Degree (ρ S1 Score)))

    (π Sno, Cno (Score) – π Score.Sno, Score.Cno (Score ⨝ Score.Degree < S1.Degree (ρ S1 Score)))
  10. 查询分数大于70,小于90的Sno列。
    π Sno (σ Degree > 70 ∧ Degree < 90 (Score))
  11. 查询所有学生的Sname、Cno和Degree列。
    π Sname, Cno, Degree (Student ⨝ Student.Sno = Score.Sno Score)
  12. 查询所有学生的Sno、Cname和Degree列。
    π Sno, Cname, Degree (Score ⨝ Course.Cno = Score.Cno Course)
  13. 查询所有学生的Sname、Cname和Degree列
    π Sname, Cname, Degree ((Student ⨝ Student.Sno = Score.Sno Score) ⨝ Score.Cno = Course.Cno Course)
  14. 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
    π ST.Sno, ST.Sname (σ SC1.Sno = ST.Sno ∧ SC1.Cno = ‘3-105’ ∧ SC2.Cno = ‘3-105’ ∧ SC2.Sno = ‘109’ ∧ SC1.Degree > SC2.Degree (ρ ST Student ⨯ ρ SC1 Score ⨯ ρ SC2 Score))
  15. 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
    π s1.Sno, s1.Sname, s1.Sbirthday σ year(s1.Sbirthday) = year(s2.Sbirthday) and s2.Sno = ‘107’ (ρ s1 Student ⨯ ρ s2 Student)
  16. 查询“张旭“教师任课的学生成绩。
    π ST.Sno, ST.Sname, SC.Degree σ T.Tname = ‘张旭’ ∧ T.Tno = C.Tno ∧ C.Cno = SC.Cno ∧ SC.Sno = ST.Sno ( ρ ST Student ⨯ ρ C Course ⨯ ρ SC Score ⨯ ρ T Teacher
  17. 查询95033班和95031班全体学生的记录。
    σ ST.Class = ‘95033’ ∨ ST.Class = ‘95031’ ρ ST Student
  18. 查询存在有85分以上成绩的课程Cno.
    π Cno σ Degree > 85 Score
  19. 查询出“计算机系“教师所教课程的成绩表。
    π SC.Sno, SC.Cno, SC.Degree σ T.Depart = ‘计算机系’ ∧ T.Tno = C.Tno ∧ C.Cno = SC.Cno (ρ T Teacher ⨯ ρ C Course ⨯ ρ SC Score)
  20. 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
    π T1.Tname, T1.Prof, T2.Tname, T2.Prof σ T1.Depart = ‘计算机系’ and T2.Depart = ‘电子工程系’ and T1.Prof ≠ T2.Prof (ρ T1 Teacher ⨯ ρ T2 Teacher)
  21. 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
    π S1.Sno, S2.Cno, S2.Degree σ S1.Sno = S2.Sno ∧ S1.Cno = ‘3-105’ ∧ S2.Cno = ‘3-245’ and S1.Degree > S2.Degree (ρ S1 Score ⨯ ρ S2 Score)
  22. 查询所有教师和同学的name、sex和birthday.
    ρ name←Sname, sex←Ssex, birthday←Sbirthday π Sname, Ssex, Sbirthday Student ∪ ρ name←Tname, sex←Tsex, birthday←Tbirthday π Tname, Tsex, Tbirthday Teacher
  23. 查询所有“女”教师和“女”同学的name、sex和birthday.
    ρ name←Sname, sex←Ssex, birthday←Sbirthday π Sname, Ssex, Sbirthday σ Ssex = ‘女’ Student ∪ ρ name←Tname, sex←Tsex, birthday←Tbirthday π Tname, Tsex, Tbirthday σ Tsex = ‘女’ Teacher
  24. 查询所有任课教师的Tname和Depart.
    π T.Tname, T.Depart σ T.Tno = C.Tno ∧ C.Cno = SC.Cno (ρ T Teacher ⨯ ρ C Course ⨯ ρ SC Score)
  25. 查询所有未讲课的教师的Tname和Depart.
    π Tname, Depart (Teacher) – π T.Tname, T.Depart σ T.Tno = C.Tno ∧ C.Cno = SC.Cno (ρ T Teacher ⨯ ρ C Course ⨯ ρ SC Score)
  26. 查询Student表中不姓“王”的同学记录。
    Student – σ Sname like ‘王%’ Student
  27. 查询Student表中最大和最小的Sbirthday日期值。
    (π Sbirthday (Student) – π ST1.Sbirthday ((ρ ST1 Student) ⨝ ST1.Sbirthday < ST2.Sbirthday (ρ ST2 Student)))

    (π Sbirthday (Student) – π ST1.Sbirthday ((ρ ST1 Student) ⨝ ST1.Sbirthday > ST2.Sbirthday (ρ ST2 Student)))
  28. 以班号和年龄从大到小的顺序查询Student表中的全部记录。
    τ Class desc, Sbirthday asc Student
  29. 查询“男”教师及其所上的课程。
    π T.Tname, C.Cname σ T.Tsex = ‘男’ ∧ T.Tno = C.Tno (ρ T Teacher ⨯ ρ C Course)
  30. 查询最高分同学的Sno、Cno和Degree列。
    π Sno, Cno, Degree (Score) – π Score.Sno, Score.Cno, Score.Degree (Score ⨝ Score.Degree < S1.Degree (ρ S1 Score))
  31. 查询和“李军”同性别的所有同学的Sname.
    π S1.Sname σ S1.Ssex = S2.Ssex ∧ S1.Sname ≠ ‘李军’ ∧ S2.Sname = ‘李军’ (ρ S1 Student ⨯ ρ S2 Student)
  32. 查询和“李军”同性别并同班的同学Sname.
    π S1.Sname σ S1.Ssex = S2.Ssex ∧ S1.Class = S2.Class ∧ S1.Sname ≠ ‘李军’ ∧ S2.Sname = ‘李军’ (ρ S1 Student ⨯ ρ S2 Student)
  33. 查询所有选修“计算机导论”课程的“男”同学的成绩表。
    π ST.Sname, ST.Sno, SC.Degree σ ST.Ssex = ‘男’ and ST.Sno = SC.Sno and SC.Cno = C.Cno and C.Cname = ‘计算机导论’ (ρ ST Student ⨯ ρ SC Score ⨯ ρ C Course)

以上所有答案均可以在最上面推荐的网站中直接粘贴复制使用,如有错误望留言告知,谢谢!

做完上述习题后心得如下:

  1. 关系代数实现最大最小用 “-” 求补
  2. 最基本的关系代数无法实现Count,对应的求平均值之类需要用到Count的方法也无法实现

今天的文章关系代数习题及答案分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10145.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注