-1

这本书说我不能在两个相同的关系上进行关系代数 theta 连接(具有任何条件的连接),所以假设我有:

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

来自 person 的 ssn 作为主键,来自 disease 的 code 作为主键,ssn_p 是引用 person.name 的外键。

我可以加入两个具有共同领域的关系吗?

因此,例如有两个关系(选择和投影的结果):

R1(ssn, name)
R2(ssn_p, name)

我可以在 R1 和 R2 之间进行连接吗?

4

1 回答 1

2

当关系共享属性时,您不能进行 theta-join。原因是 theta-join 基本上并列了属性。换句话说,如果a1, a2, ..., an是 中的属性R1,并且b1, b2, ..., bm是 中的属性,那么在和R2上进行 theta-join 的结果将是与属性的关系。如果并共享任何属性,则将具有重复的属性。关系代数中不允许有重复的属性。R1R2R3a1, a2, ..., an, b1, b2, ..., bmR1R2R3

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

于 2012-04-02T00:48:33.493 回答