【问题标题】:What does the multiply operator do relational algebra?乘法运算符对关系代数有什么作用?
【发布时间】:2013-11-02 09:54:56
【问题描述】:

我是关系代数的新手。我在下面的表达式中找到了* 运算符

this 和 one 使用 join 有什么不同

【问题讨论】:

  • 什么符号表示什么运算符,每个运算符做什么以及“关系”是什么——“关系代数”是什么意思——取决于教科书和部分。(带点的代数通常与标题有关系这些列表可以具有重复的属性名称并具有 * 或 × 作为产品和 ⋈ 带有参数作为等值连接或 θ 连接。通常是真正的查询语言而不是实际上的代数。)

标签: relational-algebra


【解决方案1】:

* 应该更正确地写作×,因为它代表Cartesian product。此操作返回所有元组的集合,这些元组是来自每个操作数的元组的串联。连接将笛卡尔积过滤为仅在指定属性上具有匹配值的那些元组。如果联接是自然联接,如您的示例所示,则匹配的属性是具有相同名称的属性。

例如,给定如下两个关系RS如图:

R ( a, b, c )      S ( b, c, d )
  ( 1, 2, 3 )        ( 2, 7, 9 )
  ( 2, 4, 6 )        ( 5, 3, 4 )
  ( 3, 6, 9 )        ( 2, 3, 6 )

笛卡尔积R × S 是:

  ( R.a, R.b, R.c, S.b, S.c, S.d )
  ( 1,   2,   3,   2,   7,   9   )
  ( 1,   2,   3,   5,   3,   4   )
  ( 1,   2,   3,   2,   3,   6   )
  ( 2,   4,   6,   2,   7,   9   )
  ( 2,   4,   6,   5,   3,   4   )
  ( 2,   4,   6,   2,   3,   6   )
  ( 3,   6,   9,   2,   7,   9   )
  ( 3,   6,   9,   5,   3,   4   )
  ( 3,   6,   9,   2,   3,   6   )

自然连接R ⨝ S 是仅过滤到bc 值匹配的元组的产品:

  ( a, b, c, d )
  ( 1, 2, 3, 6 )

连接 R ⨝<sub>b</sub> S 是仅过滤到 b 值匹配的元组的产品:

  ( R.a, b,   R.c, S.c, S.d )
  ( 1,   2,   3,   7,   9   )
  ( 1,   2,   3,   3,   6   )

【讨论】:

  • “数据库系统基础”一书第 6 版在第 159 页(第 6 版,ISBN 0136086209)使用乘号 * 作为自然连接的替代表示法。
【解决方案2】:

在少数书籍中,自然连接用 astric(*) 表示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多