关系代数 Relational Algebra

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37813928/article/details/79778272

数据查询

1.目标:

从数据库中指定想要的内容

2.关系代数:

是一种抽象的查询语言,它用对关系的运算来表达查询。

3.

   运算对象、运算符、运算结果是运算的三大要素。

   关系代数的运算对象是关系,运算结果亦为关系。

   关系代数的运算符包括两类:集合运算符和专门的关系运算符。

4.五种基本的关系运算

①集合运算:并(union)  符号:U

   其结果仍为n目关系,由属于R或属于S的元组组成(没有重复的元组)。


②集合运算:差(difference) 符号:—

    R-S由属于R而不属于S的所有元组组成。


③选择运算(selection) 

    选择又称限制,是在关系R中选择满足给定条件的各个元组。



④投影运算(projection)

   关系R上的投影是从R中选择出若干属性列组成新的关系,是从列的角度进行的运算。


   投影之后不仅取消了元关系中的某些列,还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。

⑤笛卡儿积(cartesian product) 符号:X

   两个分别为n目和m目的关系R和S的笛卡儿积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。



5.派生的关系运算(Derived RA Operations)

①集合运算:交(intersection) 符号:∩

   结果关系由既属于R又属于S的元组组成,关系的交可以用差来表示,R∩S=R-(R-S)。



②连接运算(join)

(1)θ连接(Theta Join)

     θ连接,是从两个关系的迪卡儿积中选取属性间满足一定条件的元组。



(2)自然连接(Natural Join)

     自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并在结果中把重复的属性列去掉。



(3)等值连接(EQUIjoin)

      θ为“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡儿积中选取A\B属性值相等的那些元组。

(4)外连接(outer join)

       悬浮元组(dangling tuple):在做自然连接时由于不存在公共属性上值相等而被舍弃的元组。

       外连接:如果把悬浮元组也保存在结果关系中,而在其他属性上填上空值(NULL),那么这种连接就叫做外连接。

       左外连接 = 自然连接 + 左侧表中失配的元组。

       右外连接 = 自然连接 + 右侧表中失配的元组。

       全外连接 = 自然连接 + 两侧表中失配的元组。


③除运算(division) 符号:÷

   设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。


6.Complex Query

①例子:求出在上海工作的职工的工资值都有哪些?


②练习:



展开阅读全文

Relational Algebra(关连式代数),高手请进

03-14

Relational Algebra(关连式代数),好像这个领域是关于transaction管理的范围,能不能用relational algebra divide解决掉这题?或者举个例子讲一下关连式代数,小弟陷入郁闷中rnrnList any degree courses which have programmes with modules with all of those modules registered on by Pablo Picasso. (Hint: this is an example of relational algebra divide)rn用关连式代数分离法(relational algebra divide)列出任何的具有Pablo Picasso注册了的课程(modules)的学位(degree courses)rn(翻译的不知道准不准确)rnrn下面是表的数据:rn-------------rndegreecourse |rn-------------|rncourseID(PK) |rncourseTitle |rn-------------rnrn-------------rnstudent |rn-------------|rnstudentIDPK)|rnFirstname |rnLastname |rncourseID(FK) |rndateEnrolled |rndateWithdrawn|rndateGraduated|rn-------------rnrn----------------rnregistration |rn----------------|rnstudentID(PK,FK)|rnmoduleID(PK,FK) |rnyear(PK) |rnsemester(PK) |rn----------------rnrn-------------rnmodule |rn-------------|rnmoduleID(PK) |rnmoduleTitle |rn------------- rnrn-----------------rnstudyprograme |rn-----------------|rnmoduleID(PK FK) |rncourseID(PK,FK)| rnmoduleStatus |rn-----------------rnrn下面是我写的关连式代数(未完成):rnproject studyprogramme over courseid,moduleid giving Arnproject module over moduleid giving Brndivide A by B giving Crnjoin degreecourse,C over courseid giving resultrn 论坛

没有更多推荐了,返回首页