무슨 말이냐면, 공통 코드 테이블 설계같은건 사실 비즈니스 요구사항을 분석해서 적용하는 설계가 아니라 어느정도 정형화되고 패턴화된 설계이다.

이런 패턴화된 설계와 비즈니스와 관련된 테이블을 설계할때의 차이점을 알아보는 시간.

왜 공통 코드에 대리키를 사용하지 않는가?

대리키(Surrogate Key)를 왜 안쓰는가? 시스템 내부에서 관리하는 의미없는 숫자를 왜 키로 사용하지 않는가?

공통 코드 테이블은 code라는 문자열을 키로 사용한다. 즉 자연키(Natural Key)를 복합키로 구성해서 사용한다. 왜?

1. 데이터 가독성

만약 공통 코드 테이블에 대리키를 적용한다면? 아마 구조가 다음과 같이 될 것임

common_code_detail 테이블 PK: code_id

orders 테이블 컬럼: order_status_id

즉 인간이 봤을때는 뭔지 모를 무의미한 식별자 값으로 둘이 묶인다. 그래서 이 상태에서 주문 테이블만 조회한다면

SELECT order_id, order_status_id FROM orders;

image.png

뭐가 뭔지 알수가 없다…

이 경우 반드시 공통 코드 테이블까지 조인해서 각 order_status_id가 어떤 의미를 갖고 있는지까지 알아봐야 한다. 벌써 불편하다.

반면 문자열 code를 PK로 사용하면 편리해진다. 조인없이도 주문 테이블만 조회하면 아래와 같이 바로 의미를 알 수 있음.

image.png