当前位置: 首页 > 面试题库 >

关系代数-Cartesian Product vs Natural Join?

景安翔
2023-03-14
问题内容

我正在为考试而学习,没有找到确定x要使用笛卡尔乘积还是要使用自然联接的可靠标准|X|

我想出了一个粗略的指导:

“如果需要投影与要连接的表中的属性具有相同名称的属性,则必须使用x并声明要投影的表名称:tableA.colname1 = tableB.colname1

但是,这并没有遵循我的笔记中的某些解决方案,并且我的讲师似乎x与上述约定结合使用或|x|互换使用。

有没有人能遵循一个规则来定义一个相对于另一个的使用?

以以下模式为例(仅与为简短起见而引用的问题相关的模式):

takes(ID, course_id, sec_id, semester, year, grade)
student(ID, name, dept_name, tot_cred)

问)找出参加过2011年春季或2011年秋季课程的所有学生的姓名。

我的回答尝试:

π name(σ semester="Spring" ^ year=2011(takes ⋈ student)) ∪ π name(σ semester="Autumn" ^ year=2011(takes ⋈ student))

实际答案:

π name(σ semester="Spring" ^ year=2011 ^ takes.ID=student.ID(takes x student)) ∪ π name(σ semester="Autumn" ^ year=2011 ^ takes.ID=student.ID(takes x student))

谁能提供原因?

在我看来,自然加入将解决takes.ID=student.ID


问题答案:

据我了解,自然连接是经过预测的,经过过滤的笛卡尔积:

  • 你拿笛卡尔积,然后
  • 选择它,以便具有相同名称的列中的值具有相同的值,并且
  • 对其进行投影,以便所有列都具有不同的名称。

在这种假设下,您的答案与实际答案同构。

要看到这一点,您可能需要将自然联接扩展到上述算子序列,并使用关系代数定律将它们浮动。您会看到,由于到的投影name,投影消失了,并且选择标准与上面的选择融合了起来。即使您从未更改自己答案的含义,您最终还是会得到与实际答案完全相同的树!

我可以想到您的讲师可以交替使用这些概念的一个原因:您的讲师希望您了解这些概念 可以 互换使用,因为“自然连接只是捷径”(尽管这值得商bat)。



 类似资料:
  • 主要内容:1. 选择操作,2.项目操作,3.联合操作,4. 集合交集,5. 集合差集,6. 笛卡尔积,7. 重命名操作关系代数是一种过程查询语言,它提供了一步一步的过程来获取查询的结果。 它使用运算符来执行查询。 关系操作的类型 1. 选择操作 选择(select)操作选择满足给定谓词的元组。 它由西格玛(σ)表示。 其中: 用于选择预测 用于关系 用作命题逻辑公式,可以使用以下连接符:和。这些关系可以用作关系运算符,如:,,,, 和 。 例如 : LOAN关系 BRANCH_NAME LOAN

  • 问题内容: 我目前正在从事一项作业分配,需要进行选择,该选择会抽出一个元素,该元素包含一个与所有其他记录相比具有最大值的特定属性。我已经在线阅读了许多资料,这些资料引用了称为“最大值”的“聚合”关系代数函数,但是它们没有描述它如何使用基本运算符来工作。如何选择包含最大值的属性? 问题答案: 仅使用基本运算符就可以很好地表达聚合函数。这是一件很整洁的事情。 假设我们有一个表T,我们想找到其“值”字段

  • 问题内容: 是否存在与SQL表达式等效的关系代数? 例如,如果我有关系: 我想删除A1在A2中的关系中的所有元组。在SQL中,我可能会查询: 真正令我困扰的是如何在关系代数选择运算符内进行子查询,这可能吗?: 蟽一些子查询在这里R 问题答案: 在关系代数中,可以使用笛卡尔乘积来实现。就像是: 的R -蚁A1,A2(蟺A11,A21(蟽A11 = A22(蚁A11,A21(R)X蚁A12,A22(R

  • 本文向大家介绍Hive与关系型数据库的关系?相关面试题,主要包含被问及Hive与关系型数据库的关系?时的应答技巧和注意事项,需要的朋友参考一下 没有关系,hive是数据仓库,不能和数据库一样进行实时的CURD操作。 是一次写入多次读取的操作,可以看成是ETL工具。

  • 问题内容: 在数据库中建立适当的关系对数据完整性以外的其他功能没有帮助吗? 它们会改善还是阻碍性能? 问题答案: 我不得不说,适当的关系将比省略它们更好地帮助人们理解数据(或数据的意图),特别是因为维护它们的总成本非常低。 它们的存在不会影响性能,除非是在体系结构方面(正如其他人指出的那样,数据完整性有时会导致外键冲突,这可能会产生某些影响),但是IMHO的许多好处(如果正确使用,则不胜枚举)。

  • 问题内容: 我正在寻找有关关系代数中theta join概念的清晰,基本的解释,并且可能需要一个示例(也许使用SQL)来说明其用法。 如果我正确理解,则theta联接是添加了条件的自然联接。因此,尽管自然联接在相同名称的属性之间强制相等(并删除重复的属性?),但是theta联接执行相同的操作,但是增加了在某种情况下。我有这个权利吗?以简单的术语(对于非数学家)的任何清楚的解释将不胜感激。 另外(很