数据库本质上就是一些数据的集合,所以对一个数据库的操作就是十分类似于对一些集合的操作。这篇博客对我们会遇到的数据库的关系作一个小小的总结。
在这里,共有并,差,交和笛卡尔积四种运算。 1. 并集
R∪S=${t|t∈R∧t∈S$} 2. 交集 R∩S=${t|t∈R∨t∈S$} 3. 差集 R−S=${t|t∈R∧t∉S$} 4. 笛卡尔积 即分别将两个集合中的元素组合一些记号: 1. 设一个关系模式为R( A1,A2,....An ), 其一个分量为R。 t∈R 表示t是R的一个元组,t[ Ai ]表示的是相对于属性 Ai 的一个分量。 2. t[A]=(t[ A1 ],t[ A2 ]….t[ An ])表示属性列A在各个分量上的集合。我们也可以选取一些等价类作为子类。 3. R为一个n目的关系,S为m目的关系,那么其连接则会得到一个(n+m)目的关系。我们需要注意这一点。 4. 象集:给定了一个关系R(X,Z),X,Z为属性组。当t[X]=x时,x在R中的象集可以定义为 Zx= {t[Z]|t ∈R,t[X]=x }$
选择操作:感觉是数据库当中最简单的一种操作了,其定义如下: σF(R)=t|t∈R∧F(t)=true F是我们的选择条件,就是选出符合条件的元素。
投影操作: 就是从R中选择出若干属性组成新的关系。 πA(R)= {t[A]|t ∈R }$
连接操作:从两个关系的笛卡尔积当中选择出满足条件的元组 就是笛卡尔积的一个加强版,没什么好说的。 等值连接:即将两个集合选中的属性的值相同的元素存入我们的结果当中去。 自然连接:连接两个关系当中同名且相同类型的属性 外连接:在结果中保存悬浮元组,即保存了没有得到匹配的属性的值 左外连接:只保存了左边的联系当中没有得到匹配的属性的值 类似的,我们有右外连接的定义。
除运算:其实很好理解,但是书说的太奇怪了。 就是取的就是含有给定对应属性的象集是另一个关系在其上的投影的集合。