- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
theta join和 inner join 看起来和我一样:它们是笛卡尔积,然后是任意选择。还是我错过了他们的不同之处?谢谢。
上面的维基百科链接说 theta-join 有一个比较和两个属性。但这是不正确的。相反,theta-join 可以采用任何选择条件。
来自应该遵循SQL标准并且比维基百科更连贯和可靠的数据库系统概念:
The theta join operation is a variant of the natural-join operation that allows us to combine a selection and a Cartesian product into a single operation. Consider relations r(R) and s(S), and let theta be a predicate on attributes in the schema R ∪ S. The theta join operation r join_theta s is defined as follows:
r join_theta s = sigma_theta(r × s)
....
the join operations we studied earlier that do not preserve nonmatched tuples are called inner join operations, to distinguish them from the outer-join operations.
我仍然觉得它们是同一个概念。
Difference between a theta join, equijoin and natural join没有解释 theta 联接和内部联接之间的区别。
最佳答案
没有单一的“关系代数”。他们甚至在关系是什么方面也不同。 Codd 最初将 theta join 定义为采用二元运算符 (theta) 和两个属性。这就是人们通常所说的术语。摘自 Codd 1992 年出版的 The Relational Model for Database Management Version 2:
RB-14-RB-23 The Theta-Join Operator
The theta-join operator employs two R-tables as its operands. It generates as a result an R-table that contains rows of one operand (say S) concatenated with rows of the second operand (say T), but only where the specified condition is found to hold true. For brevity, this operator is often referred to as join.
The condition expressed in the join operator involves comparing each value from a column of S with each value from a column of T. The columns to be compared are indicated explicitly in the join command; these columns are called the comparand columns. This condition can involve any of the 10 comparators cited in the list [...]
(该术语通常用于此类运算符,但值可以代替属性。)
但 Codd 在那里自相矛盾,因为有“两个操作数”但也有“指定条件”。后来他又自相矛盾,说有一堆join统称为theta-joins,equi-join就是其中之一:
RB-25 The Natural Join Operator
As described in the last section, an equi-join generates a result in which two of the columns are identical in values, although different in column names. These two columns are derived from the comparand columns of the operands; of course, the columns may be either simple or composite. Of the 10 types of theta-join, equi-join is the only one that yields a result in which the comparand columns are completely redundant, one with the other. The natural join behaves just like the equi-join except that one of the redundant columns, simple or composite, is omitted from the result.
您引用的教科书使用该术语来指代不同的事物,其中 theta 是结合比较的 bool 表达式。这让人想起 SQL INNER JOIN ON complex conditions。对于 Codd,它是:
RB-24 The Boolean Extension of Theta-Join
请注意,您引用的教科书的 theta-join 不是代数运算符(将参数值映射到结果值)!它是一种非终结语言(其中比较表达式不表示值)。教科书实际上没有定义足够的代数运算符来实现其代数式查询语言。据称一组基本代数运算符包括 select 但它实际上只将其定义为一种语言非终端,因为一个操作数是一个条件表达式。
(这种草率是关系数据库教科书的典型特征。关系数据库领域存在一种模糊和困惑的文化。与该领域一样,该领域也是由 Codd 开创的。)
关于relational-database - theta join 和 inner join 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50897216/
我知道,关系数据库是一种数据库,其中一个表中的字段链接到其他表中的行,就像这样。 但我不明白这对我作为网络开发人员意味着什么! 据我所知,具有联接和嵌套选择的查询会降低性能(尤其是具有数十个联接的 d
我正在逻辑层面上设计一个数据库,以便稍后将其传递给程序员来交付。我只是粗略地了解它们的工作原理,所以我很难简洁地表达我的问题。这是我的问题: 我有一个名为 MEANINGS 的表。 我有一个名为 WO
在 Jira 中,将项目链接在一起既简单又实用。 例如,您可以轻松克隆一个问题:创建问题 100,将其克隆到 101。100 然后显示“这个问题有一个克隆:101”,然后 101 显示“这个问题是一个
所以我有这些实体: Group { id: number; name: string; persons: Person[]; } Person { name: stri
我真不敢相信,经过 5 年的 Rails 编程,我还没有想出一个好的解决方案来解决这个常见问题。另外,我假设这个特定问题有 100 个答案,但我不知道定义(关系?协会?等)来很好地搜索它。所以我们开始
我想在我的数据库记录中包含动态字段。 例如:我想构建一个应用程序供用户创建自己的表单。 用户可以创建以下表单: 个人资料: 全名 街道 工作 电话 首页 工作 移动 兴趣 兴趣 1 兴趣 2 兴趣 3
共有三个表:businesses、categories、categorizations、 CREATE TABLE businesses ( id SERIAL PRIMARY KEY, na
这个问题在这里已经有了答案: How can I vertically center a div element for all browsers using CSS? (48 个答案) 关闭 6
对于问题的错误措辞,我们深表歉意。我是 stackoverflow 的新手,也是 PIG 的新手,正在尝试自己进行实验。 我有一个处理 words.t 文件和 data.txt 文件的场景。 文字.t
关于像Cassandra 这样的反革命NoSQL 数据库的讨论很多。 , CouchDB , Hypertable , MongoDB , Project Voldemort , BigTable ,
我的处境与ICTylor's post here 类似。 . 所以我有: user1=User.find(1); user2=User.find(2); written=Micropost.where
尝试获取与事件关联的用户列表。这是我 Eloquent 模型: 用户.php: public function fbevents() { $this->belongsToMany('Fbeve
我有一个在 MySQL 数据库上运行的 Web 应用程序(正在开发中)。我正在考虑将我的应用程序迁移到 Google App Engine,并希望更好地了解如何将我的简单关系数据库模型转换为非关系方法
我应该在构造函数中放入什么:与实例相关的东西还是与类相关的东西? 考虑这段代码: var count = 0 TView = function (x, y) { this.x = x, this.y
我正在努力使用 postgreSQL,因为我不知道如何将 A 类型的一个实例链接到 B 类型的一组实例。我将举一个简短的例子: 假设我们要建立一个包含音乐专辑和人物的数据库,每个人都有一个他们最喜欢的
我需要检索一个对象并获取关系和嵌套关系。 所以,我有以下三个模型: 用户模型: module.exports = { attributes: { name: { type: '
给定一个表定义: Articles: art_id | name -------|-------------- 1 | article1 2 | article2 3
谁能举例说明“em 是相对于字体大小的,% 是相对于父元素的”? 相对于字体大小和相对于父元素是什么意思? 最佳答案 考虑一下您是否要在另一个框内定义一个框的高度。如果您将高度指定为 50%,它将是包
我有一个多对多关系,当我加载位于此关系一侧的实体时,我希望将另一侧相关实体的 ArrayCollection 视为其属性。然而,这并没有发生——加载的 ArrayCollection 中没有任何元素,
Relation#update(id, attributes) 文档提到“无论对象是否成功保存到数据库,都会返回结果对象。”,而 Relation#update_all (updates, condi
我是一名优秀的程序员,十分优秀!