关系代数运算
关系代数的五个基本操作
-
并(∪):两个关系需有相同的关系模式,并的对象是元组,由两个关系所有元组构成。
RUS≡{t| t∈R ∨t∈S}
-
差(-):同样,两个关系有相同的模式,R和S的差是由属于R但不属于S的元组构成的集合。
R-S≡{t| t∈R ∧t 不属于S}
-
笛卡尔积(×):对两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积。
R×S≡{t| t=< tr,ts>∧tr∈R∧ts ∈S}
-
投影(π):对关系进行垂直分割,消去某些列,并重新安排列的顺序,重复元组只能保留一个
select distinct A1,A2 from R
-
选择(σ):根据某些条件关系作水平分割,即选择符合条件的元组。
select * from R where F
关系代数的四个组合操作
-
交(∩):R和S的交是由既属于R又属于S的元组构成的集合。
-
连接:包括θ(算术比较符)连接和**F(**公式)连接.
选择R×S中满足iθ(r+j)或F条件的元组构成的集合;
概念上比较难理解,关键理解运算实例
等值连接(θ为等号“=”的连接)。
-
自然连接(R[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-auKv1aSi-1623903311114)(数据库.assets/clip_image001.gif)]S):在R×S中,选择R和S公共属性值均相等的元组,并去掉R×S中重复的公共属性列。 如果两个关系没有公共属性,则自然连接就转化为笛卡尔积。
-
除法(÷):首先除法的结果中元数为两个元数的差, 方便解决带有“全部条件”的查询定义
R÷S的操作思路如下—把S看作一个块,如果R中相同属性集中的元组有相同的块, 且除去此块后留下的相应元组均相同,那么可以得到一条元组, 所有这些元组的集合就是除法的结果
查询优化
关系代数表达式的优化问题
查询优化的目的就是为了系统在执行时既省时间又能提高效率。
在关系代数运算中,通常是先进行笛卡尔积或连接运算,再进行选择和投影。笛卡尔积或连接运算却往往花费教多的时间。
因此,恰当地安排选择、投影和连接的顺序直接影响到整个操作所需要的时间和空间。 如何安排若干关系的运算操作步骤,是查询优化所要考虑的问题。
优化的策略
-
在关系代数表达式中尽可能早地执行选择操作;
-
把笛卡尔积和随后的选择操作合并成F连接运算;
-
同时计算一连串的选择和投影操作;
-
保留同一子表达式的结果;
-
适当对关系文件进行预处理 ;
-
计算表达式之前先估计一下怎么计算合算。