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


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.