다중 조인시 집합의 레벨
441
작성한 질문수 15
안녕하세요. 강사님
좋은 강의 감사드립니다.
1:M 끼리의 레벨이 만나면 그 집합은 M의 레벨을 유지한다는 것은 잘 이해하였습니다.

위와 같이 보면
처음에 hr.dept(1레벨) 과 hr.emp(M레벨) 가 만나면 이 조인의 결과는 M레벨을 유지합니다.
이 상태에서 추가로 hr_salary_hist(M레벨)을 조인한다면
M : M 레벨의 집합들이 서로 만나는 것인데
왜 hr.emp_salary_hist의 순서? 레벨?을 따르는 것인지 궁금합니다.
또한

이렇게 보면 닭발이 안보이는데 서로 어떤 테이블이 m이고 1 인지 구분할 수 있나요?
감사합니다.!
답변 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
안녕하세요. 집합 레벨이 상당히 헷갈리네요.
제가 이해한 바로는
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
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





