通知
此博客运行在jpress系统上,如果你喜欢此博客模板,请加QQ群:1061691290(whimurmur模板/jpress插件),免费下载使用

数据库系统概论基础6 关系代数

956人浏览 / 0人评论 | 作者:whisper  | 分类: 数据库系统概论  | 标签: 数据库系统概论  | 

作者:whisper

链接:http://proprogrammar.com:443/article/503

声明:请尊重原作者的劳动,如需转载请注明出处


    关系代数

    关系数据库语言的分类

    1. 关系代数语言

  • 用对关系的运算来表达查询要求

    2. 关系演算语言:用谓词来表达查询要求

  • 元组关系演算语言

    谓词变元的基本对象是元组变量
    代表: APLHA, QUEL

  • 域关系演算语言

    谓词变元的基本对象是域变量
    代表: QBE
    2. 具有关系代数和关系演算双重特点的语言

  • 代表: SQL(Structured Query Language)

    关系代数

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

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

    1 传统的集合运算

    关系代数(传统的集合运算)

    一些记号

    1 并(Union)

    R和S

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

    R∪S

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

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

    2 差(Difference)

    R和S

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

    R - S

  • 仍为n目关系, 由属于R而不属于S的所有元组组成

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

    3 交(Intersection)

    R和S

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

    R∩S

  • 仍为n目关系, 由既属于R又属于S的元组组成

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

    4 笛卡尔积(Cartesian Product)

    R: n目关系, k1个元组; S: m目关系, k2个元组
    R×S
    列: (n+m) 列元组的集合

  • 元组的前n列是关系R的一个元组
  • 后m列是关系S的一个元组

    行: k1×k2个元组

    关系代数(专门的集合运算)

    学生-课程数据库

    学生关系Student、课程关系Course和选修关系SC

    专门的关系运算

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

    1. 选择(Selection)

    选择又称为限制(Restriction)
    选择运算符的含义
    在关系R中选择满足给定条件的诸元组

    F:选择条件, 是一个逻辑表达式, 取值为“真”或“假”

  • 基本形式为: X1θY1
  • θ表示比较运算符, 它可以是>, ≥, <, ≤, =或<>

     选择运算是从关系R中选取使逻辑表达式F为真的元组, 是从行的角度进行的运算

    2. 投影(Projection)

    从R中选择出若干属性列组成新的关系

    投影操作主要是从列的角度进行运算

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

    3. 连接(Join)

    连接也称为θ连接
    连接运算的含义
    从两个关系的笛卡尔积中选取属性间满足一定条件的元组

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

    连接运算从R和S的广义笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组

    两类常用连接运算
    等值连接(equijoin)

  • θ为“=” 的连接运算称为等值连接
  • 从关系R与S的广义笛卡尔积中选取A、 B属性值相等的那些元组, 即等值连接为:

 

    自然连接(Natural join)

  • 自然连接是一种特殊的等值连接

    两个关系中进行比较的分量必须是相同的属性组
    在结果中把重复的属性列去掉

  • 自然连接的含义

    R和S具有相同的属性组B

    一般的连接操作是从行的角度进行运算。

    自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

    悬浮元组(Dangling tuple)

    两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了, 这些被舍弃的元组称为悬浮元组。

    外连接(Outer Join)
    如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(Null),就叫做外连接
    左外连接(LEFT OUTER JOIN或LEFT JOIN)

  • 只保留左边关系R中的悬浮元组

    右外连接(RIGHT OUTER JOIN或RIGHT JOIN)

  • 只保留右边关系S中的悬浮元组

 

    4. 除运算(Division)

    给定关系R (X, Y) 和S (Y, Z), 其中X, Y, Z为属性组。
    R中的Y与S中的Y出自相同的域集。
    R与S的除运算得到一个新的关系P(X), P是R中满足下列条件的元组在X 属性列上的投影:
    元组在X上分量值x 的象集Y
    x包含S在Y上投影的集合, 记作:

    注:等值连接是一个相等关系,除操作是多个相等关系

    在关系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}

    关系代数(综合训练)

    学生-课程数据库

    学生关系Student、课程关系Course和选修关系SC

    综合举例

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

    [例2.11] 查询选修了2号课程的学生的学号。

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

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

    问题

    关系代数的表达能力?
    举几个关系代数不能表达的查询的例子


亲爱的读者:有时间可以点赞评论一下

点赞(0) 打赏

全部评论

还没有评论!