概述
域(Domain):由属性构成,是属性的所有取值,一组具有相同数据类型的值的集合;
关系:是域作笛卡尔积后的,有一定意义的,有限的子集;
- 关系名,应该和其他关系不重名;
- 单元格包含一个原子值;
- 同一关系中属性不同名
- 统一属性的值取自相同的域;
- 不应该有重复原则;
- 属性的顺序并不重要;
- 元组的顺序一般也不重要;
关系是一张二维表,每一行对应一个元组,每个列对应一个属性域;
集合运算
关系和关系运算符组合的有意义的表达式;
一次一关系:
- 关系运算操作数:关系
- 关系运算结果:关系
- 这说明关系运算是一个闭包;
关系名
最简单的表达式:(关系名,表示拷贝)
并
至少在两个关系出现一次的元组集合
相容性:
- 一般指有相同的数据结构(属性要同名)
- 广义上,对应属性来自相同的域,两个关系的属性数量相同;
- 语义一致
差
属于但不属于的元组集合
差运算也要求相容性;
交
既属于又属于的元组集合
注意交集可以用差集表示出来:
笛卡尔积
属性求全集的操作,关系是笛卡尔积的子集
选择
从关系中找出满足给定条件的所有元组称为选择
- 从行的角度进行的运算,即水平方向抽取元组
- 经过选择运算得到的结果可以形成新的关系,其关系模式不变,是原 关系的一个子集
垂直方向规模变小
投影
从关系中挑选若干属性组成的新的关系
- 从列的角度进行的运算,即垂直方向抽取元组
- 投影的结果中要去掉相同的行
水平方向规模变小;
投影的结果需要自动去重,因此垂直方向也有可能变少;
连接)">条件连接(2e9801ec-9bc0-4fba-8f79-1c2e8696a8f3连接)
任何一个连接可以用笛卡尔积和选择关系来表示;
记为比较运算符,为等号时称为等值连接,为上度数相等且可比较的属性列:
自然连接:从广义的笛卡尔积选取相同属性列上取值相等的元组,去掉重复行:
- 自然连接中相等的分量必须时相同的属性组;
- 先计算笛卡尔积,选择同时出现在和中相等的元组,去掉所有重复属性;
自然连接和等值连接的区别:
- 自然连接是某种特殊的等值连接;
- 两个关系中进行比较的分量必须是相同的属性组;
- 结果重复列去掉;
外连接
左外连接
左外连接(left outer join):左外连接返回左表中的所有记录,以及右表中满足连接条件的记录。
如果右表中没有满足条件的记录,结果会包括左表中的记录,右表的对应字段值为 null
右外连接
右外连接(right outer join):右外连接返回右表中的所有记录,以及左表中满足连接条件的记录。
如果左表中没有满足条件的记录,结果会包括右表中的记录,左表的对应字段值为 null
全外连接
全外连接(full outer join):返回左表和右表中的所有记录,以及左右表中满足连接条件的记录。
如果左表或右表中没有满足条件的记录,结果会包括表中未匹配的记录,对应另一表的字段值为 NULL
重命名运算
对模式名和属性名重命名:
特殊的,对模式重命名和对属性名如下:
重命名运算符的作用:
- 统一集合运算两端的关系模式
- 自连接
除法
象集:给定关系,为属性组,当时,在中的象集(Image Set)如下:
象集表示中属性组上值为的各个元组在分量上的集合;
除法:
给定关系,其中
-
为属性组;
-
中出自相同的域;
-
,其中满足中满足下列条件的元组在上的 投影
查询优化
关系数据库管理系统首先将用户的 SQL
语句转换为等价的关系代数表达式,然后利用系统信息和上面介绍的运算律进
行优化;
若选择运算与广义笛卡儿积满足交换律,则选择运算应该尽可能最先执行,因为选择运算减少了数据,而笛卡儿积应尽可能后执行,因为广义笛卡儿积会产生大量的组合数据.