我有这些表
Employee(ssn, name, sex, address, salary, bdate, dno, superssn)
fk:superssn is ssn in Employee
fk:dno is dnumber in Department
Department(dnumber, dname, mgrssn, mgrstartdate)
fk:mgrssn is ssn in Employee
Dept_locations(dnumber, dlocation)
fk:dnumber is dnumber in Department
Project(pnumber, pname, plocation, dnum)
fk:dnum is dnumber in Department
Dependent(essn, dependent_name, sex, bdate, relationship)
fk: essn is ssn in Employee
Works_on(essn,pno,hours)
fk: essn is ssn in Employee; pno is pnumber in Project
我想仅使用以下关系代数运算{σ,π,∪,ρ, - ,×}来检索财务部门的位置列表。
到目前为止我有: πdlocation(σdepartment(dname ='research'))
我真的被卡住了,感到很困惑......我不知道如果没有等值操作可以做到这一点。
答案 0 :(得分:0)
开始写评论然后改变了我的想法。 :)
如果你看Wikipedia,你会发现这个等价:
R ⋈_φ S = σ_φ(R × S)
特别是在限制是平等的情况下,它是等值的。这意味着,equijoin相当于对两个字段相等的两个表的笛卡尔积的限制。
因此...
π_{dlocation}(
σ_{dnumber = loc_dnumber}(
σ_{dname = "finance"}(department)
×
ρ_{loc_dnumber / dnumber}(dept_locations)))
(我们需要使用重命名,以便我们不会进入无意义的dnumber = dnumber
位置。)