精华内容
下载资源
问答
  • 在进行关系的并、交、差运算时,参与运算的关系R和S必须具有相同的属性,相应的属性取自同一个域,并且两个关系的属性排列次序一样,即R和S具有相同的结构,这是对关系进行并、交、差运算的前提条件,于是可定义以下...

    传统的集合运算

    包括关系的并、交、差和笛卡尔积,它们都是二目运算。在进行关系的并、交、差运算时,参与运算的关系R和S必须具有相同的属性,相应的属性取自同一个域,并且两个关系的属性排列次序一样,即R和S具有相同的结构,这是对关系进行并、交、差运算的前提条件,于是可定义以下四种运算。

    1. 并(Union)

    两个关系的并运算是将两个关系中的所有元组构成一个新的关系,并运算要求两个关系属性的值必须一致,且运算的结果要消除重复的元组。

    设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如下:R∪S≡ {t | t∈R ∨ t∈S},t是元组变量,R和S的元数相同,∨或。

    集合和关系模式 数据库的基础知识
    2. 差(Difference)

    设关系R和S具有相同的关系模式,R和S的差是由于属于R但不属于S的元组构成的集合,即为R-S。其形式定义如下:R-S ≡ {t | t∈R ∧ t∈S},R和S的元数相同,∧并。
    在这里插入图片描述

    1. 交(intersection)

    关系R和S的交是由属于R又属于S的元组构成的集合,记为:R ∩ S,这里要求R和S定义在相同的关系模式上。形式定义如下:R ∩ S ≡ {t |t∈R ∧ t∈S },R和S的元数相同。由于R∩S=R-(R-S),或R∩S=S-(S-R),因此交操作不是一个独立的操作。
    在这里插入图片描述

    4.笛卡尔积(Cartesian Product)

    在这里的笛卡尔积严格的讲应该是广义的笛卡尔积,因为这里笛卡尔积的元素是元组。在进行关系R与S的笛卡尔积实际运算时,可以从R的第一个元组开始,依次与S的每一个元组组合,生成R×S的一个新元组,然后对R的下一个元组进行同样的运算,直到R的最后一个元组也进行完全相同的运算位置,即可得到R×S的全部元祖。

    设关系R和S的元数分别为r和s,定义R和S的一个(r+s)的元组集合,每个元祖的前r个分量来自R的一个元组,后s个分量来自S的一个元组,记为R×S。定义形式如下:R×S ≡ {t| t= ∧ tr∈R ∧ ts∈S},∧并

    集合和关系模式 数据库的基础知识

    专门的关系运算

    专门的关系运算包括选择(Selection)投影连接(join),我们先来看选择:

    选择是在关系R中选择满足给定条件的所有元组构成的新关系。选择运算实际上是从关系R中选取使逻辑表达式F为真的全部元组,这是从行角度进行运算,即水平方向抽取元组。进过选择运算得到的新关系其模式不变,但其中的元组的数目小于等于原关系中元组的个数,它是原关系的一个子集。

    集合和关系模式 数据库的基础知识

    关系R上的投影是从R中选择出若干属性列组成新的关系。投影操作是从列角度进行运算。列子:在学生关系S中,查询学生的姓名和所在系,即求S关系上学生姓名和所在系两个属性上的投影。
    在这里插入图片描述

    连接(join)运算是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。形式定义为R ⋈(连接条件) S=σ(连接条件)(R×S),其中连接条件是关系R和S上可比属性的比较运算表达式或可比属性组的逻辑运算表达式。

    当连接条件为等式时,称连接为等值连接(equal join)。如果两个关系所有相同的属性作为等值连接,而且又取消了重复属性,则称为自然连接(natural join)。关系R和S的自然连接记为:R⋈S
    在这里插入图片描述

    两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。此时,关系R汇总某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元祖造操作时被舍弃了,同样,S中某些元组也可能被舍弃。

    如果把舍弃的元组也保存在结果关系中,而在其它属性上填空值(Null),那么这种连接就叫做外连接(Outer join)。如果只把左边关系R中要舍弃的元组保留就叫做左外连接(Left outer join或Left join),如果只把右边关系S中要舍弃的元组保留就叫做右外连接(Right outer join或Right join)。

    在这里插入图片描述

    展开全文
  • 本节是关系型数据库的数学基石——关系代数。所谓关系代数,本质是一种抽象查询语言,用对关系运算来表达查询。任何关系运算的输出总是一...对关系代数来说,两个元组(假设为R和S)要进行运算,需要满足一些要求.

    本节是关系型数据库的数学基石——关系代数。所谓关系代数,本质是一种抽象查询语言,用对关系的运算来表达查询。任何关系运算的输出总是一个关系。关系代数描述了关系之间的数学运算,是SQL语句查询的基础,虽然相对鼓枯燥一些,但却重要。说白了,内容其实也不多,重点掌握一些运算,且能解决一些查询问题即可。

    传统的关系运算

    传统关系运算,其实就是离散数学-集合中所学的一些运算:并、差、交、笛卡尔积。

    学过集合论的都觉得并非常简单,确实如此。对关系代数来说,两个元组(假设为R和S)要进行并运算,需要满足一些要求:

    • R和S具有相同的目n(即两个关系都有n个属性)
    • 相应的属性取自同一个域

    数学形式表达为:R∪S = { t | t ∈ R∨t ∈S }

    例如,有如下的R关系:
    在这里插入图片描述
    有如下的S关系:
    在这里插入图片描述
    则R∪S的结果关系为:
    在这里插入图片描述

    两个关系进行差运算,需要满足的条件和并运算时一样的:

    • 具有相同的目n
    • 相应的属性取自同一个域

    数学形式表达为:R -S = { t | t∈R∧t ∉ S }

    如果R和S关系还是和上面一样,则R-S的结果集为:
    在这里插入图片描述

    两个关系进行交运算,需要满足的条件和并运算时一样的:

    • 具有相同的目n
    • 相应的属性取自同一个域

    数学形式表示为:

    • R∩S = { t | t ∈ R∧t ∈S }
    • R∩S = R –(R-S)=S -(S-R)

    如果R和S关系还是和上面一样,则R∩S的结果集为:
    在这里插入图片描述

    笛卡尔积

    设R为n目关系,有k1个元组,S为为m目关系,有k2个元组,则R x S的结果关系为:

    • 列:(n+m)列元组的集合
    • 行:k1×k2个元组

    数学形式表达为:
    在这里插入图片描述
    如果R和S关系还是和上面一样,则R x S的结果集为:
    在这里插入图片描述

    笛卡尔积如果运用在实际例子上,会有很多元组是冗余的。需要我们对笛卡尔积的关系进行进一步筛选,涉及到后面知识。

    这里简单提一下SQL,SQL对并、差、交、笛卡尔积都提供了支持(注意我这里说SQL,并不指MySQL)。

    • 并:select * from A union B
    • 差:select * from A except B
    • 交:select * from A intersect B
    • 笛卡尔积:select * from A, B

    注:MySQL并无except和intersect的用法。

    专门的关系运算

    专门关系运算包括:选择、投影、连接和除运算。我们需要先引入几个记号,便于后续说明。

    在这里插入图片描述

    最后一个概念是象集,可以结合离散数学的象理解:给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集为:Zx={ t[Z] | t ∈R,t[X]=x},表示R中属性组X值为x的诸元组在Z上分量的集合。

    选择

    选择,就是要将符合条件的元组(从行的角度)筛选出来,其数学形式表达如下:σF( R ) = {t | t∈R∧F(t)= ‘真’},一般来说,选择的条件是bool类型的运算符,包括<,>,=,<>等,bool表达式的连接可以采用上面讲过的传统关系运算符。

    投影

    所谓投影,就是从列的角度出发,从R中选择出若干属性列组成新的关系。其数学形式表达如下:πA( R ) = { t[A] | t ∈R }

    连接(θ连接)

    连接,顾名思义就是连接多个关系结果进行运算,多个关系结果可以怎么得到?通过笛卡尔积运算即可获得。
    连接运算就是要从两个关系的笛卡尔积中选取属性间满足一定条件的元组,数学形式如下:
    在这里插入图片描述
    其中,

    • A和B:分别为R和S上度数相等且可比的属性组
    • θ:比较运算符

    在连接运算中,有两种特殊的重要连接类型:
    第一类是等值连接,也就是θ为=的情况,从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。
    对等值连接来说,SQL语句可以有如下的书写方式:
    select * from A, B where A.x = B.y
    select * from A join B on A.x = B.y
    select * from A inner join B on A.x = B.y
    平时见到第一种的情况比较多。

    第二类是自然连接。在等值连接中,会出现分量相同的情况,而自然连接就是自然地将这些重复冗余的分量去除。且自然连接规定了两个关系中进行比较的分量必须是相同的属性组。其数学形式如下:
    在这里插入图片描述
    对自然连接来说,SQL语句可以有如下的书写方式:
    select * from A natural join B

    下面是连接运算的一些例子,假设有如下的R和S关系表:
    在这里插入图片描述
    在这里插入图片描述
    在连接A关系表和B关系表的时候,并不是总是能找到A关系表的一项,与B关系表的某一项对应,就像上面自然连接,R的(a2, b4,12)就在连接中消失了,这种元组我们把它称作悬浮元组。因此,给悬浮元组的定义是:两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。

    根据对悬浮元组处理方式的不同,自然连接又分为:

    • 外连接:把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null)
    • 左外连接:只保留左边关系R中的悬浮元组
    • 右外连接:只保留右边关系S中的悬浮元组

    对外连接来说,SQL语句可以有如下的书写方式:
    select * from A (left / right) outer join B on A.x = B.y

    对于上面R和S关系表来说,
    在这里插入图片描述

    除运算,最初学习起来相对没有那么直观。我们一步步来建立概念:

    • 规定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。
    • 除运算得到的仍然是一个关系
    • 这个关系的元组在X上分量值x 的象集Yx包含S在Y上投影的集合
    • 数学形式表达为:
      在这里插入图片描述
      来看一个简单例子,假设R和S关系表如下:
      在这里插入图片描述
      R和S具有相同的属性B和C,除运算要做的事情如下:
    • 找出S中(B,C)集合,为{ ( b1, c2 ), ( b2, c1 ), ( b2, c3 ) }
    • 对于R中的每个Ai,找到其各自对应的象集,使得这个象集包含{ ( b1, c2 ), ( b2, c1 ), ( b2, c3 ) }
    • 只有a1的象集包含了{ ( b1, c2 ), ( b2, c1 ), ( b2, c3 ) },因此除法的结果如下:
      在这里插入图片描述

    关于关系代数,我们就介绍这么多。关系代数,说难不难,说容易也不容易,关键还是得多思考,勤做题,保持关系运算,特别是专门关系运算的感觉。

    展开全文
  • 数据库之关系代数(理论部分)

    千次阅读 2006-05-23 22:17:00
    1.关系代数简介关系代数是一种抽象的...集合运算集合运算一般是从行的角度上进行运算,常见集合的运算:并(Union)定义:设关系R和关系S具有相同数目的列n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系

    1.关系代数简介

    关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。
    关系代数的运算对象是关系,运算结果亦为关系
    2.关系代数的运算
    (1).集合运算
    集合运算一般是从行的角度上进行运算,
    常见集合的运算:
    并(Union)
    定义:设关系R和关系S具有相同数目的列n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成。其结果关系仍为n目关系。记作:
    R∪ S ={t | t∈R ∨ t∈S}
    理解:首先选择R中的所有元组,然后选择S中不属于R的元组。
    举例:如图2.6(c)
     
    差(Difference)
    定义:设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:
    R-S ={t|t∈R ∧ フt∈S}
    举例:如图2.6(d)
     
    三、交(Intersection)
    定义:设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:
    R∩S ={t|t∈R ∧ t∈S}
    举例:如图2.6(e)
     
    四、广义笛卡尔积(Extended Cartesian Product)
    定义:两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组
     

     

    (2).关系运算
    关系运算包括:选择、投影、连接、除等
    选择:
    选择(Selection)
    定义:选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:
    其中F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’。
    注:逻辑表达式F的基本形式为:
    θ表示比较运算符,它可以是>、≥、<、≤、=或≠。X1、Y1等是属性名或常量或简单函数。属性名也可以用它的序号来代替。φ表示逻辑运算符,它可以是フ、∧或∨。[ ]表示任选项,即[ ]中的部分可以要也可以不要,…表示上述格式可以重复下去。
    因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算
    理解:选择部分行
    投影(Projection)
    定义:关系R上的投影是从R中选择出若干属性列组成新的关系。记作:
    其中A为R的属性列。
    理解:选择部分列
    注:投影之后由于产生了完全相同的行,应取消这些完全相同的行
    连接(Join)
    定义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:
    其中A和B分别为R和S上度数相等且可比的属性组。θ是比较运算符。连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组。
    理解:从笛卡尔积中选择满足一定条件的部分行。
    说明:
    ① 连接运算中有两种最为重要也最为常用的连接:等值连接(equi-join)和自然连接(Natural join)。
    ② θ为“=”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。即等值连接为:
    ③ 自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记作:
    除(Division)
    定义:给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:
    其中YxxR中的象集
    展开全文
  • R或者S中元素的集合,一个元素在并集中只出现一次,即使它在两个集合中都存在RS,在R或者S中都存在的元素的集合RS。存在于集合R中且不存在于S中的元素的集合。注意:RS不等于SR。2、union SQL提供了union...

    基本表:http://blog.csdn.net/qinyushuang/archive/2010/12/31/6110245.aspx

    1、关系的集合运算

    • R并S。R或者S中元素的集合,一个元素在并集中只出现一次,即使它在两个集合中都存在
    • R交S,在R或者S中都存在的元素的集合
    • R差S。存在于集合R中且不存在于S中的元素的集合。

    注意:R差S不等于S差R。

     

     

    2、union 

    SQL提供了union运算符,对集合进行关系并运算,但是没有直接提供集合交和集合差的操作,可以用其他方法来实现。

    eg:在student表中,查询选修了1号或者10号课程的学生的学号,姓名,所在系信息。

     

    查询结果:

    上面的例子用or来实现如下:

     

    查询结果:

    观察上面两组结果可以知道:or运算符的结果比用union运算符的结果多出了两条重复的记录。因为集合操作自动去除重复的元组。而or运算符则不具备这个功能。当然也可以用distinct关键字去除上面结果中重复的记录。

    另外,如果使用union运算符想要保留重复的记录的话,可以在union后面使用all关键字指明。即在union后加了all关键字后,结果和上面使用or的结果 是一样的。

     

    eg2:对不同表的不同字段采用union运算符

    在student表和teacher表中,查询选修了1号或者10号课程的学生姓名,所在系,课程号信息,以及1号或者10号课程的教师的姓名,所在系,课程号信息。

     

    可见对于union运算符,只要求列的类型匹配即可,列名是可以不同的,如上面例子中的sname和tname;

    如果要对union运算后的结果排序,可以在order by 后用序号的形式,这样就不用考虑结果存在列名问题。当然如果给不同列名取了相同的列名,则也不存在这个问题。

     

    eg3:多表连接的综合运用

    从student表中查询至少修过“计算机入门”或者“生物工程概论”两门课程中的一门的学生学号,姓名及所修课程名和课程成绩

    分析:课程号和课程成绩在course表中,而学生的学号和姓名信息在student表中,显然需要对两个表根据cno进行等值内连接,分别查询两门课程之一的信息,而后进行集合并运算

    查询代码如下:

     

    查询结果如下:

     

    3、多表连接的注意问题:

    • 连接多个表时,可以认为它们被连接成了一个表,尽管没有创建一个物理表,但是SQL连接创建了很多的虚表,当连接表时,可以在每个表中选择任何一列
    • 关于表的连接数量问题。取决于具体的数据库系统,但有一点是可定的,连接的表越多,相应时越长
    • 进行多表连接时要注意指明连接条件 ,如果不指明条件,系统会对多表进行笛卡尔积,会产生巨大的记录数量
    • 根据不同的需求,选择不同的连接类型

     

     

    展开全文
  • 连接 是从两个关系的笛卡尔积中选取属性间满足一定条件的元组;...笛卡尔积对两个关系 R S 进行操作,产生的关系中元组个数为两个关系中元组个 数之积; 等值连接 等值连接是关系运算-连接运算的一种常用的连...
  • 【自考】之数据库系统原理

    千次阅读 热门讨论 2018-10-14 10:48:35
    1.1自然连接(找出两个关系的公共字段进行比较,相同值连接) S1S2做自然连接 把相同值的连接成一条记录,结果只有No0001一致 除法运算 概念: 除:设有关系R(X,Y)与关系S(Z),其中X、Y、Z为属性集合。...
  • 你必须知道的495C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...
  • 数据的逻辑结构是数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...
  • 《你必须知道的495C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...
  • 你必须知道的495C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    3.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一 个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated expression; . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 目录iii ...
  • 线性表的结点构成了一个序列,序列中两个相邻结点eiei-1,称前者是后者的前驱结点,后者是前者的后继结点。 线性表最重要的性质是线性表中结点相对位置是确定的。 线性表的结点也称为表元,或称为记录,要求...
  • 《数据结构 1800题》

    热门讨论 2012-12-27 16:52:03
    6.数据结构中评价算法的两个重要指标是(时间复杂度空间复杂度) 【北京理工大学 2001 七、1(2分)】 7. 数据结构是研讨数据的_(1)物理结构__(2)逻辑结构 _,以及它们之间的相互关系,并与这种结构定义...
  • (20) 数据库设计包括两个方面的设计内容,它们是(A) A. 概念设计逻辑设计 B. 模式设计内模式设计 C. 内模式设计物理设计 D. 结构特性设计行为特性设计 (21) 下列叙述中正确的是(A) A. 线性表是线性结构 B. ...
  •  JAVA平台提供了两个类:StringStringBuffer,它们可以储存操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...
  • (20) 数据库设计包括两个方面的设计内容,它们是______。(A) A. 概念设计逻辑设计 B. 模式设计内模式设计 C. 内模式设计物理设计 D. 结构特性设计行为特性设计 (21) 算法的空间复杂度是指______。(D) A. ...
  • 在19世纪中,数学的 趋于更高抽象的 许多开发,带来了新的挑战悖论,迫切需要数学真理的本性准则,进行更深入、更系统的考察,以及将各个不同的数学分支 统一成一连贯的整体。    The systematic search ...
  • 类似地,如果使用三元组方式,我们只需要至少出现在一个购物篮中的两个频繁项组成的项对进行计数。 第二遍扫描的技术细节如下: (1)每个购物篮,在频繁项集表中检查哪些项是频繁的; (2)通过一个双重循环...
  • 类似地,如果使用三元组方式,我们只需要至少出现在一个购物篮中的两个频繁项组成的项对进行计数。 第二遍扫描的技术细节如下: (1)每个购物篮,在频繁项集表中检查哪些项是频繁的; (2)通过一个双重循环...
  • java 面试题 总结

    2009-09-16 08:45:34
    28、设计4个线程,其中两个线程每次j增加1,另外两个线程j每次减少1。写出程序。 以下程序使用内部类实现线程,j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static ...
  • SQL语法大全

    2014-03-30 11:00:11
    以上几游标类型将直接影响到Recordset对象所有的属性方法,以下列表说明他们之间的区别。 ------------------------------------------------------------- Recordset属性 adOpenForwardOnly adOpenKeyset ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

对r和s两个关系进行集合运算