SQL的关系代数等价物;在;
SQL中表达式的等价关系代数是什么? 我正在尝试转换此SQL查询:SQL的关系代数等价物;在;,sql,relational-algebra,Sql,Relational Algebra,SQL中表达式的等价关系代数是什么? 我正在尝试转换此SQL查询: SELECT rol, nota FROM notas WHERE rol IN ( SELECT rol FROM estudiantes WHERE ID = 1) 如果您讨论的是内部子查询,如下所示 SELECT rol FROM estudiantes WHERE ID = 1 等价的关系代数如下所示 ∏rol(σ ID = 1 (estudiantes)) σID=1(EStudiants)将选择条件为ID=1的
SELECT rol, nota FROM notas WHERE rol IN ( SELECT rol FROM estudiantes WHERE ID = 1)
如果您讨论的是内部子查询,如下所示
SELECT rol FROM estudiantes WHERE ID = 1
等价的关系代数如下所示
∏rol(σ ID = 1 (estudiantes))
σID=1(EStudiants)
将选择条件为ID=1
的所有行,从中投影列的子集,即rol
SELECT rol, nota FROM notas WHERE rol IN
(
SELECT rol FROM estudiantes WHERE ID = 1
)
编辑:
如果要在操作符中模拟,则可以在
您的notas
和estudiantes
表都位于名为rol
的列上
SELECT rol, nota FROM notas WHERE rol IN
(
SELECT rol FROM estudiantes WHERE ID = 1
)
请注意:显式限定rol
列,因为这两个关系具有相同的名称
nota (equi join) estudiantes =
project notas.rol,nota
(notas equijoin notas.rol = estudiantes.rol select ID = 1(estudiantes))
PS:不知何故,我无法打印符号,如(项目、选择、相等连接等)。所以最后把它们写成了文本 您可以使用join来执行此操作。为了简单起见,我使用了自然连接
SELECT rol, nota FROM notas WHERE rol IN ( SELECT rol FROM estudiantes WHERE ID = 1)
这可以表示为以下使用join的SQL。一旦更改为这种形式,就很容易用关系代数表示
SELECT rol, nota FROM (SELECT * from notas NATURAL JOIN estudiantes where ID=1)
π rol, nota ((σ ID = 1 (estudiantes)) ⋈ notas)
它可以在关系代数中表示为
π rol, nota ((σ ID = 1 (estudiantes)) ⋈ notas)
很抱歉,我无法在需要时使用下标
过程
让我们假设这些关系包含以下属性
notas(rol,nota,nota2,nota3,…)
电子学生(id、rol、电子学生1、电子学生2等)
1) 将子查询更改为关系代数。我们可以投影rol
,但这不是必需的,因为自然连接可以在不投影的情况下使用
SELECT rol FROM estudiantes WHERE ID = 1
π rol σ ID=1(estudiantes)
2) 自然连接新生成的关系(在步骤1中)与nota。如果属性名称不同,则可以使用任何其他联接
(π rol σ ID=1(estudiantes)) ⋈ notas
由于两个关系都包含同名的属性rol
,因此将生成如下关系:
(id, rol, nota, notas2, notas3, estudiantes1, estudiantes2, ...)
关系notas
与1中的关系连接,该关系仅包含id=1的元组。结果关系具有这两个属性的所有属性,公共属性rol
和id
,值为1
3) 结果关系包含两个表中的所有值,因此您可以简单地投影所需的属性
π rol, nota ( relation containing all values with id=1)
因此,我们得到以下关系代数
SELECT rol, nota FROM (SELECT * from notas NATURAL JOIN estudiantes where ID=1)
π rol, nota ((σ ID = 1 (estudiantes)) ⋈ notas)
希望这能有所帮助。“这个问题没有显示任何研究成果”,它翻译了示例,但没有回答问题,翻译成。@philipxy,我差点就明白了,但问题让我有点困惑。这也可以通过θ连接来实现。正在路上…@philipxy,请参阅编辑。希望这现在有意义。如果是的话,就给+1:)。我希望在使用过程中会出现一些任意的情况。例如A1,。。。R的属性:选择。。。从R开始,其中(A1,…)在S==∏ ... (R等距连接S)。(…我猜你是想这么说。)@philipxy,不,在RA中没有等价物(AFAIK)。因此,要模拟IN,可以进行等连接/自然连接;要模拟NOTIN,可以进行减号和笛卡尔积。希望这有意义。