数据库-关系运算

来源:互联网 发布:java nanotime 转毫秒 编辑:程序博客网 时间:2024/05/17 23:28

数据库中的关系运算包括选择、投影、连接、除等。

1、选择

选择又称限制,其实就是在关系R中选择满足给定条件的诸多元组,元组其实就是表中的一行数据称为元组。

其实选择运算就是从一个关系,比如说关系R中选取可以使你列出来的逻辑表达式为真的元组。选择运算是以行的角度去进行运算的

就比如说你有一份学生信息表格,里面有学生的姓名,学号,性别,我们想要取出这里面的所有的男生的话,我们就需要去定义一个表达式,让性别字段为男。这就是选择

2、投影

投影其实就是从关系R中选择出若干属性列组成新的关系,举个简单的例子把,就比如说ACM程序设计大赛,会有来自不同的学校的队伍,而一所学校可能不一定只有一只队伍

现在所有的队伍的信息我们都存储在表格中了,我们就可以用投影操作,将重复的学校都给刷掉。剩下的学校保证都只有一个。投影是以列的角度进行的运算。

3、连接

连接就是从两个关系的笛卡尔积中选取属性满足一定条件的元祖。什么是关系的笛卡尔积,就是比如说你有两个关系R和S,关系R的行为k行j列,关系S的行为n行m列,

这样的话它们的笛卡尔积有k*n行有j+m列。列数就是直接合并

连接分为一般连接,等值连接,自然连接。其中一般连接就是根据条件进行组合。

等值连接就是比如说你有两个表,一个表示有姓名和学号和成绩,另一个表中有学号和手机号,这个时候我们就需要去根据这两张表中的学号这个属性,去进行合并,有两个学号属性的就去合并。

自然连接就是特殊的等值连接,就是在等值连接的基础上,把重复的属性列去掉。

连接还有外连接、左连接、右连接的区别

就比如说你在做关系R和S做自然连接的时候,选择两个关系在公共属性上相等的元组构成了新的关系,这个时候如果关系R中的某些元组在关系S中不存在公共属性上相同的值,而会造成R中的某些元素的丢失,同样关系R中的某些元祖也可能会丢失,这样的话可能就会造成信息的丢失。所以我们这个时候如果要把舍弃的元组保留在结果关系中,在其他属性上设置空值就可以了,如果我们只把关系R中本来要舍弃掉的元组保留的就叫做左外连接,如果是关系S的就叫做右外连接。

外连接就是把左边和右边要舍弃掉的元组都进行保留

4、除

除操作的具体步骤的话,其实是这样子的,比如说有关系R(X,Y)和S(Y,Z),其中X,Y,Z都是属性组,我们先求R中的X的象集,然后再求S中Y的投影,再去观察象集是不是全部包含了这个Y的投影。就比如说现在有这么一份表格,姓名、学号、考勤次数,我们需要把考勤次数达到10次的算出来,其实就可以通过这个除运算来做,就比如说我们把姓名和学号、考勤次数当成是关系R,然后把考勤次数当成是关系S,然后X属性组就是姓名和学号,Y就是考勤次数,我们把姓名和学号的象集求出来,然后关系S中属性Y的投影只包含考勤次数为100的次数,假设100次是满勤。这样的话,只要姓名和学号的象集是包含100次的说明就是满勤的。


最后补充说下

选择操作是以行的角度来进行的运算

投影是以列的角度来进行的运算

连接的话,一般的连接操作是以行的角度来进行运算,自然连接还要取消重复的列,所以自然连接是以行和列的角度来进行的操作。

除操作是从行和列的角度进行运算的。

原创粉丝点击