Post

(SQL) JOIN할 때 주의해야할 점

잠시… 상상을 해봅시다. 어떤 데이터를 만들기 위해선 다른 테이블을 JOIN해야하는 상황이 찾아왔습니다. 근데 JOIN 키가 눌리면서 쿼리는 이미 날라갔고 DB가 막 일을 하고 있는데 Primary Key가 문제가 있는게 보였어요, 혹은 다른 문제가 보인거죠. 중복 데이터 보인다던지 말이죠. 그럼 JOIN된 결과는 어떨까요? 그려지시나요?



맞아요! 더 엉망이 되겠죠! 그래서 JOIN을 할 땐 항상 주의를 해야합니다. 이번 글에서는 이런 관점에서 JOIN을 할 때 확인해야하는 것들을 살펴보도록 하겠습니다.

  • 중복 레코드가 없고 PRIMARY KEY의 uniqueness가 보장되는지 확인해야 합니다.
  • 조인하는 테이블들간의 관계를 명확하게 정의해야합니다.
    • 1 대 1 매칭
      • 완전한 1 대 1 매칭
      • 한쪽이 부분집합이 되는 1 대 1 매칭 (ex.한 테이블의 row가 더 적어서 JOIN했을 때 NULL로 채워지는 매칭)
    • 1 대 다수 매칭
      • 이 경우 중복이 더 큰 문제가 됩니다.
    • 다 대 다 매칭
      • 이런 경우는 흔치 않으며 1 대 1 혹은 1 대 다 매칭으로 바꾸는 것이 가능하다면 변환하여 조인하는 것이 위험성을 덜어줍니다.
  • 어느 테이블을 베이스로 잡을지(FROM에 사용할지) 결정해야 합니다.
This post is licensed under CC BY 4.0 by the author.