博客原谅同步:https://keelii.github.io/2017/02/19/basic-operations-of-relation-algebra/
## 关系代数运算符 **集合运算符** | 运算符 | 含义 | 英文 | | ———— | ———— | ———— | |
∪
| 并 | Union |
|
− | 差 | Difference | |
∩
| 交 | Intersection |
|
× | 笛卡尔积 | Cartesian Product | **比较运算符** | 运算符 | 含义 | | ———— | ———— | |
>
| 大于 |
|
≥ | 大于等于 | |
<
<script type="math/tex" id="MathJax-Element-7"><</script> | 小于 | |
≤
| 小于等于 |
|
= | 等于 | |
≠
| 不等于 |
**专门的关系运算符**
| 运算符 | 含义 | 英文 |
| ———— | ———— | ———— |
|
σ | 选择 | Selection | |
π
| 投影 | Projection |
|
⋈ | 链接 | Join | |
÷
| 除 | Division |
**逻辑运算符**
| 运算符 | 含义 |
| ———— | ———— |
|
∧ | 与 | |
∨
| 或 |
|
¬ | 非 | ## 5 种基本的关系代数运算 ### 并(Union) 关系 R 与 S 具有相同的关系模式,即 R 与 S 的元数相同(结构相同),R 与 S 的并是属于 R 或者属于 S 的元组构成的集合,记作 R ∪ S,定义如下:
### 差(Difference) 关系 R 与 S 具有相同的关系模式,关系 R 与 S 的差是属于 R 但不属于 S 的元组构成的集合,记作 R − S,定义如下:
### 广义笛卡尔积(Extended Cartesian Product) 两个无数分别为 n 目和 m 目的关系 R 和 S 的 笛卡尔积是一个 (n+m) 列的元组的集合。组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组,记作 R × S,定义如下:
R×S={t|t=<(tn,tm)∧tn∈R∧tm∈S}
\(tn,tm\)
表示元素
tn
和
tm
拼接成的一个元组
### 投影(Projection) 投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A 组成新的关系,记作
πA\(R\)
,其形式如下:
### 选择(Selection) 选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的元组,记作
σF\(R\)
,其形式如下:
## 实例 设有关系 R、S 如图所示,求
R∪S
、
R−S
、
R×S
、
π_A,C\(R\)
、
σ_A>B\(R\)
和
σ_3<4\(R×S\)
![关系表RS](//img10.360buyimg.com/devfe/jfs/t3967/269/2409299226/5377/e997b909/58a95fceNddd39fd7.png) 进行并、差运算后结果如下: ![并差](//img14.360buyimg.com/devfe/jfs/t3949/95/2458170516/5487/1c7f1f38/58a967b1N42db123f.png) 进行笛卡尔、 投影、 选择运算后结果如下: ![笛卡尔_投影_选择](//img30.360buyimg.com/devfe/jfs/t3943/109/2403665652/38834/c636281b/58a9685dN20af0b9b.png) ## 扩展的关系代数运算 ### 交(Intersection) 关系 R 和 S 具有相同的关系模式,交是由属于 R 同时双属于 S 的元组构成的集合,记作 R∩S,形式如下:
### 链接(Join) 注:下面的 θ 链接应该记作:![theta链接](//img10.360buyimg.com/devfe/jfs/t3967/158/2461240249/2389/530d7d07/58aa580aNe9908740.png) #### θ 链接 从 R 与 S的笛卡尔积中选取属性间满足一定条件的元组,可由基本的关系运算笛卡尔积和选取运算导出,表示为:
XθY 为链接的条件,θ 是比较运算符,X 和 Y 分别为 R 和 S 上度数相等且可比的属性组
例如:求
R⋈_R.A<S.BS
,如果为:
等值链接
当 θ 为「=」时,称之为等值链接,记为:
R⋈X=YS
自然链接
自然链接是一种特殊的等值链接,它要求两个关系中进行比较的分量必须是 相同的属性组,并且在结果集中将 重复的属性列 去掉
例如:设有关系 R、S 如图所示,求
R⋈S
先求出笛卡尔积
R×S
,找出比较分量(有相同属性组),即: R.A/S.A 与 R.C/S.C
取等值链接
R.A=S.A
且
R.C=S.C
结果集中去掉重复属性列,注意无论去掉 R.A 或者 S.A 效果都一样,因为他们的值相等,结果集中只会有属性 A、B、C、D
最终得出结果
除(Division)
设有以下如图关系,求
R÷S
取关系 R 中有的但 S 中没有的属性组,即:A、B
取唯一 A、B 属性组值的象集
可知关系S存在于 a,b/c,k 象集 中。即
R÷S
得