외부 코드를 내부 코드와 통합 관리할 때, 외부에서 받은 코드 값을 그대로 사용하지 않아도 된다면 외부 코드 값을 내부 코드 표준에 맞게 관리한다.
외부 기관과 데이터를 주고받을 때, 외부 기관에서 정한 코드 값이 데이터에 포함되는 경우가 많다. 이때 외부 코드 값이 많이 사용되지 않고 간혹 사용된다면 외부 코드를 내부 코드 표준에 맞게 통합 관리할 수 있다.
[그림1] 모델은 코드를 관리하는 일반적인 모델에, 외부 코드를 관리할 수 있도록 설계한 모델이다.
[그림1]
외부에서 받은 코드 값은 ‘KOR’이지만 내부에서는 ‘01’ 등 내부 표준을 정해 관리한다면, 통합코드 엔터티의 외부코드값 속성에는 ‘KOR’ 값으로 관리하고, 통합코드번호 속성에는 내부 표준에 맞춰서 ‘01’로 관리한다.
외부에서 받은 코드는 길이가 일정치 않기 때문에 외부코드값 속성의 데이터 타입 길이는 충분히 크게 정한다. 이 속성은 내부 코드일 때는 널 값이기 때문에 널 허용이어야 한다.
통합코드유형 엔터티의 내부외부구분코드 속성은 중복 속성으로 삭제할 수 있지만 구분해 주는 것이 좋다. 원칙적으로 통합코드 엔터티의 외부코드값 속성 값이 널 값이면 내부 코드고, 값이 존재하면 외부 코드다.
[그림1] 모델에 대한 릴레이션은 아래와 같다.
[통합코드유형]
#통합코드유형번호 |
통합코드유형명 |
내부외부구분코드 |
001 |
고객유형코드 |
내부 |
002 |
국가구분코드 |
외부 |
[통합코드]
#통합코드유형번호 |
#통합코드번호 |
통합코드명 |
외부코드값 |
001 |
01 |
내국인 |
{null} |
001 |
02 |
외국인 |
{null} |
002 |
01 |
대한민국 |
KOR |
002 |
02 |
아르헨티나 |
ARG |
002 |
03 |
독일 |
GER |
002 |
04 |
미국 |
USA |
[그림2]
통합코드유형 릴레이션에서 내부와 외부 코드인지를 구분한다. 통합코드 릴레이션의 통합코드번호 속성에는 내부에서 정한 값(01)으로 관리하고, 외부에서 받은 코드값(KOR)은 외부코드값 속성에서 관리한다.
만약 외부에서 받은 코드 값을 내부 시스템에서 그대로 사용한다면, 외부 코드 값을 내부 코드 표준을 따르지 않고 그대로 코드 값으로 사용한다.
[그림3] 통합코드 엔터티의 통합코드 속성은 내부와 외부 코드를 통합 관리하는 속성이다.
[그림3]
외부에서 정한 코드까지 포함되므로 통합코드 속성의 데이터 타입 길이는 충분히 길게 정한다. 코드가 외부인지 내부인지는 통합코드유형 엔터티의 내부외부구분코드 속성으로 관리한다.
[그림3] 모델에 대한 릴레이션은 아래와 같다.
[통합코드유형]
#통합코드유형번호 |
통합코드유형명 |
내부외부구분코드 |
001 |
고객유형코드 |
내부 |
002 |
국가구분코드 |
외부 |
[통합코드]
#통합코드유형번호 |
#통합코드 |
통합코드명 |
001 |
01 |
내국인 |
001 |
02 |
외국인 |
002 |
KOR |
대한민국 |
002 |
ARG |
아르헨티나 |
002 |
GER |
독일 |
002 |
USA |
미국 |
[그림4]
통합코드 릴레이션의 세 번째 인스턴스와 같이 외부 코드에 대한 코드 값을 외부에서 정한 값 그대로 관리한다. 외부에서 받은 코드 값을 내부 코드 값과 같이 관리한다.
이처럼 외부 코드값을 그대로 사용하면 내부 코드 값과 혼합되어 일관성 없이 사용되는 단점이 있다. 내부 코드값은 표준에 따라 두 자리로 관리되고, 외부 코드 값은 자릿수가 제각각이 된다.
하지만 외부 코드값을 사용할 때 받은 값 그대로 사용하기 때문에 그 값을 코드로 관리하면 사용할 때 혼동되지 않는다. 또한 자주 사용하는 값을 그대로 코드로 사용하기 때문에 더 직관적이다.
'데이터 Story > 모델링 매뉴얼' 카테고리의 다른 글
통합 코드 속성 명명법 (0) | 2017.05.20 |
---|---|
외부에서 받은 코드 값만 관리할 때 (0) | 2017.05.13 |
내부 코드 통합 엔터티 (0) | 2017.05.07 |
개별 엔터티로 설계해야 하는 코드 (0) | 2017.04.10 |
코드로 설계 or 엔터티로 설계 (0) | 2017.04.07 |