SQL查询的关系代数和域关系演算

SQL查询的关系代数和域关系演算,sql,rdbms,relational-algebra,domain-calculus,Sql,Rdbms,Relational Algebra,Domain Calculus,表: Contest(starter, ender, pointsStarter, pointsEnder, debatedate) Debater(name, club, age) 查询: 给出起始辩论者为成员的比赛的所有比赛细节 并阻止对手得分 我写的SQL: SELECT starter, pointsStarter, ender, pointsEnder, debatedate FROM contest WHERE pointsEnder = 0 AND starter IN (SEL

表:

Contest(starter, ender, pointsStarter, pointsEnder, debatedate)
Debater(name, club, age)
查询:

给出起始辩论者为成员的比赛的所有比赛细节 并阻止对手得分

我写的SQL:

SELECT starter, pointsStarter, ender, pointsEnder, debatedate
FROM contest
WHERE pointsEnder = 0
AND starter IN (SELECT name FROM debater WHERE club = 'Plato')
我写过的关系代数:

Π starter,ender,pointsStarter,pointsEnder,debatedate (
    Ϭ Contest.pointsEnder=0 (
        Ϭ club=”Plato” (Contest Debater)))
{< starter,ender,pointsStarter,pointsEnder,debatedate> | 
    Ǝ < starter,ender,pointsStarter,pointsEnder,debatedate > ϵ Contest (
        Ǝ < name,club,age > ϵ Debater (
            ^ pointsEnder=0 ^ club=”Plato”))
}
我写过的领域关系演算:

Π starter,ender,pointsStarter,pointsEnder,debatedate (
    Ϭ Contest.pointsEnder=0 (
        Ϭ club=”Plato” (Contest Debater)))
{< starter,ender,pointsStarter,pointsEnder,debatedate> | 
    Ǝ < starter,ender,pointsStarter,pointsEnder,debatedate > ϵ Contest (
        Ǝ < name,club,age > ϵ Debater (
            ^ pointsEnder=0 ^ club=”Plato”))
}
{|
Ǝ竞赛(
Ǝ<姓名、俱乐部、年龄>辩手(
^pointsEnder=0^club=“Plato”))
}

明显的打字错误:在您的演算中,pointsEnder前面有一个错误的
^
。你大概打算在代数中加入
竞赛
辩论者

你还没有提到你要使用的代数和微积分的版本。因此,我们只能猜测更正的可能性质。你不太可能需要比赛。

注意,你的代数和微积分并没有把初学者和名字等同起来。如果您的加入是自然的,您需要将
name
重命名为
starter
环绕
Debater
。你最里面的演算需要一个附加的连接,使它们相等

您不希望通过以下方式删除结果列:

Π starter,ender,pointsStarter,pointsEnder,debatedate (...)
您想删除非结果列。如果您的加入是自然的,那么:

Π club, age (...)
类似地,演算查询的结果列必须在右侧表达式中显示为自由(不通过Ǝ量化)。因此,不是:

Ǝ < ... > ϵ Contest (...)
Ǝ<…>ϵ竞赛(…)
你需要像这样的东西:

Ǝ < s,e,ps,pe,dd > ϵ Contest (
        s=starter ^ e=ender ^ ps=pointsStarter ^ pe=pointsEnder ^ dd=debatedate
    ^   ...)
Ǝ(
s=starter^e=ender^ps=pointsStarter^pe=pointsEnder^dd=debatate
^   ...)

我想知道关系代数和域演算是否是问题的正确答案请编辑您的问题,评论不是为了澄清,只是暂时的。另外,请给出你应该使用的代数和微积分变体的参考,因为有很多。此外,如果你想要的不仅仅是“是”或“否”,你应该证明你的工作是正确的。