数分学习笔记-数据库系统:模型与语言(三)

1.关系代数概述

  • 基于集合,提供了一系列的关系代数操作:并、差、笛卡尔积(广义积)、选择、投影和更名等基本操作
  • 以及交、连接和关系除等扩展操作,是一种集合思维的操作语言
  • 关系代数操作以一个或多个关系为输入,结果是一个新的关系
  • 用对关系的运算来表达查询,需要指明所用操作,具有一定的过程性
  • 是一种抽象的语言,是学习其他数据库语言如SQL等的基础
  • 关系代数操作包括:
    • 集合操作:并、交、差、笛卡尔积
    • 纯关系操作:投影、选择、连接、除
  • 为什么要提出关系代数?(程序化的语言的基础就是关系代数)

 2.关系代数之基本操作

  • 并相容性
    • 参与运算的两个关系及其相关属性之间有一定的对应性、可比性或意义关联性
    • 定义:关系R与关系S存在相容性,当且仅当:
      • 关系R和关系S的属性数目必须相同
      • 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同
        • 假设:R(A1,A2,...,An),S(B1,B2,...,Bm)
        • R和S满足并相容性:n=m并且Domain(Ai)=Domain(Bi)
  • 并Union操作:
    • 定义:假设关系R和关系S是并相容的,则关系R和关系S的并运算结果也是一个关系,记作R∪S,它由或者出现在关系S中,或者出现在S中的元组构成。
    • 数学描述:R∪S={t | t∈R v t∈S},其中t是元组
    • 并运算是将两个关系的元组合并成一个关系,在合并时去掉重复的元组。
    • R∪S和S∪R运算的结果是同一个关系
    • 汉语中的“或者...或者...”通常意义是并运算的要求
    • 首先要准确理解汉语的查询要求,然后再找到正确的操作
  • 差 Difference
    • 定义:假设关系R和关系S是并相容的,则关系R与关系S的差运算结果也是一个关系,记作:R-S,它由出现在关系R中但不出现在关系S中的元组组成。
    • 数学描述:R-S={t | t∈R \wedge t \notin S},其中t是元组
    • R-S 与 S-R是不同的
    • 汉语中的“是...但不含...”通常意义是差运算的要求
  • 广义笛卡尔积(Cartesian Product)
    • 定义:关系R(<a1,a2,...,an>)与 关系S(<b1,b2,...,bn>)的广义笛卡尔积(简称广义积,或积或笛卡尔积)运算结果也是一个关系,记作:R×S,它由关系R中的元组与关系S的元组进行所有可能的拼接(或串接)构成。
    • 数学描述:R×S={<a1,a2,...,an,b1,b2,...,bn> | <a1,a2,...,an>∈R \wedge<b1,b2,...,bn>∈S }
    • R×S = S×R:R×S为R中的每一个元组都与S中的所有元组进行串接。S×R为S中的每一个元组都和R中的所有元组进行串接,结果是相同的。
    • 两个关系R和S,它们的属性个数分别为n和m(R是n度关系,S是m度关系),则笛卡尔积R×S的属性个数=n+m。即元组的前n个分量是R中元组的分量,后m个分量是S中元组的分量(R×S是n+m度关系)
    • 两个关系R和S。它们的元组个数分别为x和y(关系R的基数x,S的基数y),则笛卡尔积R×S的元组个数=x×y.(R×S的基数是x×y)
  • 选择Select
    • 定义:给定一个关系R,同时给定一个选择condition(简记con),选择运算结果也是一个关系,记作\sigmacon(R),它从关系R中选择出满足给定条件condition的元组构成。
    • 数学描述:\sigmacon(R)={ t | t∈R \wedge con(t)='真'}
    • 设R(A1,A2,...,An),t是R的元组,t的分量记为t[Ai],或简写为Ai
    • 条件con由逻辑运算符连接比较表达式组成
    • 逻辑运算符:\wedge\vee,(符号打不出来)或写为and,or,not
    • 比较表达式:X θ Y,其中X,Y是t的分量、常量或简单函数,θ是比较运算符,θ\in{><\geq\leqslant=\neq}
    • 选择操作从给定的关系中选出满足条件的行
    • 条件的书写很重要,尤其是当不同运算符在一起时,要注意运算符的有限次序,优先次序子高至低为{括弧;θ;not ; \wedge\vee}
  • 投影Project

    • 定义:给定一个关系R,投影运算结果也是一个关系,记作ΠA(R),它从关系R中选出属性包含在A中的列构成。
    • 投影操作从给定关系中选出某些列组成新的关系,而选择操作是从给定关系中选出某些行组成新的关系(如果投影后有重复的元组应该去掉)
  • 关系代数的基本书写思路:
    • 选出将用到的关系/表
    • 做“积”运算
    • 做选择运算保留所需要的行/元组
    • 做投影运算保留所需的列/属性

