• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

다중 조인시 집합의 레벨

22.11.22 12:54 작성 조회수 298

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 인지 구분할 수 있나요?

 

 

 

감사합니다.!

 

 

 

 

 

답변 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기반의 부모-자식 관계만 표시해 주고 있습니다.

감사합니다.

 

 

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

 

제가 이해한 바로는

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 에는 영향을 주지는 않는군요.

관점의 차이라기 보다는,

조인시 조인 컬럼으로 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하므로 조인 결과도 동일한 집합 레벨이 되게 됩니다.

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

 

감사합니다.