4.除
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影:
元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:
Yx:x在R中的象集,
eg:设关系R、S分别为下图的(a)和(b),RS的结果为图©
步骤:先在被除数关系中找象集,再从被除数的投影中找到包含所有除数关系的属性,即为最后结果
在关系R中,A可以取四个值{a1,a2,a3,a4}
a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集为 {(b3,c7),(b2,c3)}
a3的象集为 {(b4,c6)}
a4的象集为 {(b6,c6)}
S在(B,C)上的投影为 {(b1,c2),(b2,c1),(b2,c3) }
只有a1的象集包含了S在(B,C)属性组上的投影 所以 R÷S ={a1}
eg:查询至少选修1号课程和3号课程的学生号码 。
首先建立一个临时关系K:
然后求:
是在SC表上对Sno和Cno的投影
201215121象集{1,2,3} 201215122象集{2,3} K={1,3}
于是:
eg:查询选修了2号课程的学生的学号。
先在选课表中找出选修2号课程的一行(元组),再找出其学号(投影))
eg:查询至少选修了一门其直接先行课为5号课程的学生姓名
①
1.将课程表、选课表和学生表在学号和姓名上的投影自然连接,(因为Course中有Cno,SC中有Cno和Sno,有相同属性的表才可以自然连接)
2.再找出先行课号为5的行
3.投影到学生姓名
②
eg:
1.将全部课程单独写出来
2.SC表中用Sno和Cno投影成的表除以课程,得到只包含Sno的表
3.与学生表中的包含姓名和学号的投影自然连接,得到最后结果
2.5 关系演算*
元组关系演算语言 ALPHA
域关系演算语言 QBE
2.6 小结
1.关系数据库系统是目前使用最广泛的数据库系统
关系数据库系统与非关系数据库系统的区别:
关系系统只有“表”这一种数据结构
非关系数据库系统还有其他数据结构,以及对这些数据结构的操作
2.关系数据结构
(1)关系
①域
②笛卡尔积
③关系
- 关系,属性,元组
- 候选码,主码,主属性
- 基本关系的性质
(2)关系模式
(3) 关系数据库
(4)关系模型的存储结构
3.关系操作
(1)查询
选择、投影、连接、除、并、交、差
(2)数据更新
插入、删除、修改
4.关系的完整性约束
-
实体完整性
-
参照完整性 (外码)
-
用户定义的完整性
5.关系数据语言
(1)关系代数语言
(2)关系演算语言 -
元组关系演算语言 ALPHA
-
域关系演算语言 QBE