关系代数是一种抽象的查询语言,是研究关系模型的数学工具。关系代数的运算对象是关系,运算结果也是关系。关系代数运算符主要分为集合运算符和关系运算符两大类。
集合运算符有笛卡尔积、并、交、差,关系运算符有除、选择、投影、连接,下面详细介绍两类运算符的概念和运算规则。
1.笛卡儿积
在数学中,笛卡儿积是对两个集合相乘,假没对集合A和集合B进行笛卡儿积,结果中第1个对象是A的成员,第2个对象是B的所有可能有序对的其中一个成员。
在数据库中,广义笛卡儿积是对两个关系进行操作,产生的新关系中记录个数为两个关系中记录个数的乘积。
假设有关系R和关系S,关系R有n个字段,关系S有m个字段,R和S的笛卡儿积(即R×S)的结果是一个具有n+m个字段的新关系。在新关系中,记录的前n个字段来自R,后m个字段来自S,记录的总个数是R和S中记录的乘积。
关系R中有2个字段分别为学号和学生姓名;2个记录分别为(1,张三)和(2,李四)
关系S中有2个字段分别为班级号和班级名称;2个记录分别为(001,软件班)和(002,网络班),R×S共有2+2个字段,分别为学号、学生姓名、班级号和班级名称。
R×S共有2×2个记录,分别为(1,张三,001,软件班)、(1,张三,002,网络班)、(2,李四,001,软件班)、(2,李四,002,网络班)。
2.并、交、差
并、交、差运算要求参与运算的两个关系具有相同数量的字段,其运算结果是一个具有相同数量字段的新关系。
假设有关系R和关系S,RUS表示合并两个关系中的记录,RnS表示找出既属于R又属于S的记录,R~S表示找出属于R但不属于S的记录。
关系R中有2个记录,分别为(1,张三)、(2,李四)。
关系S中有2个记录,分别为(1,张三)、(3,小明。
RS运算:关系R和关系S中都有记录(1,张三),需要将该记录去重,结果为(1,张三)、(2,李四)、(3,小明)。
RnS运算:记录(1,张三)既在关系R中,又在关系S中,结果为(1,张三)。
RS运算:记录(2,李四)属于关系R,但不属于关系S,结果为(2,李四)。
3.除
除运算是笛卡儿积的逆运算。
假设有关系R和关系S,除运算需满足S的字段集是R字段集的真子集,R÷S的结果是R字段集减去S字段集的结果。例如,R(A,B,C,D)÷S(C,D)的结果由A和B两个字段构成。
R÷S1表示查询学号为2的学生所选择的课程,由关系R可以得知学号为2的学生选择的课程号为1、2、3。
R÷S2表示查询学号为2和3的学生共同选择的课程,根据关系R可以得知学号为3的学生选择的课程号为1、2,学号为2的学生所选择的课程为1、2、3,那么R:S2的结果为1、2。
4.选择和投影
选择是在一个关系中将满足条件的记录找出来,即水平方向筛选;
投影是在一个关系中去掉不需要的字段,保留需要的字段,即垂直方向筛选。
选择操作:o学号=1®表示在关系R中查找学号为1的学生,找到了记录(1,张三,男);
投影操作:π学号,学生姓名®表示在关系R中查找学号和学生姓名,也就是保留学号字段和学生姓名字段,去掉学生性别字段。
5.连接
连接是在两个关系的笛卡儿积中选取字段间满足一定条件的记录。
常用的连接方式有等值连接和自然连接。
假设有关系R和关系S,使用A和B分别表示R和S中数目相等且可比的字段组。等值连接是在R和S的笛卡儿积中选取A、B字段值相等的记录。
自然连接是一种特殊的等值连接,要求R和S必需有相同的字段组,进行等值连接后再去除重复的字段组。
关系R中有4个记录,关系S中有3个记录,R×S共有12个记录,
等值连接运算结果为RxS中班级号相等的记录。
自然连接运算结果就是在等值连接运算的结果中去除重复的字段组班级号。