“我如何用这种标准形式的 RA 表示我的查询?”
这与其说是“代数类型”的问题,不如说是“符号类型”的问题。
使用希腊符号的表示法通常使用 sigma、附加到 sigma 字符的下标中的限制条件,然后是限制的主题(受到限制条件的关系表达式)。
日期避免使用这种符号,因为使用这种符号排版和/或创建文本通常比仅使用西方字母要困难得多(我的一位数学老师曾经告诉我们,数学教科书包含的错误最多)。
因此,σ <cond> (<rel exp>) 表示与(Date 的语法)“<rel exp> WHERE <cond>”完全相同的代数表达式。
类似地,对于希腊符号,投影通常使用字母 Pi 表示,下标中的保留属性列表附加在 Pi 后面,然后是作为投影主题的表达式。
Π <attr list> (<rel exp>) 因此表示与(Date 的语法)“<rel exp> { <attr list> }”完全相同的代数表达式。
运算符的连接系列通常用“希腊”符号表示,使用(变体)Unicode BOWTIE 字符,或由一个小写字母“x”组成的字符,该字符被一个完整的圆圈包围(通常用于表示完整的笛卡尔积,交叉产品,......无论你的代数课程碰巧命名它)。
一些课程使用希腊字母 Rho 提供重命名的“希腊符号”表示法。附加在下标中的是重命名列表,格式为 a1->b1,a2->b2,... 之后是要进行重命名的关系表达式。同样, Date 具有非希腊符号等效语法: <rel exp> RENAME a1 AS b1, a2 AS b2 , ...
重要的是要看到这些差异仅仅是句法符号的差异,而不是“不同的代数”。
编辑
可以想象,希腊符号表示法是将关系代数编程为 APL 引擎的一种方式,Date 的语法是将关系代数编程为类似 cobol 或 PL/1 引擎的方式(实际上存在这样的引擎称为 Rel),以及将关系代数编程为类似 OO 的引擎的方法,可能类似于关系.NaturalJoin(otherRelation).Matching(yetOtherRelation.Restrict(condition).project(attributesList))。