首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分解无损连接算法

分解无损连接算法
EN

Stack Overflow用户
提问于 2017-11-04 11:54:14
回答 1查看 573关注 0票数 0

我得到了以下关于无损连接的解释。请有人解释变量'r‘是什么,以及它如何出现在算法/方程/公式的两边?

“如果关系R被分解为关系R1,R2,使得对于每一个法律实例r. R=πR1(r)⋈πR2 (r) ...then分解本身被称为无损连接分解。“

注: R1和R2为下标。

EN

回答 1

Stack Overflow用户

发布于 2017-11-04 12:56:33

r应该代表模式R的任何关系值/实例(即无损可分解)。但是,即使一个关系值是无损可分解的,我们也必须注意我们分解成哪些属性。

更重要的问题是:什么是R1R2

你的引文可能是基于维基百科文章或者其中的一个链接--这似乎是完全的垃圾;比维基百科在关系模型主题上的通常标准要糟糕得多。(例如,它显示了一个笛卡尔乘积来重新组合投影-而无损join通常需要一个连接: bowtie操作符,如您所示。)

算子π是关系代数投影。π通常以属性名称(或者更恰当地说是一组属性名称)进行订阅。这些通常由X, Y或类似的符号来表示。那么R1R2应该是属性名的集合,而不是关系。他们当然不能兼而有之。(我所能想象的是,R1, R2意在代表这两个关系的模式/属性集。)

此外,对于无损连接分解,我们要求两个投影一起包含R的所有属性。(通常还有一些共同的属性,这样连接就可以匹配在一起了。)

所以我们应该

代码语言:javascript
复制
r1 = πX(r)             -- r1 is the value of R1 corresponding to r
r2 = πY(r)             -- ditto for R2
attributes of R = X ∪ Y   -- intersection of X, Y not necessarily empty
r = r1 ⋈ r2

一个明显的例子是R具有属性{A, B, C}{A}是关键。然后我们可以分解为X = {A, B}, Y = {A, C}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47110451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档