Theta加入条件

时间:2012-04-01 22:04:06

标签: database relational-algebra

我正在攻读考试,其中包括关系代数的概念。 这本书说我不能在两个相同的关系上做一个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之间进行连接(我找不到要粘贴的符号,对不起)?

1 个答案:

答案 0 :(得分:2)

当关系共享属性时,您无法执行theta-join。原因是theta-join基本上并置了属性。换句话说,如果a1, a2, ..., an中的R1属性为b1, b2, ..., bm,而R2中的属性属于R1,那么R2上的theta-join的结果和{ {1}}将是具有属性R3的{​​{1}}关系。如果a1, a2, ..., an, b1, b2, ..., bmR1共享任何属性,则R2将具有重复的属性。关系代数中不允许重复的属性。

如果您希望在关系共享某些属性时执行theta-join,则可以对其中一个关系执行重命名操作,以便所有属性都变得不同。