据我所知,两个数据库上的笛卡尔积(X)运算不需要与UNION兼容。因此,如果两个关系中存在名为 name 的相同属性 R < / strong>和 S R 中的名称是 S中的名字和名称 是第二个名字
如何通过以下选择操作识别相关值
问= RXS
我想获取firstname = lastname的元组集,那么我该如何编写选择语句呢?
σ名称=姓名(Q)
在选择操作中使用相同的属性名称会出现问题吗?
答案 0 :(得分:1)
纠正对于笛卡尔积,关系不必与UNION兼容。 但他们仍然需要兼容!否则你指出的确有困难。所以笛卡尔积的规则是必须没有共同的属性。
因此,如果您有属性冲突,首先必须在穿越之前重命名属性。 请参阅“自然加入”http://en.wikipedia.org/wiki/Relational_algebra。 (根据重命名,笛卡尔积和投影定义Nat Join。)
从学习RA的角度来看,我会将Natural Join视为基本操作。当没有共同的属性时,笛卡尔积作为简并形式。例如,这是Date&amp; Sons的方法。达文接受了他们的教科书。
答案 1 :(得分:1)
Cartesion产品不需要以不同方式命名属性。它只需要以不同的方式命名 relations 。
例如,D:= A(id,name)X B(id,age)完全有效,结果关系为D(A.id,name,B.id,age)。
换句话说,作为cartesion产品的一部分,通过在关系名称前加上自动重命名属性。这种前置操作还导致要求以不同方式命名关系。
来源: - Database System Concepts 6th Edition,第6.1.1.6节笛卡尔 - 乘积操作,定义,以及图6.8中的示例教师×教导的结果。