240813(+69) | 어떤 키를 기준으로 JOIN해야 할까?

청솔·2024년 8월 12일

SQL

목록 보기
18/23

문제

코드카타 문제를 의식의 흐름에 따라 풀다 보니 2가지 문제점이 생긴다.

  1. 문제의 요구사항을 제대로 읽지 않고 테이블만 보고 쿼리를 작성한다
  2. 그러므로 적당히 테이블에 공통적인 키가 있다면 아무거나 JOIN을 한다

결과-> "틀린다"

난이도가 낮은 문제의 경우, 2개의 테이블 명세서에 다양한 키중 보통 한가지 키만이 동일했다. 문제가 요구하는 것이 늘어남에 따라 어떤 키를 사용해야 할지 고민하게 되는데..

해결

1. 목적 및 요구 사항

데이터 결합의 조인 목적 및 비즈니스 요구사항
조인의 목적이 두 테이블 간의 특정 관계를 명확히 하려는 것이라면, 이 관계를 정의하는 컬럼을 선택합니다. 예를 들어, 주문 내역과 고객 정보를 결합하려는 경우, 고객 ID를 기준으로 조인할 것입니다.

2. 데이터 모델 및 스키마 설계

외래 키
일반적으로 외래 키가 있는 컬럼을 기준으로 조인합니다. 외래 키는 두 테이블 간의 관계를 정의하며, 이를 통해 올바르게 데이터를 결합할 수 있습니다.
기본 키와 외래 키
기본 키는 테이블의 고유 식별자이고, 외래 키는 다른 테이블의 기본 키를 참조하는 컬럼입니다. 기본 키와 외래 키를 사용하여 테이블 간의 관계를 설정합니다.

FIRST_HALF 테이블의 기본 키FLAVOR입니다. FIRST_HALF테이블의 SHIPMENT_IDJULY테이블의 SHIPMENT_ID외래 키입니다.
JULY 테이블의 기본 키SHIPMENT_ID입니다. JULY테이블의 FLAVORFIRST_HALF 테이블의 FLAVOR외래 키입니다.

3. 데이터 중복 및 집계

중복 방지
중복된 데이터가 발생하지 않도록 조인 기준을 선택합니다. 예를 들어, 동일한 FLAVOR를 기준으로 조인할 때, 출하 번호가 다른 경우 데이터가 중복(누락)될 수 있습니다.
집계
집계가 필요한 경우(예: 총 주문량, 평균 점수 등), 집계된 결과가 의미하는 바에 맞는 조인 기준을 선택합니다.

4. 쿼리 성능

인덱스 사용
조인 기준 컬럼에 인덱스가 존재하면 조인 성능이 향상됩니다. 데이터베이스 설계에서 인덱스가 설정된 컬럼을 기준으로 조인하면 성능이 좋을 수 있습니다.

5. 조인 유형

INNER JOIN
두 테이블 모두에서 일치하는 레코드를 결합할 때 사용합니다. 외래 키가 있는 컬럼을 기준으로 조인합니다.
LEFT JOIN
왼쪽 테이블의 모든 레코드를 포함하고 오른쪽 테이블에서 일치하는 레코드를 결합합니다. 왼쪽 테이블의 기본 키 또는 외래 키를 기준으로 조인합니다.
RIGHT JOIN
오른쪽 테이블의 모든 레코드를 포함하고 왼쪽 테이블에서 일치하는 레코드를 결합합니다. 오른쪽 테이블의 기본 키 또는 외래 키를 기준으로 조인합니다.

profile
모든 사람이 쉽게 이해할 수 있는 데이터 분석을 지향하는 분석가가 되고 싶습니다. "데이터 분석은 사람을 설득 시킬 수단이다. "

0개의 댓글