데이터가치연구소 공식 블로그

코드란 무엇인가요?

오래전 이야기입니다.
동료 컨설턴트와 ‘코드’에 관해 토론하였습니다.
지금처럼 저장 공간이 충분한 시대에 과연 ‘코드’가 필요한가?

여러분은 어떻게 생각하시나요?
10, 20, 30, ···
이와 같은 코드가 지금도 필요한가요?

당시 제 생각은 ‘필요없다’ 였습니다.
코드를 사용하는 대신 ‘값’을 쓰자는 것이지요.
‘구매’, ‘발송’, ‘취소’, ···
이유는요?
저장 공간은 충분하니까요 ㅎㅎ

그로부터 한참의 시간이 흘렀습니다.
지금도 ‘코드’가 정말 필요한지 다시 생각해 보았습니다.
지금의 결론은요?
‘필요하다’ 입니다!
생각이 바뀐 이유가 궁금하신가요?
‘코드’가 무엇인지 명확하게 알고 나면 생각이 바뀐 이유를 이해할 수 있을 것입니다.


  • 코드란?

코드를 한 마디로 어떻게 정의할 수 있을까요?

‘코드’를 한 마디로 쉽게 정의하면 ‘어떤 정보를 바꾸는 규칙‘이라 할 수 있습니다.

수학 기호

만약, 수학에서 ‘기호’가 없다면 어떨까요?

4 – 3 = 1

위의 간단한 수식도 ‘4에서 3을 빼면 1 이다’ 라고 풀어서 써야겠지요?
그런데 사실 4, 3, 1 과 같은 숫자 역시도 ‘기호’입니다.
이처럼 ‘기호’를 사용하면 복잡한 것을 단순하게 표현할 수 있습니다.

‘코드’는 ‘기호’와 같습니다.
길고 복잡한 것을 간결하게 표현합니다.

그런데 이렇게 간결하게 표현하면 어떤 장점이 있을까요?
커뮤니케이션 즉, 의사소통을 간편하게 할 수 있습니다.
이것은 마치 현대 사회에서 물물교환 대신 화폐로 거래하는 것과 같습니다.
만 원짜리 한 장이면 중국집에서 짜장면을 한 그릇을 먹고도 남습니다.
화폐가 없다면 우리는 짜장면을 먹으려고 물건을 대신 건네줘야 할 것입니다.

길고 복잡한 표현을 ‘코드’로 단순하게 바꾸면 두 가지 장점이 있습니다.
1. 관리가 간편해집니다.
2. 의사소통이 단순해집니다.

아래는 국토교통부에서 정의한 ‘용도지역지구구분’ 코드의 예시입니다.

  • 용도지역지구구분
    • UAA000 – 국토종합용도지역미분류
    • UAA100 – 국토종합용도지역특정지역
    • UAA999 – 국토종합용도지역기타
    • UAZ000 – 국토이용기타용도지역지구미지정

위의 예에서 UAA000, UAA100, UAA999 와 같이 동일한 길이를 가진 값을 ‘코드값’이라 합니다.
‘국토종합용도지역미분류’, ‘국토종합용도지역특정지역’ 처럼 ‘코드값’을 설명하는 내용을 ‘코드값명’이라 합니다.
‘용도지역지구구분’ 처럼 여러 ‘코드값’을 가지는 것을 ‘코드명’이라 합니다.
또한, 이 ‘용도지역지구구분’ 코드명에 특정 코드를 부여한 것을 ‘코드ID’라 합니다.
예를 들면 ‘용도지역지구구분’에 코드ID를 ‘0001’로 지정할 수 있지요.
이것을 도식화하면 다음처럼 표현할 수 있습니다.

코드 구성도 예시

위 예시에서 알 수 있듯이 코드명, 코드값명은 길이가 다양합니다.
반면, 코드ID와 코드값은 길이가 일정합니다.
그래서 보통 코드ID와 코드값의 데이터타입은 숫자보다는 문자로 지정합니다.
코드ID나 코드값이 같은 길이를 가져야 한다는 이유는 아직 발견하지 못했습니다.
다만, 통상적으로 코드ID, 코드값은 동일한 길이의 문자형으로 정의한다는 것은 기억하시기 바랍니다.


코드는 크게 두 가지 방식으로 관리합니다.
하나는 공통코드이고, 다른 하나는 목록성코드입니다.
각각의 특징을 알아보겠습니다.

  • 공통코드*
    * 공통코드는 단일코드 라고도 합니다.

현실에서 가장 많이 사용하는 형태입니다.

공통코드 ERD 예시

위에서 설명하였던 코드ID – 코드명, 코드값 – 코드값명을 담을 수 있는 형태이지요.
실제로 값이 담긴다면 아래와 같은 형태로 저장될 것입니다.

공통코드 인스턴스 예시

이처럼 공통코드는 여러 코드를 한 곳에서 관리합니다.

이렇게 관리하면 어떤 장점이 있을까요?
기업이나 기관에서 보유하고 있는 코드를 쉽게 파악할 수 있습니다.
새로운 코드를 등록하더라도 기존에 이미 있는 코드인지 확인도 쉽겠지요.

하지만 모든 코드를 공통코드에서 관리할 수 있는 것은 아닙니다.
개별적으로 관리할 코드가 존재합니다.
그래서 태어난 것이 목록성코드입니다.

  • 목록성코드

공통코드에서 관리하는 코드값, 코드값명 외에도 더 많은 정보를 관리할 필요가 있을까요?
예를 들어, 전국의 은행을 코드로 관리한다고 가정해 보겠습니다.
은행별로 코드값과 코드값명을 아래와 같이 부여할 수 있겠지요.

은행코드 예시

그런데, 은행마다 ‘거래가능시간’, ‘폐쇄여부’ 정보도 관리해야 한다면 어떨까요?
공통코드 테이블에 이 칼럼을 추가해야 할까요?
그렇지 않습니다.
이때는 은행을 관리하는 별도의 코드 테이블을 만듭니다.
아래와 같은 형태가 되겠지요.

은행정보를 관리하는 목록성코드 예시

위의 예시처럼 관리하는 코드 테이블을 목록성코드라 합니다.
목록성코드 테이블은 관리할 정보에 따라 형태가 다양합니다.

기업이나 기관에는 다양한 형태의 목록성코드를 가지고 있습니다.
이러한 목록성코드 테이블은 리스트로 관리하시기 바랍니다.
그러한 코드 테이블을 리스트로 관리하지 않는다면 어떤 목록성코드를 보유하고 있는지 파악이 어렵습니다.
그나마 ‘ㅇㅇㅇ코드’라고 테이블의 명칭을 만들었다면 코드 테이블이라고 유추할 수 있습니다.
그런데 그러한 표준도 없이 만들어진 테이블은 코드 테이블인지 일반 테이블인지 알기 어렵습니다.
목록성코드 테이블을 만들었다면 해당 테이블의 목록을 관리하는 것을 적극 권장합니다.


서두에서 과거에 저는 코드가 필요 없다고 생각했지요.
코드에 대한 저의 생각이 변하는 것을 보면 무엇을 느끼시나요?
우리가 어떠한 주장을 한다는 것 – 그것은 아는 만큼만 ‘주장’한다는 것입니다.
배움이 많아지고 생각이 깊어지면서 우리가 ‘주장’도 익어갑니다.

author avatar
데이터가치연구소 데이터가치플래너
『공공기관 표준화 전문』 대표 컨설턴트 허 상 철 |
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments