0

当一个表(P)中的公共列是唯一的,但在其他表(Q)中不是唯一的时,我正在寻找 Natural 和 Equi Join 之间的区别。然后将显示其他表(Q)中的哪一行,问题是因为Q中的公共列不是唯一的,所以会有很多行与Q中该公共属性的单个相同值相关联。

两者都在'='比较器上运行。只是自然连接自动找出公共列并隐式应用'='比较器的区别。

说两张表

P(a(unique),b,c) and Q(a(not unique),d)

如果我申请P natural join Q 并且P equi join Q

那么 Natural join 中会生成哪些行,Equi join 中会生成哪些 tuples 呢?表示将显示表 Q 中的哪一行(因为 'a' 的相同值与 Q 中的许多行相关联,但在 P 中不相关)..?会不会有区别..?

4

1 回答 1

0

自然连接只是等值连接的简写。当使用相同的列进行比较时,应该创建相同的元组。

数据库开发人员往往不喜欢自然连接。表中列的添加、删除或重命名会影响现有查询。而且,一般来说,如果我们可以避免的话,我们不想破坏现有的代码。

就个人而言,我更喜欢表中列的显式命名条件。外键应该与主键具有相同的名称,因此它们所指的内容很清楚。我也更喜欢连接的“身份”或“自动增量”主键。然而,这偏离了你的问题。当自然连接为连接选择相同的列时,应该生成相同的元组。

于 2013-02-02T16:33:57.847 回答