设有关墛S、SC、C, S(S#,SNAME,AGE,SEX) 例:(001,'壞强',23,'男') SC(S#,C#,SCORE) 例:(003,'C1',83) C(C#,CNAME,TEACHER) 例:('C1','数据库原理','王华') 1).用关墛代数检索既选修了C1课程,又选修了C2课程的学生学号(S#) 2).用关墛代数检索选修了“程军”老师所授课程瀧一的学生姓名。
时间: 2023-12-28 22:03:38 浏览: 362
1). 选修了 C1 课程和 C2 课程的学生的学号可以通过关系代数表达式实现,具体如下:
π<S#>(σ(C#='C1'∧S#∈π<S#>(σ(C#='C2')(SC))) (SC))
其中:
- S 表示学生表;
- SC 表示选课表;
- C 表示课程表;
- π 表示投影操作,选择指定的列;
- σ 表示选择操作,选择满足指定条件的行;
- ∧ 表示逻辑与操作;
- ∈ 表示属于运算符。
该表达式的意思是:从选课表 SC 中选择选修了 C1 课程,且同时在选修了 C2 课程的学生,然后投影出他们的学号 S#。
2). 选修了“程军”老师所授课程且是“瀧一”的学生姓名可以通过关系代数表达式实现,具体如下:
π<SNAME>(σ(TEACHER='程军'∧CNAME='瀧一'∧S#∈π<S#>(σ(TEACHER='程军')(C))∧S#∈π<S#>(σ(C#∈π<C#>(σ(TEACHER='程军' ∧ CNAME='瀧一')(C)))(SC))) (S))
其中:
- S 表示学生表;
- SC 表示选课表;
- C 表示课程表;
- π 表示投影操作,选择指定的列;
- σ 表示选择操作,选择满足指定条件的行;
- ∧ 表示逻辑与操作;
- ∈ 表示属于运算符。
该表达式的意思是:从学生表 S 中选择选修了程军老师所授课程且是瀧一的学生,然后投影出他们的姓名 SNAME。
相关问题
设有如图所示的关系S、SC和C,试用关系代数表达式表示下列查询语句: S C SC S# SNAME AGE SEX 1 李强 23 男 2 刘丽 22 女 5 张友 22 男 C# CNAME TEACHER k1 C语言 王华 k5 数据库原理 程军 k8 编译原理 程军 S# C# GRADE 1 k1 83 2 k1 85 5 k1 92 2 k5 90 5 k5 84 5 k8 80 1)检索至少选修”程军”老师所授全部课程的学生姓名(SNAME)。 2)检索”李强”同学不学课程的课程号(C#)
1)检索至少选修”程军”老师所授全部课程的学生姓名(SNAME)。
```relational algebra
π SNAME(σ CNAME=’程军’(SC) ÷ π CNAME(σ TEACHER=’程军’(C)))
```
2)检索”李强”同学不学课程的课程号(C#)
```relational algebra
π C#(C) - π C#(σ SNAME=’李强’(S) ⨝ SC)
```
其中,⨝ 表示自然连接,÷ 表示除法运算,σ 表示选择操作,π 表示投影操作,- 表示差集运算。
设有3个关系: S(S#,SNAME,SEX,AGE) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 试用关系代数表达式表示下列查询语句:(1)~(8)小题
(1) 查询所有学生的姓名和年龄:
π SNAME, AGE (S)
(2) 查询选了课程C1并且成绩不低于80分的学生的学号和姓名:
π S# SNAME (σ C#='C1' ∧ GRADE>=80 (SC ⨝ S))
(3) 查询选了课程C1或C2并且成绩不低于80分的学生的学号和姓名:
π S# SNAME (σ (C#='C1' ∨ C#='C2') ∧ GRADE>=80 (SC ⨝ S))
(4) 查询没有选课程的学生的学号和姓名:
π S# SNAME (S - π S# (SC ⨝ S))
(5) 查询至少选了两门课程的学生的学号和姓名:
π S# SNAME (σ COUNT(C#)≥2 (SC ⨝ S) ⨝π S# (SC))
(6) 查询选修了张老师教授的课程的学生的学号和姓名:
π S# SNAME (SC ⨝σ TEACHER='张' (C))
(7) 查询选修了至少一门课程的女生的学号和姓名:
π S# SNAME (σ SEX='女' ∧ S# IN (π S# (SC ⨝ S)))
(8) 查询选修了全部课程的学生的学号和姓名:
π S# SNAME (σ COUNT(C#)=(SELECT COUNT(*) FROM C) (SC ⨝ S))
阅读全文