Ani*_*rma 1 relational-theory relational-calculus
好吧,这是一个 SQL 查询:
select Employee.Name,Department.Name
from Employee,Department
where Employee.Dept_no=Department.No
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一个元组关系演算:
{t|? s ? Employee (s[Name]=t[Name] ^
? u ? Department(u[Name]=s[Name]^u[No]=s[No]))}
Run Code Online (Sandbox Code Playgroud)
我的方法正确吗?如果没有,那么任何人都可以帮助我理解吗?
元组关系演算表达式应该用一阶逻辑的常用语言编写。
例如,在这种情况下,您可以编写:
{ [e.Name, d.Name] | ? e ? Employee, ? d ? Department . e.Dept_no = d.No }
Run Code Online (Sandbox Code Playgroud)
(所用符号的微小变化的一部分,如“:”而不是“.”)。
这个想法是您通过查找关系的元素来获得查询的结果(一阶逻辑的格式良好的公式),这些元素替换为公式的自由变量,使公式为真。
在这种情况下,我们有两个变量,d
并且e
,该范围上Departments
,并Employees
分别,那一定是真实的(条件e.Dept_no = d.No
),并从每对满足此条件的关系的元组,您添加到所形成的结果集的元组在Name
中e
和Name
的d
(换句话说,你执行一个简单的连接)。
请注意,表达式的结构可以很容易地映射到 SQL 查询(实际上这种语言是 SQL 语言的起源,以及其他添加项)。这可以是关于如何编写与此类似的其他查询的建议。