Relational algebra 如何找到属性,即;“仅发生一次”关系代数

Relational algebra 如何找到属性,即;“仅发生一次”关系代数,relational-algebra,Relational Algebra,我有一个表名为: 项目(pId、cId) 我正试图用关系代数找到只有一家公司在做的项目ID 我考虑过使用join并找到那些多次出现的PID,然后使用减法,但不确定该如何编写它 我不能在关系代数中使用count,也不能使用!= 我将在中使用各种关系代数,解释如下,并为中间结果分配关系变量 crosscid := project ⋈ ρ<cid2/cid>(project); multicid := crosscid \ σ<cid = cid2>(crosscid); re

我有一个表名为: 项目(pId、cId)

我正试图用关系代数找到只有一家公司在做的项目ID

我考虑过使用join并找到那些多次出现的PID,然后使用减法,但不确定该如何编写它


我不能在关系代数中使用count,也不能使用!=

我将在中使用各种关系代数,解释如下,并为中间结果分配关系变量

crosscid := project ⋈ ρ<cid2/cid>(project);
multicid := crosscid \ σ<cid = cid2>(crosscid);
result := π<pid>(project) \ π<pid>(multicid);
crosscid:=项目⋈ ρ(项目);
multicid:=crosscid\σ(crosscid);
结果:=π(项目)\π(多ID);
wikipedia显示操作符的下标组件,我在尖括号中显示

crosscid
是每个
pid
的所有
cid
的叉积,通过创建与
cid
重命名的
项目
关系的副本获得。注意,这包括具有
cid==cid2
的元组

multicid
crosscid
过滤为只包含多个
cid
s的
pid
s,通过减去
crosscid
中包含
cid==cid2
的元组获得。(这是我们不允许使用的限制的“工作循环”!=)


result
是原始
project
关系中的
pid
s减去具有多个
cid
s的
pid
s。这可能是一个常见问题。在考虑发帖之前,请始终用谷歌搜索任何错误消息或你的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有你的特定字符串/名称和网站:stackoverflow.com&tags,并阅读许多答案。请参见文本上方的投票箭头(&S)。PS有许多关系代数。它们的运算符不同,甚至关系是什么。为您的客户提供参考和/或定义。例如教科书名称、版本和页码。PS ID出现1次是所有ID减去ID出现2次或以上。PS显示您可以执行的部件并询问您是否被卡住。可能与philipxy的常见问题重复?注意最后一段:不能使用count(也不能使用其他聚合运算符),也不能使用带有
--我想这是“不是!=”所说的--奇怪,因为
是每种RA都允许的,可以追溯到Codd 1972。@AntC我不理解你的评论。我在第一条评论中说了如何使用减号和self-join,然后我的下一条评论给出了3个链接。什么运算符是不允许的,当他们没有说什么运算符是允许的时,这并不意味着什么,但我没有提到计数或不公平加入。philipxy实际上在发布之前,我检查了您提供的所有链接,无法找到我问题的答案。但是我会记下我说过的其他事情。可能是我没有使用≠ , 我需要再检查一下。不管怎样,你帮了很多忙,我知道该怎么改变。谢谢:)