关系代数的五个基本操作:
(1)并(∪):两个关系需有相同的关系模式,并的对象是元组,由两个关系所有元组构成。
RUS≡{t| t∈R ∨t∈S}(2) 差(-):同样,两个关系有相同的模式,R和S的差是由属于R但不属于S的元组构成的集合。
R-S≡{t| t∈R ∧t 不属于S}
(3)笛卡尔积(×):对两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积。
R×S≡{t| t=< tr,ts>∧tr∈R∧ts ∈S}(r,s为上标)
通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合。假设R中有元组M个,S中有元组N 个, 则R和S的笛卡尔积中包含的元组数量就是M*N。这个规则可以向多个关系扩展。
有A集合学生与B集合老师,他们如果没有WHERE的关系约束,则连接(JOIN)后就会产生所有可能出现的阵列乘积,即笛卡尔积。例如:A{S1,S2} B{T1,T2} A与B笛卡尔积后
(注意,不可以像乘法那样实体关系可以进行交换乘机位置。)
A * B= {<S1,T1>,<S1,T2>,<S2,T1>,<S2,T2>}
(4) 投影(σ):对关系进行垂直分割,消去某些列,并重新安排列的顺序。
投影操作是一个关系操作,所谓的出现重复行是指多个记录在投影属性上具有相同的取值,
例如:学号 姓名 性别 年龄
01 艾伦 男 17
02 三笠 女 17
03 阿明 男 17
在性别和年龄两个属性上投影后数据集只保留这两个属性列,结果如下:
性别 年龄
男 17
女 17
男 17
其中第一行和第三行就是重复行,虽然来自不同记录,但是这两个属性上的内容相同对于关系代数来说,需 要消除相同的行(SQL语句默认不消除重复)最后结果就是:
性别 年龄
男 17
女 17
关系代数的四个组合操作 :
(1)交(∩):R和S的交是由既属于R又属于S的元组构成的集合。
(2)连接:包括θ(算术比较符)联接和F(公式)联接,选择R×S中满足iθ(r+j)或F条件的元组构成的集合.
等值联接(θ为等号“=”的联接)。
(3)自然联接(R关系代数和关系演算S):在R×S中,选择R和S公共属性值均相等的元组,并去掉R×S中重复的公 共属性列。 如果两个关系没有公共属性,则自然联接就转化为笛卡尔积。
(4)除法(÷):首先除法的结果中元数为两个元数的差,
R÷S的操作思路如下---把S看作一个块,如果R中相同属性集中的元组有相同的块, 且除去此块后留下的相 应元组均相同,那么可以得到一条元组, 所有这些元组的集合就是除法的结果