inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

데이터 분석 SQL Fundamentals

다중 조인시 집합의 레벨

441

Alejandro Lee

작성한 질문수 15

0

안녕하세요. 강사님

좋은 강의 감사드립니다.

 

1:M 끼리의 레벨이 만나면 그 집합은 M의 레벨을 유지한다는 것은 잘 이해하였습니다.

스크린샷 2022-11-22 오후 12.42.46.png

위와 같이 보면

처음에 hr.dept(1레벨) 과 hr.emp(M레벨) 가 만나면 이 조인의 결과는 M레벨을 유지합니다.

이 상태에서 추가로 hr_salary_hist(M레벨)을 조인한다면

M : M 레벨의 집합들이 서로 만나는 것인데

왜 hr.emp_salary_hist의 순서? 레벨?을 따르는 것인지 궁금합니다.

 

 

 

 

 

또한

 

스크린샷 2022-11-22 오전 10.01.58.png

이렇게 보면 닭발이 안보이는데 서로 어떤 테이블이 m이고 1 인지 구분할 수 있나요?

 

 

 

감사합니다.!

 

 

 

 

 

DBMS/RDBMS postgresql sql

답변 1

0

권 철민

안녕하십니까,

1: M 조인 시 조인의 결과 집합이 M레벨을 유지하는것도 맞지만, 조인의 결과 집합이 M레벨에 해당하는 테이블의 레벨을 그대로 따라간다로 이해해 주시면 됩니다. 그러니까 1:M 조인 시 M에 해당하는 테이블의 집합 레벨을 그대로 따라가는 것입니다.

그래서 dept-> emp -> emp_salary_hist 조인 시 dept와 emp 조인 시에는 M에 해당하는 emp 집합 레벨로 조인결과가 만들어지고, 이 조인 결과와 emp_salary_hist 의 조인 시에는 다시 empno로 1:M이므로 emp_salary_hist 집합 레벨로 최종 조인 결과 집합이 만들어 집니다.

그리고 dbeaver에서 ERD를 만들때는 ERD 표기가 좀 다릅니다. 또한 일반적으로 자동 ERD를 툴에서 만들때는 1:M 관계를 표시해주기 어려울 수 있습니다(직접 SQL을 날려서 건수를 조사해 봐야 하므로) 보통은 Primary-Foreign key 관계를 툴에서 자동 ERD로 만들어 줍니다. 위에서 Dbeaver로 만든것은 Primary-Foreign key기반의 부모-자식 관계만 표시해 주고 있습니다.

감사합니다.

 

0

Alejandro Lee

 

안녕하세요. 집합 레벨이 상당히 헷갈리네요.

 

제가 이해한 바로는

emp >- dept 조인 시에는 emp의 레벨인 M에 레벨을 따릅니다.

그렇지만

emp_salary_hist >- emp 의 관계에서 보면 이들은 M과 1의 관계이기에

emp_salary_hist 집합 레벨로 최종 조인 결과 집합이 만들어 진다는 뜻이군요.

 

관점의 차이 라고 보면 될까요? ㅎㅎ

 

emp_salary_hist >- emp >- dept -<emp_dept_hist

. M >- 1 m >- 1 1 -< m

 

 

그러니까 emp - dept를 조인한 집합의 레벨은 M의 레벨은 따른다고 하더라도 그것은 결과값만 따를 뿐이지

emp_salary_hist >- emp 원래 관례계 M>-1 에는 영향을 주지는 않는군요.

0

권 철민

관점의 차이라기 보다는,

조인시 조인 컬럼으로 1:M이 되면 조인 결과는 M 집합의 레벨을 따라간다 라고 생각해 주시면 됩니다.

그리고 집합의 레벨이라는 의미는 해당 집합의 unique 레벨을 의미합니다.

예를 들어 dept와 emp 테이블은 조인 컬럼인 deptno로 1:M의 관계이므로 조인 결과는 M 집합인 emp 테이블과 동일한 집합레벨을 가지게 됩니다. 즉 조인 결과는 emp 테이블과 동일하게 deptno로 M레벨이지만, empno로 unique 하게 되는 것입니다.

이 조인 결과 집합에 다시 empno 로 emp_salary_hist와 조인하게 되면 조인 키 컬럼인 empno로 1:M 이어서 조인 결과는 M 집합인 emp_salary_hist와 동일한 집합레벨이 됩니다. 즉 emp_salary_hist는 empno로 M이고 empno+fromdate 로 unique하므로 조인 결과도 동일한 집합 레벨이 되게 됩니다.

0

Alejandro Lee

네 조인실습04 에서 확실하게 설명해주시네요 ㅠㅠ

 

감사합니다.

'레벨 유지'의 의미에 대한 질문

0

49

2

date_part

0

54

2

lag/lead offset 관련 질문

0

54

2

join 관련 질문 (inner join, left join)

1

97

2

배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?

0

88

2

Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다

0

51

2

rollup시 null값 매출 라벨링

0

52

2

10. 조인 실습 - 02 관련 질문

0

58

1

조인실습03 - join의 pk-fk join

0

106

2

조인실습03 - join의 pk-fk join

0

67

2

(공유)맥, 스키마 import

0

81

2

sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?

0

136

2

1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?

0

130

2

안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.

0

89

1

섹션5 Group by 실습-01 강의 예제 질문

0

115

2

섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문

0

122

2

섹션2 조인 실습 01 강의 질문

0

132

2

lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.

0

124

1

Dbeaver오류

0

628

2

직원 별 가장 높은 매출

0

117

1

강의순서대로 실습코드순알려주세요.

0

132

1

m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?

0

127

1

rollup

0

88

2

Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.

0

352

2