자연 조인 B를 수행한다고 가정하십시오. 여기서공유 기본 키에 자연 결합이 있어야합니까?
A 스키마는 (aID)이며, 여기서 (aID)는 기본 키입니다.
B의 스키마는 (aID, bID)입니다. 여기서 (aID, bID)는 복합 기본 키입니다.
이 경우 자연 결합 작업을 수행 하시겠습니까? 또는 A가 이것을 작동시키기 위해 aID와 bID를 모두 가지고 있어야합니까?
자연 조인 B를 수행한다고 가정하십시오. 여기서공유 기본 키에 자연 결합이 있어야합니까?
A 스키마는 (aID)이며, 여기서 (aID)는 기본 키입니다.
B의 스키마는 (aID, bID)입니다. 여기서 (aID, bID)는 복합 기본 키입니다.
이 경우 자연 결합 작업을 수행 하시겠습니까? 또는 A가 이것을 작동시키기 위해 aID와 bID를 모두 가지고 있어야합니까?
는 열 테이블 사이에 일치하도록 이름을 사용합니다. 키 정의에 관계없이 일치하는 이름을 사용합니다. 즉, 동일한 이름을 가진 유일한 열이므로 따라서
,select . . .
from a natural join b
는 AId
를 사용한다. 제 의견으로는 natural join
이 가증입니다. 예를 들어, 명시 적으로 을 무시하고 외래 키 관계를 선언합니다. 이들은 이름에 관계없이 "자연 조인"키입니다.
둘째, SELECT
문에서 조인 키가 명확하지 않습니다. 이로 인해 쿼리 디버깅이 훨씬 어려워집니다. 열을 추가하거나 테이블에서 열을 제거하는 경우
셋째, 나는 SQL 구문을 생각할 수 없다 쿼리를 작업 소요 행 결과 세트의 수를 변경합니다.
또한 테이블에 공통 열이 종종 있습니다. CreatedAt
, CreatedOn
, CreatedBy
입니다. 이 열의 존재만으로 자연 결합을 사용할 수 없습니다.
NATURAL JOIN은 공통 입력 테이블의 각 열 이름과 입력 테이블에 고유 한 각 열 이름을 각각 하나씩 복사하여 행을 반환합니다. 각 입력 테이블의 행을 결합하여 이러한 모든 행을 포함하는 테이블을 리턴합니다. 이는 0을 포함하여 공통 컬럼 이름이 얼마나 많은지와 관계가 없습니다. 일반적인 열 이름이 없으면 일종의 CROSS JOIN 일명 CARTESIAN JOIN입니다. 모든 열 이름이 공통적 인 경우, 이는 일종의 중개 (INTERSECTION)입니다. 이 모든 것은 PKs, UNIQUE, FKs & 다른 제약 조건과 관계 없습니다.
NATURAL JOIN은 관계형 대수 연산자로 중요합니다. In SQL it can be used in a certain style of relational programming that is in a certain sense simpler than usual.
진정한 관계형 결과를 보려면 SELECT DISTINCT를 선택하십시오. 또한 관계에는 특별한 NULL 값이 없지만 SQL JOIN은 NULL을 NULL과 같지 않은 것으로 취급합니다. 그래서 NULL을 관계형으로 또 다른 값으로 취급하면 SQL은 때로는 진정한 관계형 결과를 반환하지 않습니다. (두 인수가 일부 공유 열 각각에 대해 NULL을 갖고 있고 둘 다 다른 공유 열에 대해 모두 NULL이 아닌 값을가집니다.)
자연 결합의 정의는 무엇이며이 사실에 대한 설명은 무엇입니까? 케이스? 추신 : 설명이 아닌 질문에 대한 설명을 편집하십시오. 질문이 관계형 대수에 관한 것이라면, sql이 아닌 해당 태그를 사용하십시오.당신도 구글의 '관계형 대수학 온라인'을 했습니까? http://dbis-uibk.github.io/relax/ – philipxy