인프런 커뮤니티 질문&답변

메론사탕님의 프로필 이미지
메론사탕

작성한 질문수

데이터 분석 SQL Fundamentals

조인 실습 - 03

강의 9:32분에 orders 레벨의 집합이라는 용어에 대해서 질문있습니다.

작성

·

179

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요 강사님

 

섹션 1

7강 / 1시간 21분

조인(Join) - 조인 기반 메커니즘
에서 join 실습 3의 9:32부분에서 질문있습니다.

 

select c.*,o.order_id ,o.order_date ,o.ship_name from nw.customers c

join nw.orders o on c.customer_id = o.customer_id

join nw.employees e on e.employee_id = o.employee_id

join nw.shippers s on o.ship_via = s.shipper_id

where c.city = 'Berlin';

이러한 sql문에서 nw.orders가 나머지 테이블이랑 비교했을때 unique한 부분이므로 1:m관계에서 1의역할 즉 uniq한 index인건 알겠습니다.

강사님 말씀중에 order level의 집합이라는 말씀이 정확히 무슨 의미인지 궁금합니다.

일단은 1:M의 관계에서는 테이블이 M을 기준으로 배열되는걸로 알고있는데 여기서 order 레벨의 집합이라는건 어떤 의미로 해석이 되는지 궁금합니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

강사님 말씀중에 order level의 집합이라는 말씀이 정확히 무슨 의미인지 궁금합니다.

=> 최종 조인 결과는 orders 테이블과 동일한 집합 레벨이라는 것입니다. 즉 해당 조인을 수행하면 orders를 제외한 customer, employees, shiipper는 모두 기존 대비 M 레벨로 데이터의 건수가 커지게 되지만 최종으로는 orders와 동일한 레벨의 조인 결과 집합이 만들어 집니다. 즉 최종 조인 집합은 order_id를 unique하게 가지게 되지만 customer_id, employee_id, shipper_id는 중복해서 가지게 됩니다.

이는 from nw.customers c

join nw.orders o on c.customer_id = o.customer_id

에서 orders와 customers가 customer_id로 m:1 (customers가 1의 집합)로 연결되기 때문에 customer 테이블이 M으로 데이터의 건수가 커지는 효과로 만들어 지고, 이는 employees, shippers 모두 마찬가지 입니다. 즉 orders:customer는 m:1, orders:employees는 m:1, orders:shippers는 m:1 이기 때문에 최종 조인 결과는 orders 테이블 레벨로 만들어 지게 됩니다(order_id는 unique, 나머지 customers_id, employees_id, shipper_id는 M으로 생성됩니다)

그리고 하나 더, 적어주신

이러한 sql문에서 nw.orders가 나머지 테이블이랑 비교했을때 unique한 부분이므로 1:m관계에서 1의역할 즉 uniq한 index인건 알겠습니다.

의 의미는 제가 잘 이해하지 못했습니다. 조인의 결과 집합이 만들어지는 레벨을 생각할 때는 반드시 연결되는 조인 키 컬럼의 1또는 M 레벨을 감안하시면 됩니다.

감사합니다.

 

메론사탕님의 프로필 이미지
메론사탕

작성한 질문수

질문하기