我已经为无损连接提供了以下说明。有人可以解释变量'r'是什么以及它如何出现在算法/等式/公式的两边?
“如果关系R被分解为关系R1,R2,则为 R的每个合法实例r ......
r =πR1(r)⋈πR2(r)
...然后分解本身被称为无损连接 分解“。
注意:R1和R2是下标。
答案 0 :(得分:0)
r
应该代表架构R
的任何关系值/实例(无损可分解)。但即使关系值无损分解,我们也必须注意我们分解的属性(集合)。
更重要的问题:什么是R1
,R2
?
您的引用可能基于the wikipedia article或其中的一个链接 - 这似乎是完全垃圾;远比维基百科关于关系模型主题的通常标准差。 (例如,它显示了一个用于重构投影的笛卡尔积 - 而无损连接通常需要一个 join :bowtie运算符,如图所示。)
运算符π是关系代数投影。 π通常显示为使用属性名称(或更恰当地说是一组属性名称)。这些通常由X, Y
或类似的符号表示。然后R1
,R2
应该是属性名称集合,不是关系。他们当然不可能两者兼而有之。 (我可以想象的是R1, R2
旨在代表两种关系的模式/属性集。)
此外,对于无损连接分解,我们要求两个投影一起包含R
的所有属性。 (通常是一些共同的属性,以便连接匹配在一起。)
所以我们应该
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}
。