충분히 쌓여가는
01 조인 JOIN 본문
조인 JOIN
2개 이상의 테이블에서 쿼리를 작성하는 방법
테이블을 2개 이상 조인한다는 의미
보통 잘 설계한 관계형 데이터베이스의 테이블은 1가지 이상의 엔티티(entity)를 포함
ERD 구성
nasdaq_company 테이블에는 기업의 종목 코드(symbol)나 기업 이름(company_name) 등의 정보가 저장되어 있고,
stock 테이블에는 symbol에 따른 일별 가격 정보가 저장되어 있다.
일별 거래가를 검색할 때 기업 이름을 함께 표시하려면?
현재 테이블이 분리된 상황이므로 테이블의 데이터를 조합해야한다.
이럴 때 사용하는 것이 조인
조인은 테이블 A의 열과 테이블 B의 정보를 포함해 검색할 수 있게 만들어 준다.
왜? 테이블을 처음 만들 때부터 stock 테이블에 company_name 열을 만들지 않는걸까?
그렇게 만들면 stock 테이블과 nasdaq_company 테이블 둘 다 company_name이 있기 때문에 데이터가 중복 저장되는 문제가 생긴다.
데이터를 중복 저장하면 저장할 공간이 더 필요한 문제와, 중복 저장한 열 데이터를 수정할 경우
해당 열을 가진 테이블의 데이터를 모두 찾아 수정해야 하는 문제가 생긴다.
결국 데이터 중복을 최소화하는 설계는 피할 수 없으므로, 조인을 사용해 2개 이상의 테이블을 조합한 결과를 검색하는 방식이 효율적이다(데이터 중복 없이 구성한 데이터 구조를 정규화 2단계라고 한다).
데이터 모델링과 정규화
데이터 모델링(Data Modeling)이란 주어진 상황에서 논리 데이터 모델을 구성하는 작업.
데이터 모델링이 끝나면 논리 데이터 모델을 물리 데이터 모델로 바꾼 다음 실제 데이터베이스에 반영하는 작업을 진행한다.
정규화는 논리 데이터 모델의 중복을 제거해 일관성 있고 안정적인 자료구조를 만드는 단계.
정규화는 1 정규형부터 5차 정규형, BCNF 정규형을 포함하는데 일반적으로는 3차 정규형을 사용한다.
3차 정규형은 데이터 모델이 적절한 일관성을 유지하면서도 중복이 없는 논리 데이터 모델을 구성하는 것을 말한다.