最新关系代数表达式
课程名 Cname 数据库
数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
(b)
先行课 Cpno5Biblioteka 学分 Ccredit4
2
1
4
6
3
7
4
2
6
4
An Introduction to Database System
SC
学号 Sno 200215121
200215121
200215121 200215122
学号 Sno 200215121
200215122
200215123
200215125
姓名 Sname
李勇
刘晨
王敏
张立
性别 Ssex
男 女 女 男
(a)
年龄 Sage
20
所在系 Sdept
CS
19
IS
18
MA
19
IS
An Introduction to Database System
Course
课程号 Cno 1 2 3 4 5 6 7
❖2. “出得去,回得来”
❖ 将人眼的移动过程翻译成关系代数表达式。(利 用对于学过的关系代数理论的理解)
❖ 人眼纵向扫描满足条件的元组——选择σ ❖人眼定位到某个元组后选择某些属性列的值—
—投影π
An Introduction to Database System
查询选修了2号课程的学生的学号。 πSno(σCno=‘2’(SC)) 查询至少选修1号课程和3号课程的学生号码
200215122
课程号 Cno 1
2
3 2
3
成绩 Grade
92
85
88 90
80
(c)
An Introduction to Database System
书写关系代数表达式的步骤
❖ 1.“超脱于世外” ❖ 把自己当做没学过关系代数的“白丁”,人工完
成题目给出的查询,记录人眼的移动过程。 ❖ 查询选修了2号课程的学生的学号
An Introduction to Database System
❖ 不识庐山真面目,只缘身在此山中。
自然语言
关系代数表达式
从系统外考虑
An Introduction to Database System
示例数据库
学生-课程数据库: 学生关系Student、课程关系Course和选修关系SC
Student
4
2
1
4
6
3
7
4
2
6
4
An Introduction to Database System
1 SC
学号 Sno 200215121
200215121
200215121 200215122
200215122
课程号 Cno 1
2
3 2
3
成绩 Grade
92
85
88 90
80
(c)
An Introduction to Database System
πSno,
查询选修了全部课程的学生号码和姓名。
An Introduction to Database System
Course
课程号 Cno 1 2 3 4 5 6 7
课程名 Cname 数据库
数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
3
πSno,Cno(SC)÷K={200215121}
200215122
2
200215122
3
An Introduction to Database System
首先建立一个临时关系K:
Cno 1 3
An Introduction to Database System
❖ 具有上述类似的人眼移动过程——除法÷ ❖ 在整个过程中人眼未关注的列可以用投影π去除
❖ 查询至少选修了一门其直接先行课为5号课程的学 生姓名
An Introduction to Database System
Course
课程号 Cno 1 2 3 4 5 6 7
课程名 Cname 数据库
数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
(b)
先行课 Cpno
5
学分 Ccredit
200215121
Student
学号 Sno 200215121
200215122
200215123
200215125
姓名 Sname
李勇
刘晨
王敏
张立
性别 Ssex
男 女 女 男
(a)
年龄 Sage
20
所在系 Sdept
CS
19
IS
18
MA
19
IS
An Introduction to Database System
An Introduction to Database System
SC
学号 Sno 200215121
200215121
200215121 200215122
200215122
课程号 Cno 1
2
3 2
3
成绩 Grade
92
85
88 90
80
(c)
An Introduction to Database System
关系代数表达式
一些例子
1.查询选修了2号课程的学生的学号。 πSno(σCno=‘2’(SC))
2.查询至少选修了一门其直接先行课为5号课程的的学生姓名 πSname (πSno (σCpno='5' (Course) SC) πSno,Sname (Student))
3.查询选修了全部课程的学生号码和姓名。 πSno,Cno(SC)÷πCno(Course) πSno,Sname(Student)
❖ 上述”拿着”一些属性值到另外一张表/同一张表 (自身连接)里去找具有相同值的项配对——自 然连接
❖ 只能外码可以配对
An Introduction to Database System
查询至少选修了一门其直接先行课为5号课程 的学生姓名
πSname (πSno (πCno(σCpno='5'(Course)) πSno,Cno(SC)) Sname (Student))
首先建立一个临时关系K:
Cno 1 3
An Introduction to Database System
❖ πSno,Cno(SC)
Sno
Cno
200215121象集{1,2,3} 200215122象集{2,3}
200215121
1
200215121
2
K={1,3} 于是:
200215121
An Introduction to Database System
SC
学号 Sno 200215121 200215121 200215121 200215122
200215122
课程号 Cno 1
成绩 Grade
92
2 ——是否包含1,3 85
3
88
2
90
——是否包含1,3
3
80
(c)
An Introduction to Database System