0

あるテーブル (P) の共通列が一意であるが、他のテーブル (Q) では一意ではない場合、Natural と Equi Join の違いを探しています。次に、他のテーブル(Q)のどの行が表示されるか、質問はQで一意ではない共通列のためにそこにあります.Qでその共通属性の単一の同じ値に関連付けられた非常に多くの行があります.

どちらも「=」コンパレーターで動作します。自然結合が共通の列を自動的に見つけ出し、「=」コンパレーターを暗黙的に適用するという違いだけです。

2 つのテーブルを言う

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

そして私が申し込むP natural join QP equi join Q

次に、どの行が自然結合で生成され、どのタプルが等結合で生成されますか? テーブル Q のどの行が表示されるかを意味します ('a' の同じ値は Q の多くの行に関連付けられていますが、 P ではそうではありません)。違いがあるかどうか..?

4

1 に答える 1

0

自然結合は、等結合の略です。同じ列を比較に使用する場合は、同じタプルを作成する必要があります。

データベース開発者は、自然結合を好まない傾向があります。テーブル内の列の追加、削除、または名前変更は、既存のクエリに影響を与える可能性があります。そして、一般的に、回避できるのであれば、既存のコードを壊したくありません。

個人的には、テーブル間の列の明示的な命名条件を好みます。外部キーは主キーと同じ名前にする必要があるため、それらが何を参照しているかは明らかです。また、結合には「ID」または「自動インクリメント」の主キーを好みます。しかし、これはあなたの質問から外れています。自然結合が結合に同じ列を選択している場合、同じタプルが生成されるはずです。

于 2013-02-02T16:33:57.847 に答える