sql – 关系代数中的“θjoin”的清楚解释?

前端之家收集整理的这篇文章主要介绍了sql – 关系代数中的“θjoin”的清楚解释?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一个关于关系代数中θ连接概念的清晰,基本的解释,也许是一个例子(使用sql可能)来说明它的用法.

如果我理解正确,theta连接是一个加入条件的自然连接,所以,自然连接强制相同名称属性之间的相等(并删除重复?),theta连接也是一样的,但是添加在一个条件.我有这个权利吗?任何明确的解释,简单来说(对于非数学家)将不胜感激.

另外(对不起,只是把它放在最后,但它的相关),有人可以解释笛卡儿产品的重要性或想法吗?我觉得我在基本概念方面缺少一些东西,因为对我来说,这似乎是一个重要的基本事实,即一套13 X一组4 = 52 …

解决方法

sql留下一会儿…

关系运算符将一个或多个关系作为参数,并产生关系.因为一个关系根据定义没有重复的名称属性,关联操作theta join和natural join都将“删除重复的属性”.在sql中发布示例以解释关系操作的一个大问题是,如您所要求的那样,SQL查询的结果不是关系,因为除了其他的内容之外,它可以具有重复的行和/或列.

关系笛卡儿乘积运算(结果为一个关系)不同于笛卡儿乘积(一组成对). “笛卡尔”这个词在这里并不是特别有用.事实上,Codd称他为原始操作符的产品.

真正的关系语言Tutorial D缺乏产品运算符,产品不是教程D,Hugh Darwen **的合着者提出的关系代数中的原始运算符.这是因为没有属性名称的两个关系的自然加入共同的结果是与相同的两个关系的产物相同的关系,即自然连接是更一般的,因此更有用.

考虑这些例子(教程D):

WITH RELATION { TUPLE { Y 1 },TUPLE { Y 2 },TUPLE { Y 3 } } AS R1,RELATION { TUPLE { X 1 },TUPLE { X 2 } } AS R2 :
R1 JOIN R2

返回关系的乘积,即两度的度数(即两个属性X和Y)和6(2×3 = 6个元组)的基数.

然而,

WITH RELATION { TUPLE { Y 1 },RELATION { TUPLE { Y 1 },TUPLE { Y 2 } } AS R2 :
R1 JOIN R2

返回关系的自然连接,即一度的度数(即,产生一个属性Y的属性的集合)和2的基数(即,删除的重复元组).

我希望上面的例子解释为什么你的陈述“一套13 X一套4 = 52”不是严格正确的.

类似地,教程D不包括θ连接运算符.这实质上是因为其他操作者(例如自然加入和限制)使其不必要,也不是非常有用.相反,Codd的原始运算符包括可用于执行θ连接的产品和限制.

sql有一个名为CROSS JOIN的显式产品运算符,它强制结果成为产品,即使它通过创建重复列(属性)来违反1NF.考虑上面与后面的Dut D D的sql相当的sql

WITH R1 AS (SELECT * FROM (VALUES (1),(2),(3)) AS T (Y)),R2 AS (SELECT * FROM (VALUES (1),(2)) AS T (Y))
SELECT * 
  FROM R1 CROSS JOIN R2;

这返回一个表表达式,它具有两个列(而不是一个属性),称为Y(!!)和6行,即这样

SELECT c1 AS Y,c2 AS Y 
  FROM (VALUES (1,1),(2,(3,(1,2),2)
       ) AS T (c1,c2);

也就是说,虽然只有一个关系模型(即Codd),但是可以有多个关系代数(即Codd只是一个).

猜你在找的MsSQL相关文章