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的

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
的所有行,从中投影列的子集,即
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,可以进行
减号和笛卡尔积。希望这有意义。