将笛卡尔积应用于具有相同属性名称的关系时会发生什么情况



我知道两个数据库上的笛卡尔乘积(X)操作不需要与UNION兼容。因此,如果在两个关系 R 和 S 中有一个相同的属性称为 name,其中 R 中的名称是第一个名称,S的名称第二个名称

如何通过以下选择操作识别相关值

Q=RxS

我想得到名字=姓氏的元组集合,那么我应该如何编写选择语句呢?

σ 名称=名称(Q)

在选择操作中使用相同的属性名称会不会有问题?

笛卡尔乘积不需要以不同的方式命名属性。 它只需要以不同的方式命名关系

例如,D := A(id, name)

X B(id, age) 是完全有效的,由此产生的关系是 D(A.id, name, B.id, age)。

换句话说,属性通过在关系名称前面加上前缀来自动重命名,作为笛卡尔积的一部分。 此预置操作还导致要求以不同的方式命名关系。

源:- 数据库系统概念 第 6 版,第 6.1.1.6 章笛卡尔乘积运算,用于定义,图 6.8 中的示例 讲师× 教授的结果。

更正,对于笛卡尔乘积,关系不必是UNION兼容的。但它们仍然需要兼容!否则,正是您指出的困难。因此,笛卡尔乘积的规则是不能有共同的属性。

因此,如果存在属性冲突,则必须先重命名属性,然后再交叉。请参阅"自然连接"http://en.wikipedia.org/wiki/Relational_algebra。(这根据重命名、笛卡尔积和投影定义了 Nat Join。

从学习 RA 的角度来看,我认为自然连接是基本操作。而笛卡尔乘积作为退化形式时没有共同的属性。例如,Date&Darwen在他们的教科书中采用了这种方法。

相关内容

最新更新