作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在准备考试,但未能找到一个可靠的标准来确定是否使用笛卡尔积 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 年 Spring 或 2011 年秋季授课类(class)的所有学生的姓名。
我的回答尝试:
π 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
?
最佳答案
据我所知,自然连接是一个投影的、过滤的笛卡尔积:
在此假设下,您的答案与实际答案同构。
要看到这一点,您可能需要将自然连接扩展为上述运算符序列,并使用关系代数定律将它们 float 。您将看到投影由于投影到 name
而消失,并且选择标准与上面的选择融合。即使您从未改变过自己答案的含义,您最终也会得到与实际答案完全相同的树!
我可以想到你的讲师互换使用这些概念的一个原因:你的讲师希望你理解这些概念可以可以互换使用,因为“自然连接只是一种捷径”(尽管这是有争议的)。
关于sql - 关系代数 - 笛卡尔积与自然连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127306/
我是一名优秀的程序员,十分优秀!