더북(TheBook)

조인의 필요성

관계형 데이터베이스를 사용하는 애플리케이션 개발자는 종종 여러 테이블에 있는 데이터로 작업해야 한다. 그림 8-2에 나와 있는 주문 항목과 제품 엔터티를 살펴보자.

▲ 그림 8-2 주문 항목과 제품은 일대다 관계에 있다. 한 주문 항목에 대한 제품 정보를 조회하려면 공통으로 참조되는 속성 하나를 공유해야 한다. 이 경우에는 Product_ID가 공유 속성이 된다


특정 주문에 속해 있는 모든 항목을 포함한 주문 리스트를 조회하는 보고서를 개발한다면 제품 이름, 단가, 수량 같은 속성도 포함해야 할 것이다. 제품 이름은 제품 테이블에 있고 단가와 수량 속성은 주문 항목 테이블에 있다(그림 8-3).

Note 논리 모델과 물리 모델 간의 차이를 잘 알고 있다면 여기서 용어가 혼재되어 사용되었다는 것을 눈치챘을 것이다. 그림 8-1과 8-2는 논리 모델을 보여주는데, 여기서는 엔터티와 속성이란 용어를 사용하고 있다. 만약 데이터베이스를 사용해 보고서를 개발하고 있다면 물리 모델을 사용할 것이다.

물리 모델에서 말하는 테이블, 컬럼이란 용어는 논리 데이터 모델에서 사용하는 엔터티, 속성과 같은 구조를 나타낸다. 물론 엔터티와 테이블 간에 약간의 차이는 있다. 예를 들어 테이블은 디스크나 테이블 스페이스라고 하는 다른 데이터 구조에 저장되어 있지만 엔터티에는 이런 특성이 없다.

이 장에서는 엔터티는 테이블, 속성은 컬럼과 동의어로 사용할 것이다.

▲ 그림 8-3 조인을 하려면 테이블 간에 외래 키라는 공통 값을 공유해야 한다

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.