2013-02-26 26 views
0

我有這些表關係代數具體操作

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(σ部門(DNAME =「研究」))

我真的卡住了,迷茫......我不知道,如果它能夠做到這一點,而不等同操作。

回答

0

開始寫評論然後改變了主意。 :)

如果你看一下Wikipedia,你會發現這等價:

R ⋈_φ S = σ_φ(R × S) 

,特別是其中的限制是平等的,這是一個等值連接。這意味着,equijoin相當於兩個表格在兩個字段相等時的笛卡爾乘積的限制。

所以......

π_{dlocation}(
    σ_{dnumber = loc_dnumber}(
    σ_{dname = "finance"}(department) 
    × 
    ρ_{loc_dnumber/dnumber}(dept_locations))) 

(我們需要使用重命名,這樣我們就不會進入荒謬dnumber = dnumber地方。)