3.关系代数之扩展操作

  • 交(Intersection)
    • 定义:假设关系R和关系S是并相容的,则关系R和关系S的交运算结果也是一个关系,记作:R∩S,它由同时出现在关系R和关系S中的元组构成。
    • 数学描述:R ∩ S 和 S ∩ R运算的结果是同一个关系
    • 交运算可以通过差运算来实现:R ∩ S = R-(R-S)=S-(S-R)
    • 汉语中的“既...又...”,“...,并且...”通常意义是交运算的要求
    • 首先要准确理解汉语的查询要求,然后再找到正确的操作
  • 连接θ(θ-Join,theta-Join)
    • 投影与选择操作只是对单个关系(表)进行操作,而实际应用中往往涉及多个表之间的操作,这就是需要θ-连接操作
    • 连接操作:
      • 第一步:对两个表进行笛卡尔积
      • 第二步:从广义笛卡尔积中选取符合条件的元组
    • (更名操作)
    • PS:虽然在讲解θ-连接操作时,使用笛卡尔积然后再进行选择来得到θ-连接结果,这主要是方便大家理解,但是当引入连接操作后,DBMS可直接进行连接操作,而不必先形成笛卡尔积。
    • 等值连接(Equi-Join)(连接的特殊情况)
    • 自然连接(National-Join)
    • 注意连接操作和积操作的区别,连接操作默认有一个连接条件
  • 关系代数的基本书写思路:
    • 选出将用到的关系/表
    • 做“积”运算(可用连接运算替换)
    • 做选择运算保留所需的行/元组
    • 做投影运算保留所需的列/属性
  • 书写关系代数表达式的基本思路:
    • 检查是否涉及多个表,如不涉及,则可直接采用并、差、交、选择与投影,只要注意条件书写正确与否即可
    • 如涉及多个表,则检查:
      • 能否使用自然连接,将多个表连接起来(多数情况是这样的)
      • 如不能,能否使用等值或不等值连接(θ-连接)
      • 还不能,则使用广义笛卡尔积,注意相关条件的书写
    • 连接完后,可以继续使用选择、投影等运算,即所谓数据库的“选投联”操作

4.关系代数之复杂扩展操作

  • 除(Division)
  • 外连接(Outer-Join)
    • 定义:两个关系R与S进行连接时,如果关系R(或S)中的元组在S(或R)中找不到相匹配的元组,则为了避免该元组信息丢失,从而将该元组与S(或R)中假定存在的全为空值的元组形成连接,放置在结果关系中,这种连接称之为外连接(Outer Join)
    • 外连接 = 自然连接(或θ连接)+ 失配的元组(与全空元组形成的连接)
    • 外连接的形式:左外连接、右外连接、全外连接
      • 左外连接 = 自然连接(或θ连接)+左侧表中失配的元组(保持R元组不丢失)
      • 右外连接 = 自然连接(或θ连接)+右侧表中失配的元组(保持S元组不丢失)
      • 全外连接 = 自然连接(或θ连接)+两侧表中失配的元组(R和S元组都不丢失)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值