2012-04-01 47 views
0

我正在學習考試,其中包括關係代數的概念。 書上說,我不能讓一個theta連接(用任何條件的連接)上的兩個相同的關係,讓我們假設我有:Theta加入條件

person(ssn, name, surname, age) 
disease(ssn_p, gravity, code) 

與人SSN這是主鍵。 來自疾病的代碼是主鍵,而ssn_p是外鍵引用person.name。 所以我可以在兩個有共同領域的關係上進行連接嗎? 因此,例如,有兩個關係(一個選擇和一個投影的結果):

R1(ssn, name) 
R2(ssn_p name) 

我可以做的R1和R2(我沒有找到符號貼,不好意思)之間的連接?

+0

這可能屬於[cstheory.se] – 2012-04-02 00:42:48

回答

2

當關系共享屬性時,您無法進行theta-join。原因在於theta-join基本上並置了屬性。換句話說,如果a1, a2, ..., an屬於R1,b1, b2, ..., bm屬性R2中的屬性,那麼在R1R2上的theta連接的結果將是一個關係R3與屬性a1, a2, ..., an, b1, b2, ..., bm。如果R1R2共享任何屬性,則R3將具有重複的屬性。關係代數中不允許重複的屬性。

如果您想在關係共享某些屬性時進行theta-join,則可以對其中一個關係執行重命名操作,以便所有屬性都變得不同。