권순용의 데이터모델링 이야기
특수한 엔티티 설계를 확인하자 0 0 3,562

by axiom 엔티티 Entity 코드엔티티 [2014.05.11]


데이터 모델의 중요한 요소 중의 하나가 엔티티(Entity)이다. 이와 같은 엔티티는 근본 엔티티, 중심 엔티티 등 여러 가지 형태로 존재하며, 이런 형태 말고도 다르게 구분할 수도 있다.

엔티티의 구성이야말로 시스템 구축 과정에서 필수라고 여겨지므로, 이번 강의에서는 데이터 모델링을 수행하는 과정에서 자주 등장하는 코드 엔티티와 코드들에 어떠한 RULE을 정의하는 RULE 엔티티에 대해 살펴본다.

코드 엔티티와 RULE 엔티티는 매우 많이 사용하게 되므로 정확히 이해하고 구성해야 한다.

코드 엔티티의 개념

모델링을 하면서 코드 엔티티의 개수가 많아진다면 관계는 복잡해진다. 관계가 복잡해지면 두 가지 문제점이 발생할 수 있다.

  • - 논리 모델의 복잡 : 코드 엔티티가 증가하면 ERD에는 많은 엔티티를 표현해야 하므로 ERD 자체가 매우 복잡해질 수 있다.
  • - 성능 저하 발생 : 중복된 데이터를 제거하고 코드 엔티티로 구현한다면 데이터의 정합성은 향상되지만 [그림1]의 예제처럼 관계를 가지므로 많은 조인을 수행해야 한다. 조인을 수행하면서 대용량 데이터의 중심 엔티티의 조인 순서를 보면 중심 엔티티에 있는 엔티티는 앞에 액세스돼야만 한다. 그렇다면 대용량 엔티티가 조인의 앞에 액세스되므로 성능 저하가 발생하게 된다.

  • [그림1] 복잡한 관계로 인한 두 가지 문제점
  • 복잡한 관계로 인한 두 가지 문제점

[그림1] 복잡한 관계로 인한 두 가지 문제점 위와 같은 이유에서 코드 엔티티는 데이터의 정합성을 높이면서 최소의 개수로 엔티티를 도출해야 한다.

코드 엔티티의 구성

코드 엔티티의 개수가 많다면 애플리케이션 작성 시 복잡해진다. 물론 조인을 수행해 원하는 데이터를 추출하는 경우 성능 저하가 발생할 가능성은 높아진다. 따라서 여러 개의 코드 엔티티를 하나의 엔티티로 통합하는 것이 유리할 수도 있다.

[그림 2]의 예제와 같이 모든 코드 엔티티가 코드_ID 속성과 코드명 속성으로 구성된다면 하나의 코드 엔티티로 생성해 해당 코드 엔티티는 코드번호 Attribute, 구분명 Attribute, 코드_ID Attribute 및 코드명 Attribute로 구성한다.

이와 같이 구성한다면 모든 코드 값을 하나의 엔티티에서 관리할 수 있을 것이다. 이 경우 코드 엔티티에서 구분명 Attribute의 경우에는 중복된 데이터를 저장하게 되므로 근본 엔티티로 분할할 수 있게 된다. 물론 이 과정을 정규화라고 한다.

  • [그림2] 모든 코드 엔티티가 코드_ID 속성과 코드명 속성으로 구성
  • 모든 코드 엔티티가 코드_ID 속성과 코드명 속성으로 구성

데이터 모델링을 수행하는 과정에 회원 엔티티 또는 가맹정 엔티티 등은 가맹점 이름 또는 회원 이름을 추출하기 위해 코드 엔티티와 같이 사용하게 된다. 이와 같이 사용되는 코드 엔티티는 실제로는 코드 엔티티는 아니다.

그렇기 때문에 해당 엔티티는 하나로 동질성을 가지고 있더라도 하나의 엔티티로 통합해서는 안 된다. 두 엔티티를 하나의 엔티티로 통합하는 순간, 성능 저하 및 데이터 정합성이 위험해지는 엄청난 문제들이 발생할 것이다.

  • [그림3] 해당 엔티티가 동질성을 가지고 있어도 통합하지 않음
  • 해당 엔티티가 동질성을 가지고 있어도 통합하지 않음

RULE 엔티티의 구성

코드 값에 Rule을 적용하는 것은 [그림 4]와 같이 두 가지 방법이 존재한다.

  • - RULE 엔티티 추가 : Rule을 적용하고자 하는 코드에 대해 Rule 엔티티를 생성해 CODE 엔티티와 1:M의 관계를 가지게 한다. 해당 방법은 하나의 코드에 여러 개의 Rule이 존재하는 경우에 유용하게 사용할 수 있다.
  • - RULE Attribute 추가 : 하나의 코드 값에 하나의 Rule만이 존재한다면 Rule 엔티티와 Rule 엔티티를 통합해 Attribute로 구현할 수 있다. 각 코드에 Rule이 하나만 존재한다면 이와 같은 방법을 사용할 수 있다.

  • [그림4] 코드값에 Rule을 적용하는 두가지 방법
  • 코드값에 Rule을 적용하는 두가지 방법

이와 같이 코드 엔티티 및 RULE 엔티티를 구성하게 된다.

- 강좌 URL : http://www.gurubee.net/lecture/2749

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입