精华内容
下载资源
问答
  • 传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算 并:R∪S={t | t∈R ∨ t∈S} 要相同列 差:R-S={t | t∈R ∧ t∉S} 交:R∩S={t | t∈R ∧ t∈S} 笛卡尔积:R×S={tr⌒ts | tr∈R ∧ ts∈

    2.2 关系操作

    2.2.1 基本的关系操作

    1. 查询:选择、投影、连接、除、并、交、差
    2. 数据更新:插入、删除、修改
    3. 查询的表达能力是其中最主要的部分
    4. 选择、投影、并、差、笛卡尔积是5种基本操作

    2.4 关系代数

    2.4.1 传统的集合运算

    传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算

    并:R∪S={t | t∈R ∨ t∈S}

    要有相同列

    差:R-S={t | t∈R ∧ t∉S}

    交:R∩S={t | t∈R ∧ t∈S}

    笛卡尔积:R×S={tr⌒ts | tr∈R ∧ ts∈S}

    ​ R

    A B C
    a1 b1 c1
    a1 b2 c2
    a2 b2 c1

    ​ S

    A B C
    a1 b2 c2
    a1 b3 c2
    a2 b2 c1

    ​ R×S

    R.A R.b R.c S.A S.b S.c
    a1 b1 c1 a1 b2 c2
    a1 b1 c1 a1 b3 c2
    a1 b1 c1 a2 b2 c1
    a1 b2 c2 a1 b2 c2
    a1 b2 c2 a1 b3 c2
    a1 b2 c2 a2 b2 c1
    a2 b2 c1 a1 b2 c2
    a2 b2 c1 a1 b3 c2
    a2 b2 c1 a2 b2 c1

    2.4.2 专门的关系运算

    专门的关系运算包括选择、投影、连接、除运算等

    R:关系

    t∈R:t是R的一个元组

    t[Ai]:元组t中相应于属性Ai的一个分量

    tr⌒ts:元组的连接

    象集

    x1 z1
    x1 z2
    x1 z3
    x2 z2
    x2 z3
    x3 z1
    x3 z3

    x1在R中象集:ZX1 = {Z1, Z2, Z3}

    x2在R中象集:ZX2 = {Z2, Z3}

    x3在R中象集:ZX3 = {Z1, Z3}

    选择

    F®={t | t ∈ R ∧ F(t) = ‘真’}

    F是选择条件,取逻辑值“真”或“假”

    F的基本形式 X1θY1

    θ可以是>, ≥, <, ≤, =或<>(≠)

    举例:

    Sdept=‘IS’(Student) 从Student表查询所在系是IS的元组

    Sage<20(Student) 从Student表查询年龄小于20的元组

    投影

    A®={t[A] | t ∈ R}

    A为R中的属性列

    举例:

    Sname,Sdept(Student) 从Student表提取Sname和Sdept两列属性

    注意:投影会取消重复元组P53

    连接:

    R▷◁S={tr⌒ts | tr ∈ R ∧ ts ∈ S ∧ tr[A] θ ts[B]}

    AθB

    连接分为三部分:普通连接,等值连接,自然连接 直接上图

    ​ R

    A B C
    a1 b1 5
    a1 b2 6
    a2 b3 8
    a2 b4 12

    ​ S

    B E
    b1 3
    b2 7
    b3 10
    b3 2
    b5 2

    ​ R▷◁S(普通连接)

    ​ C<E

    A R.B C S.B E
    a1 b1 5 b2 7
    a1 b1 5 b3 10
    a1 b2 6 b2 7
    a1 b2 6 b3 10
    a2 b3 8 b3 10

    意思是用R的C和S的E作比较,如果C<E的话就把两张表连接在一起,为了区分两个表中的B,用R.B和S.B区分

    等值连接:

    A R.B C S.B E
    a1 b1 5 b1 3
    a1 b2 6 b2 7
    a2 b3 8 b3 10
    a2 b3 8 b3 2

    R.B = S.B 时连接

    自然连接:

    A B C E
    a1 b1 5 3
    a1 b2 6 7
    a2 b3 8 10
    a2 b3 8 2

    去除多余的列

    外连接:

    A B C E
    a1 b1 5 3
    a1 b2 6 7
    a2 b3 8 10
    a2 b3 8 2
    a2 b4 12 NULL
    NULL b5 NULL 2

    把匹配不上的用NULL代替

    左外连接:去除外连接倒数第一行,保留自己有的(倒数第二行)

    右外连接:去除外连接倒数第二行,保留自己有的(倒数第一行)

    除运算:

    R÷S={tr[X] | tr ∈ R ∧ ∏Y(S)∈YX}

    YX为x在R中的象集,x=tr[X]\

    找出相同的列,能全除完就符合条件。

    ​ R

    A B C
    a1 b1 c2
    a2 b3 c7
    a3 b4 c6
    a1 b2 c3
    a4 b6 c6
    a2 b2 c3
    a1 b2 c1

    Za1={(b1, c2), (b2, c3), (b2, c1)}

    Za2={(b3, c7), (b2, c3)}

    Za3={(b4, c6)}

    Za4={(b6, c6)}

    S

    B C D
    b1 c2 d1
    b2 c1 d1
    b2 c3 d2

    ​ R÷S

    A
    a1

    例2.10】查询至少选修1号课程和3号课程的学生号码

    ​ Student

    学号Sno 姓名Sname 性别Ssex 年龄sage 所在系sdept
    201215121 李晨 20 CS
    201215122 刘晨 19 CS
    201215123 王敏 18 MA
    201215125 张立 19 IS

    ​ Course

    课程号cno 课程名cname 先行课cpno 学分ccredit
    1 数据库 5 4
    2 数学 2
    3 信息系统 1 4
    4 操作系统 6 3
    5 数据结构 7 4
    6 数据处理 2
    7 PACAL语言 6 4

    ​ SC

    学号sno 课程号cno 成绩grade
    201215121 1 92
    201215121 2 85
    201215121 3 88
    201215122 2 90
    201215122 3 80

    根据题意“查询至少选修1号课程和3号课程的学生号码”,建立一个临时关系k:

    Cno
    1
    3

    题目求学生号码,也就是Sno;用除运算解决该问题。有SNO又有CNO的查表可得是SC,筛选列的是∏, 答案就出来了:

    Sno,Cno(SC) ÷ k

    答案是{201215121}

    例2.11】查询选修了2号课程的学生的学号

    建立一个临时关系k:

    CnO
    2

    解题思路和上一题差不多

    Sno,Cno(SC) ÷ k

    还有一种解法

    Sno(☌Cno=‘2’(SC))

    例2.12】查询至少选修了一门其直接先行课为5号课程的学生姓名

    看Course表,只有Cpno='5’符合条件。接着看题意,求得是学生姓名,有Sname又有Cpno,没有这种表,所以需要连接。

    Sname(☌Cpno=‘5’(Course)▷◁SC▷◁∏Sname,Sno(Student))

    例2.13】查询选修了全部课程的学生号码和姓名

    Sno,Sname(☌Cno=‘1’∨’2’∨’3’(SC)▷◁Student)

    展开全文
  • 传统的集合运算是从关系的“水平”方向即行的角度进行 专门的关系运算不仅涉及行而且涉及列。 1、传统的集合运算 常用的关系操作: 查询:选择、投影、连接、除、并、交、差 数据更新:插入、删除、修改 查询的表达...

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

    关系代数:
    运算对象是关系
    运算结果亦为关系
    关系代数的运算符有两类:集合运算符和专门的关系运算符。

    传统的集合运算是从关系的“水平”方向即行的角度进行
    专门的关系运算不仅涉及行而且涉及列。

    在这里插入图片描述
    1、传统的集合运算
    常用的关系操作:
    查询:选择、投影、连接、除、并、交、差
    数据更新:插入、删除、修改
    查询的表达能力是其中最主要的部分
    选择、投影、并、差、笛卡尔基是5种基本操作

    关系操作的特点:
    集合操作方式:操作的对象和结果都是集合,一次一集合的方式

    ①:并(Union)
    R和S的要求:
    具有相同的目n(即两个关系都有n个属性)
    相应的属性取自同一个域

    R∪S
    仍为n目关系,由属于R或属于S的元组组成

    例如:
    在这里插入图片描述
    ②:差(Difference)
    R和S的要求:
    具有相同的目n
    相应的属性取自同一个域

    R - S
    仍为n目关系,由属于R而不属于S的所有元组组成
    R -S = { t|tR∧tS }
    就是寻找R中有但是S中没有的元组。
    举例:
    在这里插入图片描述
    ③:交(Intersection)
    R和S的要求:
    具有相同的目n
    相应的属性取自同一个域

    R∩S
    仍为n目关系,由既属于R又属于S的元组组成
    在这里插入图片描述

    举例:
    在这里插入图片描述
    ④:笛卡尔积(Cartesian Product)
    严格地讲应该是广义的笛卡尔积(Extended Cartesian Product)
    R: n目关系,k1个元组
    S: m目关系,k2个元组
    R×S (新的表是列数相加,行数相乘
    列:(n+m)列元组的集合
    元组的前n列是关系R的一个元组
    后m列是关系S的一个元组
    行:k1×k2个元组
    在这里插入图片描述
    举例:
    在这里插入图片描述
    2、专门的关系运算
    先引入几个记号
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1. 选择
    2. 投影
    3. 连接
    4. 除运算

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    ①:选择
    选择又称为限制(Restriction)
    选择运算符的含义:
    在关系R中选择满足给定条件的诸元组
    在这里插入图片描述
    F:选择条件,是一个逻辑表达式,取值为“真”或“假”
    基本形式为:XθY
    θ表示比较运算符,它可以是>,≥,<,≤,=或<>

    选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算
    在这里插入图片描述
    [例2.4] 查询信息系(IS系)全体学生。
    在这里插入图片描述
    结果:
    在这里插入图片描述
    [例2.5] 查询年龄小于20岁的学生。
    在这里插入图片描述
    结果:
    在这里插入图片描述
    ②:投影
    从R中选择出若干属性列组成新的关系
    在这里插入图片描述
    投影操作主要是从列的角度进行运算
    在这里插入图片描述

    投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

    [例2.6] 查询学生的姓名和所在系。
    即求Student关系上学生姓名和所在系两个属性上的投影
    在这里插入图片描述
    结果:
    在这里插入图片描述
    [例2.7] 查询学生关系Student中都有哪些系。
    在这里插入图片描述
    结果:
    在这里插入图片描述

    ③:连接
    连接也称为θ连接

    连接运算的含义:
    两个关系的笛卡尔积中选取属性间满足一定条件的元组
    在这里插入图片描述
    连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组 。

    两类常用连接运算:
    等值连接(equijoin) :
    在这里插入图片描述
    自然连接(Natural join) :自然连接是一种特殊的等值连接
    两个关系中进行比较的分量必须是相同的属性组
    在结果中把重复的属性列去掉

    自然连接的含义:R和S具有相同的属性组B
    在这里插入图片描述
    一般的连接操作是从行的角度进行运算。
    在这里插入图片描述
    自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

    [例5] 关系R和关系S 如下所示:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    悬浮元组(Dangling tuple)
    两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,这些被舍弃的元组称为悬浮元组。
    外连接(Outer Join)
    如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
    左外连接(LEFT OUTER JOIN或LEFT JOIN)
    只保留左边关系R中的悬浮元组
    右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
    只保留右边关系S中的悬浮元组
    在这里插入图片描述
    在这里插入图片描述
    ④:除运算(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上投影的集合,记作:
    在这里插入图片描述
    除操作是同时从行和列角度进行运算

    在这里插入图片描述
    [例6] 设关系R、S分别为下图的(a)和(b),R÷S的结果为图©
    在这里插入图片描述
    分析:
    在关系R中,A可以取四个值{a1,a2,a3,a4}
    a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
    a2的象集为 {(b3,c7),(b2,c3)}
    a3的象集为 {(b4,c6)}
    a4的象集为 {(b6,c6)}

    S在(B,C)上的投影为
    {(b1,c2),(b2,c1),(b2,c3) }

    只有a1的象集包含了S在(B,C)属性组上的投影
    所以 R÷S ={a1}

    综合举例
    以学生-课程数据库为例 (P56):

    ==[例7] == 查询至少选修1号课程和3号课程的学生号码 。
    在这里插入图片描述
    [例2.10]续[例7]
    在这里插入图片描述
    [例2.11] 查询选修了2号课程的学生的学号。
    在这里插入图片描述
    [例2.12] 查询至少选修了一门其直接先行课为5号课程的学生姓名。
    在这里插入图片描述
    [例2.13] 查询选修了全部课程的学生号码和姓名。
    在这里插入图片描述
    【综合作业】
    查籍贯为“湖北武汉”的全体学生。

    查年龄大于19岁的全体男学生。

    求学号为“010101”的学生选修的课程名和学时。

    求选修”C语言”的学生学号和成绩。

    求选修“离散数学”课程的学生的学号和姓名

    求选修全部课程的学生学号和姓名。

    查学号为010102的学生已修课程号、名称

    查询选修了2号课程的学生的学号。

    在这里插入图片描述

    展开全文
  • 数据库关系代数

    2017-04-21 17:52:00
    传统的集合运算(基本的关系:选择、投影、并、差、笛卡尔积) ∪(并)、-(差)、笛卡尔积、∩(交)(其中:∩(交)可以通过∪(并)与-(差)的组合来表示) 并差交使用的前提是: 1.这三个操作符所操作的关系...

    关系代数

    传统的集合运算(基本的关系:选择、投影、并、差、笛卡尔积)

    ∪(并)、-(差)、笛卡尔积、∩(交)(其中:∩(交)可以通过∪(并)与-(差)的组合来表示)


    并差交使用的前提是:

    1.这三个操作符所操作的关系有相同的目(即:有相同数目的列属性)

    2.相应的属性取自同一个


    并交差都不改变关系的列数,但是笛卡尔积改变了关系的列数




    专门的关系运算


    选择、投影、连接、除

    1.选择(又称为限制)

    将符合筛选要求的元组显示出来(选择:只改变表元组的数目)




    2.投影

    从原有的表中选择出若干的列组成新的关系

    投影不仅仅改变的是列的数据,也可能改变元组的数目

    因为在进行投影的时候可能将原有的可以唯一的确定一个元组的列去掉之后,造成重复的行出现,从而导致投影之后元组的数目也跟着发生变化。




    3.连接

    等值连接(连接条件为=)

    从关系的笛卡尔积中选取A,B属性值相等的那些元组,即等值连接(不去除重复的列)

    自然连接

    与等值连接类似,但是不同点是自然连接将重复的列去掉了。


    外连接(所谓的左表右表:在sql语句中以from后的表为左表)

    左外连接:保留左表中的全部的信息,未匹配的用null代替

    右外连接:保留右表中的全部的信息,未匹配的用null代替


    4.除

    给定关系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上投影的集合。

    附加的内容:除法的推导

    1017814-20170604104815383-573231466.png

    除法公式的作用就是将在某一个前提下(这里以S为那个前提),哪种情况(哪种情况指代R中的内容)包含了前面S中的全部的情况,就将R中该情况(符合S中所有的要求的情况)保留。

    例子:设关系R(A,B,C),S(B,C,D),R/S?
    R与S的关系如下:
    1017814-20170526233825029-588148088.png

    a1的象集{(b1,c2),(b2,c3),(b2,c1)}

    a2的象集{(b3,c7),(b2,c3)}

    a3的象集{(b4,c6)}

    a4的象集{(b6,c6)}
    S在(B,C)上的投影为{(b1,c2),(b2,c1),(b2,c3)}
    最终的结果:
    1017814-20170526233857216-1723867798.png
    (个人理解:其中S在除法中表示一个标准,S中的内容(即:B,C,其中D是无关量,其中的B,C应该与R中的B,C相对应,A即所要求的内容)表示所要达到的标准,而A/S表示从A中筛选出符合标准的内容),A/S所的结果为达到S中的标准的内容

    注意:在关系代数中最基本的运算符号是∪(并)、-(差)、X(笛卡尔积)、Π(投影)、 σ 选择[∩(交)可以被并与差进行替换,÷可以被笛卡尔积、投影、差代替]

    转载于:https://www.cnblogs.com/gxcstyle/p/6744236.html

    展开全文
  • 68、你所知道的集合类都哪些?主要方法? 47 69、两个对象值相同(x.equals(y) == true),但却可不同的hash code,这句话对不对? 48 70、TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的...

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

其中传统的集合运算有