我有一个困惑。假设有两个与共同属性 A 的关系。现在是 (R natural join S)=(R join S where join condition A=A)?自然连接返回一个公共列 A 由于集合论中定义的关系代数,简单连接是否返回两个具有相同名称 AA 或 1 个公共列 A 的列?
问问题
698 次
1 回答
1
这里有一个 Natural Join 的例子。正如@Renzo 所说,有很多变体。而 SQL 又不同了。所以我会坚持维基百科显示的内容。
最重要的是:连接条件适用于两个参数之间的所有共同属性。因此,您需要说“与 A 的两个关系是它们唯一的共同属性”。唯一的共同属性是DeptName
在那个维基百科示例中。一般来说,可以有许多共同的属性。
是的,连接意味着通过将参数中在相应公共属性中具有相同值的元组配对来在结果中形成元组。因此,您具有具有相同属性名称的相同值。在结果中重复这两个属性是没有意义的,因为你会重复这些值。该示例显示结果中有一个属性DeptName
。
请注意,关系代数的不同方言使用不同的符号和符号。因此,Natural Join 的裸领结 (⋈) 可以后缀为布尔条件,形成theta-join (θ-join) 或 equi-join - 请参见该示例。布尔条件位于不同名称的属性之间,并且可以使用任何比较运算符。因此,属性名称及其值都会出现在结果中。
集合论操作适用,因为每个元组都是一组名称-值对。结果元组是来自每个参数的元组的联合——前提是该联合是有效的元组。也就是说,提供同名的 nv 对具有相同的值。
于 2018-06-06T10:43:38.873 回答