본문 바로가기
Database

[Database]공통코드 구조

by kyunb 2022. 9. 30.

시스템 통합 프로젝트를 진행하면서 기존의 공통코드 구조를 개선해야 하는 상황에 직면했습니다. 

이에따라 공통코드 구조의 개념을 다시 정립할 수 있는 시간이 됐습니다.

이번 포스팅은 공통코드테이블의 구조에 대해 다루어 보겠습니다.

(회사 블로그의 포스팅을 참고했습니다.ㅎ0ㅎ)

 

대표적인 4가지 공통코드 구조에 대해 소개하겠습니다.

 


 

1. 공통 코드 유형과 공통코드로 구성한 형태

공통코드유형과 공통코드

식별자가 코드유형ID, 코드 조합으로 구성되어 있으며, SQL로 고객유형코드 조회 시 코드유형ID = '1000'조건을 추가하여 사용합니다. 코드유형ID 대신 코드유형영문명 = 'CUST_CLS'처럼 코드유형 영문명을 사용하면 코드유형ID보다 직관적이어서 코딩 생산성을 높일 수 있습니다.

또한, 아래 그림처럼 공통코드유형과 공통코드 엔티티를 하나로 합쳐 순환 관계로 관리하는 형태도 있을 수 있습니다. 이는 엔티티 형태만 다를뿐 다른 부분은 크게 다르지 않습니다.

코드유형 + 코드 엔티티 통합

 

2. 코드유형 + 코드 엔티티 통합 형태

코드유형 + 코드

공통코드 식별자를 '10001'(고객유형중 개인고객)처럼 코드(코드유형ID + 코드) 속성으로만 구성하고 코드유형ID는 일반 속성으로 관리할 수 있습니다.

위의 경우는 코드명을 조회하기 위해 코드유형ID = '1000'조건을 추가하지 않아도 됩니다. 코드에 대한 공통유형ID조건 없이 코딩이 가능하므로 코딩 생산성이 높고, 코드 값으로도 코드유형을 알 수 있습니다. 다만 위와 같은 경우에  코드가 길어지기 때문에 저장공간을 많이 차지하는 문제가 있을 수 있습니다.

 

3. 코드유형, 코드 간 종속관계

코드유형, 코드 간 종속 관계

위의 그림은 고객유형은 개인과 법인으로 나누고, 고객상세유형으로 개인은 개인사업자로 법인은 영리법인, 비영리법인, 단체로 다시 분류합니다. 화면의 고객유형에서 법인을 선택했을 때, 고객상세유형 콤보박스에 법인에 해당하는 영리법인, 비영리법인, 단체만 조회되도록 설계합니다. 고객 유형에 따라 고객상세유형에 저장할 수 있는 값의 범위가 정해져 있습니다.

 

4. 코드유형 간 포함관계

아래와 같이 코드유형이 다른 코드유형의 부분집합으로 관리하는 경우도 있습니다. 예를 들어, 은행코드는 "경남", "광주", "국민", .... 등 모든 은행코드를 관리하고, 거래은행코드는 "국민", "하나", "신한"만 관리할 수 있습니다. 위와 같은 경우는 코드유형을 별도로 생성하거나 코드유형 변경없이 데이터 구조를 다르게 설계할 수 있습니다.

코드유형 간 포함관계