元组关系微积分的自联接

时间:2015-08-03 16:23:16

标签: relational-database tuple-relational-calculus

enter image description here 查找为位于温哥华市的公司工作的所有员工的姓名,公司名称和经理姓名。

如何在元组关系演算中写出这个?我一直在想这个问题。无论何时进入"管理",我都不知道如何处理manage.manager_name到employee.person_name

1 个答案:

答案 0 :(得分:0)

如果您采用workscompanymanages关系中所有元组的笛卡尔积,则将结果限制为company_name匹配的那些元组workscompanyperson_nameworks之间的manages匹配,以及city匹配'温哥华',然后,您可以将person_namecompany_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 ...

希望这是有道理的,它已经有一段时间了,我不得不查阅它。