如何找到 "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
的叉积,通过创建与 cid
的 project
关系的副本获得更名。请注意,这包括带有 cid == cid2
.
的元组
multicid
被 crosscid
过滤为仅具有多个 cid
的 pid
,通过将 crosscid
中的元组与 [=17 相减获得=]. (这是 'work round' 我们不能使用 !=
的限制。)
result
是原始 project
关系中的 pid
减去具有多个 cid
的 pid
。
我有一个 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
的叉积,通过创建与 cid
的 project
关系的副本获得更名。请注意,这包括带有 cid == cid2
.
multicid
被 crosscid
过滤为仅具有多个 cid
的 pid
,通过将 crosscid
中的元组与 [=17 相减获得=]. (这是 'work round' 我们不能使用 !=
的限制。)
result
是原始 project
关系中的 pid
减去具有多个 cid
的 pid
。