기존 외래 키를 기반으로 결합 조건을 초기화 할 데이터베이스 엔진이 있습니까?


11

외래 키를 정의하면 엔진 이이 정보를 사용하여 올바른 JOIN 표현식을 자동으로 알아낼 수 없지만 대신 동일한 절을 다시 입력해야한다는 것이 이상하게 보입니다. 기존 외래 키를 검사 할 데이터베이스, 아마도 일종의 연구 프로젝트가 있습니까?

답변:


4

외래 키를 사용하는 것을 알지 못합니다 (동일한 테이블에 둘 이상의 외래 키가있는 경우 지저분 할 수 있음)

그러나 특정 조인 유형이나 조인 조건을 지정하지 않거나 사용하는 경우 Oracle은 열 이름을 기준으로 조인을 수행합니다.NATURAL JOIN


동일한 테이블에 둘 이상의 외래 키가 있으면 왜 지저분합니까? 당신이 "부모"테이블 관점에서 그것을보고 있다면 그것은 여전히 ​​당신이 관심있는 아이의 기록에 대해 분명해야합니다.
Beth Whitezel

@Bitoff는 두 테이블 사이에 둘 이상의 관계가있을 수 있으므로 복합 키는 아니지만 실제로 자식 테이블에 대해 둘 이상의 외래 키가 있습니다. 예를 들어, 이전 직무에는 조직의 데이터베이스가 있었으며이 테이블에는 부서장과 기본 담당자 (보통 비서)와 같은 두 사람의 링크가 있습니다. 직원이 부서에 배정되어 다 대다 관계를 지원하기 위해이를 분리해야 할 때까지 외래 키가 반대 방향에있었습니다.
Joe

나는 일반적인 RDBMS 중 어느 것도 이것을하지 않는다는 것을 알고 있습니다. 질문에 따라 누군가 가이 분야의 새로운 것을 들어 보았는지 알기 위해 질문을했습니다.
TML

1
-1 이것은 오라클의 행동에 대한 것이 아니며 귀하의 답변도 아닙니다. Gary (답글에 대한 세 번째 의견)에서 지적한 것처럼 " natural join기본 설정은 없었습니다". 그는 호출 할 때 부수적으로, 톰 카이트는 확실하다 올바른 natural join 일이 기다리고 버그
잭 topanswers.xyz 시도라고

4

것이 내가 이것을 쓸 수 있다면 정말 멋질

from calendar join table1

그리고 dbms는 이것을 평가해야한다는 것을 알 것입니다.

from calendar
left join table1 on (work_date between (cal_date - 13) and cal_date)

정말 멋지다. 하지만 모든 가입은이다 동등이 조인 .

FWIW NATURAL JOIN는 SQL 표준입니다. 그러나 나는 지난 25 년 동안 그것을 사용하지 않았다고 확신합니다.

동일한 조인 절을 반복해서 작성하는 경우 더 많은 뷰가 필요할 수 있습니다.


3

입력이 문제가되는 경우 적절한 조 인문을 자동 제안하기 위해 선택한 편집기에 자동 완성 유틸리티가 있습니다. SSMS 및 Visual Studio에서 SQL Server를 처리하기위한 RedGate의 SQL 프롬프트 Quest의 TOAD가 Oracle 및 기타 인기있는 RDMS를 처리 할 것으로 생각합니다.


실제 "우려"가 아니며, 이것이 누군가가 다루고있는 것이 아닌지 궁금합니다.
TML

@TML 나는 의심의 사람이 내 이해에 응용 프로그램 논리의 영역에서 정말 같이이 걱정됩니다 (응용 프로그램 논리가 데이터베이스 서버를 실행 관련이없는 것들이고, 일을 우리는 어떻게 지불)
jcolebrand을
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.