- 속성의 분류방법 중 하나 : 코드속성과 비코드속성
코드속성 : 사전에 약속한 값인 코드 값이 사용된 속성이 코드 속성
코드속성에 저장된 코드값과 이코드값이 의미하는 설명은 공통엔터티에서 관리
코드속성은 이미정해놓은 값만 사용한다. 코드엔터티를 봐야 값이 의미를 알수 있다.
비코드속성 : 코드속성이 아닌 일반속성은 비코드 속성
공통코드에서 관리하는 값과 무관한 값이 저장.
실제값이 저장되기 때문에 값을 보고 의미를 파악해야 한다.
의미파악이 안된다면 데이터자체가 잘못되었거나 관계속성일때다.
-일반코드와 식별자코드
식별자코드는 엔터티의 주식별자 이면서 속성이름이 '~ 코드'로 끝난 속성이다. 주식별자 값에 코드의 의미가 유무와 상관없이 주식별자 자체를 의미한다. 대표적인 식별자코드는 부서코드, 사원코드, 대리점코드등등이다.
식별자 코드 특징
- 독립된 엔터티가 존재
부서엔터티의 주식별자는 부서코드 속성이다. 식별자 코드값과 코드명을 부서코드, 부서명 외에도 부가데이터, 엔터티를 설명하는 다른 속성까지 관리하기 때문에 개별엔터티로 설계한 것이다. 만약 부서코드와 부서명만을 관리하며, 추후에도 추가되는 속성이 없다면 일반코드로 정의해서 공통코드에서 관리할 수 있다. '~코드'보다 '~번호'로 붙이는게 일반속성과 혼동을 피할수 이다.
-하나의 인스턴스가 하나의 실체를 의미
식별자 코드가 의미하는 값은 독립적인 하나의 실체이다. 식별자 코드 자체가 하나의 인스턴스를 의미하며, 하나의 실체를 의미한다.
일반코드는 독립적인 실체에 대한 묶음이나 집합을 의미한다. 유형이나 구분은 집합개념이다.
일반코드 인스턴스는 주로 메타시스템에서 통합관리되며, 식별자코드 인스턴스는 일반 개별엔터티에거 관리된다.
인스턴스 입력수정삭제 때도 일반코드는 메타시스템화면을 통해서, 식별자코드는 일반화면을 통해서 입력수정한다.
식별자코드는 인조식별자가 대부분이다. 단독속성으로 구성되어야 하며, 인조식별자 값의 체계가 존재하는 것은 좋지 않다. 업무식별자가 복잡해서 인조식별자를 사용하려는 목적이외에 다른의도를 가지고 사용하는 것은 바람직하지 않다.
식별자코드와 연관된 엔터티는 실체엔터티다. 실체엔터티는 하나의 독립적인 실체를 관리한다. 다른속성이 추가될 가능성이 있으므로 별도의 엔터티로 설계하는 것이 바람직하다. 부가속성을 관리하지 않더라도 실체를 관리하는 엔터티는 별도로 설계하는 것이 바람직하다.
식별자코드와 일반코드의 관리
-일반코드이면서 내부데이터
코드 엔터티에서 통합관리. 이때 코드값은 전사표준에 의해서 정한다. 일반적으로'01'부터 차례로 부여하여 코드 인스턴스를 생성한다.
-일반코드이면서 외부데이터 관리방법
1-1.전문정의서 또는 인터페이스정의서 등에서 정한 코드 인스턴스를 공통코드 엔터터에서 통합관리하는 방법
외부에서 KOR이면 내부에서 KOR로 고대로 관리하는 것. 관리하면 내부코드값고 혼합되어 일관성 없이 관리되는 단점
코드값 속성의 자릿수는 임의이 외부코드값을 저장해야 하므로 충분히 커야 함. 내부/외부 코드 구분을 위해 구분코드속성도 관리해야함
1-2. 외부코드값을 내부표준에 맞게 관리하는 벙법
외부 'KOR'값을 내부'01'로 관리하는 방법. 이때는 코드엔터티와 강티 외부코드값 속성을 별도로관리해야 함. 외부코드값 속성을 null 허용해야 함.코드유형속성은 삭제가능하다. 외부코드값 값이 존재하면 외부코드 아니면 내부코드 이기때문에
외부코드값을 속성으로 관리하지 않고, 별도의 엔터티에서 내부코드값과 외부코드값을 매핑해서 관리하는 경우 관리하기 어렵고 사용하기도 번거롭다.
2-1. 별도의 엔터티에서 외부코드를 관리하는 것. 외부코드를 별도로 관리하면 관리측변에서 수월하지만, 사용하기 불편하고, 외부에서 정한 코드 인스턴스를 내부에서도 그대로 사용한다면 혼란을 야기할수 있다. 코드 데이터는 공통코드엔터티에서 통합관리하는게 바람직하다.
만약 외부에서 받은 코드값만을 저장할 뿐 코드명이 필요치 않을 때는 별도의 엔터티에서 코드 인스턴스를 관리할 필요가 없다.
-식별자코드이면서 내부데이터
식별자코드는 일반엔터티에서 관리하므로 문제가 없다. 내부엔터티에서 설계하고 필요한 속숭을 추가해서 관리하면된다.
-식별자코드이면서 외부데이터
외부에서 받을 데이터를 식별자코드와 함께 명을 사용한다면 이를 별도 엔터티에서관리해야 한다.
외부부서코드 속성에 외부기관의 부서코드값이 저장되고, 해당부서가 어떤 부서인지 알아야 한다면 아래와 같은 모델이 된다.
주문결제내역 엔터티의 외부 부서코드속성은 식별자 코드며, 외부에서 받은 데이터이다. 이 속성에 저장된 값에 대한 상세정보는 외부부서 엔터티에 참조해야 한다. 외부기관에서 보내준 속성 그대로 설계하고, 외부에서 엔터티와 같이 외부에서 받은 데이터를 관리하는 엔터티는 보통 마스터성격의 엔터티일 경우가 많다.
식별자코드와 일반코드의 상호변환
공통코드 엔터티로 통합 관리하다가 추가데이터가 필요하여 개별엔터티로 분리했을때
-공통코드엔터티에서 관리하던 국가에 해당하는 인스턴스를 삭제해야 한다. 기준이 되는 데이터가 양쪽에 존재하면 안된다. 공통코드엔터티에도 남게된다면 데이터의 정합을 맞추기가 어려워 결국 무결성 깨질 우려가 있기때문이다.
통합코드로 설계할지 개별엔터티로 설계할지?
코드와 엔터티를 구분할때 염두해두어야 할것 2가지.
첫번째 데이터집합의 인스턴스가 개별개체를 의미하는지 봐야하고 그 인스턴스가 이름이외의 특성이 있는지 봐야 한다.
하나의 인스턴스가 개별개체를 의미하면 엔터티를 도출하는 것이 기본원칙이다.
ex)국가집합에 속한 인스턴스가 대한민국,호주 영국 각각개별개체를 의미하기 때문에 기본적으로 엔터티로 관리해야 한다. 만약 아시아, 유럽, 오세아니아 등이라면 개별개체라고 볼수 없다. 이때는 코드로 관리해야 한다.
집합의 인스턴스가 국민은행, 우리은행이라면 이역시 실제로 존재하는 개별개체라고 볼수 없다. 그러나 국민은행 마포지점이라면 실체의 개별개체이므로 인터티로 관리하면된다.
집합의 인스턴스가 개별개체를 의미하는지 판단후 인스턴스에 포함된 특성이 이름뿐이지 그외 다른정보도 관리가 필요한지 판단해야 한다.
개별개체를 묶는 개념이라도 고유속성이 존재한다면 엔터티로 설계해야한다.
인스턴스 성격이 개별실체를 의미하고 해당특성이 이름뿐이라면 코드로 관리할수 있다. 향후에 관리속성이 늘어날 가능성이 있다면 엔터티로 설계하는 것이 좋다.
엔터티로 관리해야 할 데이터를 코드로 관리하면 문제가 발생할 수 있다. 데이터 성격에 맞게 엔터티를 도출하여, 데이터가 실제의 개체를 의미하는지 개체위 묶음을 의미하는지에 따라 판단하면 무난하다.
'관계형데이터모데링노트 요약' 카테고리의 다른 글
코드속성 2 (0) | 2023.11.29 |
---|---|
코드 속성 1 (1) | 2023.11.27 |
식별자 종류 Part 1. (0) | 2023.11.18 |
업무식별자와 인조식별자의 혼합 (1) | 2023.11.14 |
인조식별자 (0) | 2023.11.14 |