查找为位于温哥华市的公司工作的所有员工的姓名,公司名称和经理姓名。
如何在元组关系演算中写出这个?我一直在想这个问题。无论何时进入"管理",我都不知道如何处理manage.manager_name到employee.person_name
答案 0 :(得分:0)
如果您采用works
,company
和manages
关系中所有元组的笛卡尔积,则将结果限制为company_name
匹配的那些元组works
和company
,person_name
和works
之间的manages
匹配,以及city
匹配'温哥华',然后,您可以将person_name
和company_name
以及manager_name
中的manages
与{t : {person_name, company_name, manager_name} |
∀ w, c, m (
works(w) ∧ company(c) ∧ manages(m) ∧
w.company_name = c.company_name ∧ c.city = 'Vancouver' ∧
w.person_name = m.person_name ∧ t.person_name = w.person_name ∧
t.company_name = c.company_name ∧ t.manager_name = m.manager_name
)
}
一起构成您的结果元组,例如:
employee
如果你想person_name
加入manager_name
works
{t : {person_name, company_name, manager_name} |
∀ e1, w, c, m, e2 (
employee(e1) ∧ works(w) ∧ company(c) ∧ manages(m) ∧ employee(e2) ∧
e1.person_name = w.person_name ∧ e1.person_name = m.person_name ∧
w.company_name = c.company_name ∧ c.city = 'Vancouver' ∧
m.manager_name = e2.person_name ∧ t.manager_name = e2.person_name ∧
t.person_name = e1.person_name ∧ t.company_name = c.company_name
)
}
p4 sync ...
(即使它是多余的),那么你可以这样做:
p4 sync @LABEL_NAME ...
希望这是有道理的,它已经有一段时间了,我不得不查阅它。