DATOR


관계의 표현 관계


 다음과 같은 계좌 엔터티에서 상위 엔터티와의 관계는 몇 개일까? 좀 더 쉽게 접근해서 관계로 인해 상위 엔터티의 식별자를 하위 엔터티의 식별자나 속성으로 전달해 준다라고 했는데(http://www.dator.co.kr/jslee/94968 ) 계좌 엔터티 속성 중 타 엔터티의 식별자를 상속받은 속성은 무엇일까?

 

 계좌단순4.JPG    

 

 DataWare DA에서 식별자는 '#'을 속성명 앞에 붙인 것이므로 계좌 엔터티의 식별자는 계좌번호 임을 알 수 있다. 나머지 속성 중 계좌개설일시를 제외하고는 모두 상위 엔터티의 식별자를 상속받은 것으로 보아야 한다. 기본적으로 코드 속성들은 해당 코드 엔터티와의 관계로 인해 생성된 속성이며, 고객번호와 관리사원번호는 각각 고객 엔터티와 사원 엔터티와의 관계에 의해 생성된 속성이다. 만약 상위 엔터티들이 없다면 계좌 엔터티에는 고객명, 계좌상품명, 개설지점명, 적립형태명 등이 와야 할 것인데, 이들이 각각 고객번호, 계좌상품코드, 개설지점코드, 적럽형태코드로 관리되는 것으로 보아 충분히 상위 엔터티가 존재한다고 해석할 수 있다.  이들 상위 엔터티를 모두 표시하면 다음과 같은 모델이 만들어진다.

 

 계좌관계3.JPG

 

 그림에서 계좌 엔터티는 6개의 상위 관계가 존재하는데, 공통코드 엔터티를 만들어 상위 엔터티는 5개만 표현하고 있다. 그런데 실전에서의 계좌 엔터티는 차입구분코드, 자금용도코드, 세과목코드, 사고구분코드, 통화단위코드,  담보구분코드, 대출구분코드 등 수십 개의 코드 엔터티와의 관계가 존재하고, 심사사원번호, 보증고객번호, 추천고객번호 등 코드가 아닌 상위 엔터티와의 관계도 많이 존재한다. 이렇게 관계와 관련된 엔터티를 모두 데이터 모델에 그린다면 모델이 매우 복잡해 질 것이므로 어떤 관계는 모델에 표기하고 어떤 관계는 표기하지 않을 것인가에 대한 기준을 잡아야 한다.

 처음 모델링을 할 때에는 그 기준을 잡기가 좀 애매하다고 느끼기 쉬운데, 데이터 모델의 목적에서 그 기준을 도출할 수 있다. 데이터 모델의 목적은 데이터 구조와 규칙의 표현과 공유라고 하였는데(http://www.dator.co.kr/jslee/94062), 이를 기준으로 생각한다면, 엔터티를 잘 표현하기 위해 필요한 관계는 표기하고, 관계를 생략하더라도 데이터 구조와 규칙의 이해에 별 무리가 없는 관계는 표기하지 않는 것이다.  상위 엔터티의 인스턴스가 반드시 존재해야 하는 약 엔터티(용어설명 : http://www.dator.co.kr/jslee/92572 )의 경우에는 해당 상위 엔터티와의 관계가 엔터티의 이해의 출발점이 되므로(http://www.dator.co.kr/jslee/92873) 그 관계를 표현해야 한다. 또, 절대적 상위 엔터티가 아닌 참조형 상위 엔터티와의 관계는 그 관계가 일반적이지 않은 의미가 있어 그냥 속성으로만 표현하면 오해의 소지가 클 때에만 관계를 표현하고 속성만 보더라도 충분히 이해가 되는 관계라면 관계를 표현하지 않는 것이 데이터 모델의 복잡도를 높이지 않는 방법이다. 문제는 절대적 상위 엔터티를 어떻게 지정하느냐 하는 것인데, 바로 다음 글에서 논하도록 하겠다.

 

TAG

Leave Comments