2013-02-02 3 views
0

한 테이블 (P)의 공통 열이 고유하지만 다른 (Q)에서는 고유하지 않을 때 Natural과 Equi Join의 차이를 찾고 있습니다. 다른 테이블 (Q)의 행 중 어느 것이 표시 될 것인가 질문에 공통 Q 열이 없기 때문에 질문이 있습니다 .Q에있는 공통 속성의 동일한 동일한 값과 연관된 많은 행이 있습니다.Natural Vs Equi Join

두 가지 모두 '='비교기에서 작동합니다. 차이점은 자연 조인이 자동으로 공통 열을 찾고 '='비교자를 암시 적으로 적용한다는 것입니다.

두 테이블

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

말과 내가 P natural join QP equi join Q을 적용하는 경우 다음 행의 자연 생성됩니다

가입에 가입하고 동등에 튜플있다.? 은 테이블 Q의 행 (동일한 'a'값이 Q의 많은 행과 연관되어 있지만 P에서는 그렇지 않음)을 표시합니다. 차이가있을 것인가 ..?

+0

한 테이블의 공통 열이 고유하고 다른 테이블에서 고유하지 않은 경우 이러한 조인의 차이점을 알아야합니다. – codeofnode

답변

1

자연 결합은 동등 조인의 짧은 손에 불과합니다. 같은 열을 비교에 사용하면 동일한 튜플을 만들어야합니다.

데이터베이스 개발자는 자연 조인을 좋아하지 않는 경향이 있습니다. 테이블에있는 컬럼의 추가, 제거 또는 이름 변경은 기존의 쿼리에 영향을 줄 수 있습니다. 그리고 일반적으로 기존 코드를 피할 수 있으면 기존 코드를 중단하고 싶지 않습니다.

개인적으로 필자는 테이블 간의 열에 명시적인 명명 조건을 선호합니다. 외래 키는 기본 키와 이름이 같아야하므로 참조하는 내용이 분명합니다. 또한 조인을위한 "identity"또는 "auto-increment"기본 키를 선호합니다. 그러나 이것은 귀하의 질문에서 벗어나고 있습니다. 자연 조인이 조인에 대해 동일한 열을 선택하면 동일한 튜플을 생성해야합니다.

+0

한 테이블의 열이 고유하고 다른 테이블의 열이 아닌 경우 이러한 조인의 차이점을 가져와야합니다. 테이블 Q의 행 (동일한 'a'값이 Q의 많은 행과 연관되어 있지만 P에서는 그렇지 않음)이 표시됩니다. – codeofnode

+0

@Rambo. . . 두 가지 유형의 조인이있는 모든 일치하는 행이 표시됩니다. –