关系代数
一个集合施加一个操作得到一个集合;最后得到想要的结果
关系 R:
A | B | C |
---|---|---|
a | b | c |
b | a | d |
c | d | e |
d | f | g |
关系 S:
A | C | D |
---|---|---|
b | a | d |
d | f | g |
f | h | k |
基本操作
R(A1, A2..., AN) S(B1, B2..., BN)
并
前提:并相容性
- N = M
- Domain(Ai) = Domain(Bi)
合并,去掉重复元组,R 并 S 和 S 并 R 结果相同
例:两表中记录合并,是...或者是...或者是...的记录
差
R-S: 出现在 R 中,但不出现在 S 中的元组
R-S:
A | B | C |
---|---|---|
a | b | c |
c | d | e |
S-R:
A | B | C |
---|---|---|
f | h | k |
例:R 为计算机学院学生, S 为四年级学生,
R-S: 计算机学院但不是四年级学生
S-R: 四年级但不是计算机学院的学生
是...但不是...的记录
广义笛卡尔积
R 和 S 所有可能元组的穷举,笛卡尔积属性个数 n + m
连接的基础
选择
在 R 中找出符合条件 condition 的行, 组成新的关系
投影
在关系 R 中选择若干列,组成一个新关系(并去重)
更名操作
起别名,自身连接自身
扩展操作
交 Intersection
既属于 R 又属于 S ( 并且 )
R 交 S = R - (R - S) || S - (S - R)
连接
-
θ 连接
给定一个条件进行连接
-
等值连接 特殊的 θ 连接 (当条件相等时)
-
自然连接 *
要求两个关系中进行比较的必须是相同的属性组,并去掉重复列
除
前提
R 为 n 度, S 为 m 度,需要 m < n
查询... 全部的/所有的 ... (一般都是主键或者候选键)
R 中的象集包含 S 的投影集 (属于一个关系,但是不属于另一个关系的元组)
关系 R:
A | B | C | D |
---|---|---|---|
a | b | c | d |
a | b | e | f |
a | b | h | k |
b | d | e | f |
b | d | d | l |
c | k | c | d |
c | k | e | f |
关系 S:
C | D |
---|---|
c | d |
e | f |
cd 对应 {{a, b}, {c, k}}
ef 对应 {{a, b}, {c, k}, {b, d}}
取交集
外连接
连接运算的扩展,可以处理连接时,没有相同字段而丢失的信息
-
左外连接
在连接基础上,用 null 填满没有没有与左侧记录匹配的右侧元组的属性,去除没有匹配到的右侧记录
-
右外连接
在连接基础上,用 null 填满没有没有与右侧记录匹配的左侧元组的属性,去除没有匹配到的左侧记录
-
全外连接
完成 左外连接 + 右外连接
关系模型
完整性约束
-
实体完整性 -- 主码
主码不能为空
-
参照完整性 -- 外码、候选码
-
用户自定义完整性 -- 属性、属性值
自定义属性值的取值范围