如何找到 "occurred only once" 的属性 - 关系代数

How to find attribute that "occurred only once" - relational algebra

我有一个 table 名为: 项目(pId,cId)

我正在尝试使用关系代数查找只有一家公司在处理它们的项目 ID。

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

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

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

crosscid := project ⋈ ρ<cid2/cid>(project);
multicid := crosscid \ σ<cid = cid2>(crosscid);
result := π<pid>(project) \ π<pid>(multicid);

维基百科显示运算符的下标组件,我在尖括号中显示 < >

crosscid 是每个 pid 的所有 cid 的叉积,通过创建与 cidproject 关系的副本获得更名。请注意,这包括带有 cid == cid2.

的元组

multicidcrosscid 过滤为仅具有多个 cidpid,通过将 crosscid 中的元组与 [=17 相减获得=]. (这是 'work round' 我们不能使用 != 的限制。)

result 是原始 project 关系中的 pid 减去具有多个 cidpid