본문 바로가기
데이터 모델링/모델링 노트 - 관계형 데이터 모델링

1. 엔터티 이야기(3)

by Toddler_AD 2024. 11. 21.

1.4. 엔터티 분류법

  • 어떤 대상을 구분하는 이유는 그 대상의 성질을 파악하는 데 도움이 되기 때문이다.
    • 어떤 대상을 범주로 하면 그 대상의 특징이 더 잘 이해된다.
  • 엔터티를 정의할 때 나름대로 다음과 같이 다양한 각도로 분류해 본다. 다양하게 분류해 볼수록 엔터티의 성격을 더욱 잘 알아낼 수 있다. 자연히 설계한 엔터티는 더욱 명확해진다.
    • 만질 수 있는 것과 만질 수 없는 것
    • 자립 엔터티와 종속 엔터티
    • 원천 데이터와 가공 데이터
    • 실체·행위·가공·기준 엔터티
    • 내부 생성 데이터와 외부 생성 데이터
    • 엔터티 유형에 의한 기본·내역·상세 등의 엔터티
  • 엔터티를 정의할 때 가장 먼저 보는 것은 '보이는 물체인가?'를 따져보는 것이다.
    • 사람/사물과 같이 실제로 존재하는 물건인지, 만져서 느낄 수 있는지부터 따져본다.
  • 그 후에는 엔터티가 스스로 존재할 수 있는 자립 엔터티 여부를 따져본다.
    • 자립 엔터티인지, 다른 어떤 엔터티엔가 존재 종속(Existence Dependency)된 종속 엔터티인지를 따져보는 것도 엔터티의 성격을 파악하는 데 중요한 요소다.
  • 보이는 물체인지, 자립했는지로 데이터 성격을 파악하면 일부 엔터티는 성격이 완전히 파악되기도 한다. 완전히 파악될 때까지 다른 방법으로 계속 따져보면서 심도 있게 분석한다.
  • 실체/행위/가공/기준 엔터티로 구분해 보는 것도 유용하다.
    • 이 중에 어디에 속하는지를 고민해 보는 것은 엔터티를 이해하는 데 많은 도움이 된다.
  • 이처럼 다양한 분류 방법으로 분석하는 것은 엔터티가 어떤 분류에 속하는지를 관리하기 위해서가 아니다.
    • 즉, 분류 자체가 목적이 아니다. 엔터티를 분류하는 목적은 엔터티를 엔터티를 명확하게 이해아기 위해서다.
    • 어떤 데이터인지를 분석하기 위함이 목적이다.
    • 이는 속성과 관계의 분류에도 적용된다.
  • 엔터티를 명확하게 정의하면 데이터 구조는 튼튼해진다.
    • 견고해서 흔들리지 않을뿐더러 유연해서 확장하기도 좋은 구조가 된다.
    • 데이터의 성격을 정확히 분석해 엔터티를 명확히 정의하는 것이 모델링의 시발점이다.

 

1.5. 엔터티 정의 방법 - 보이는 것인가?

  • 엔터티를 분석하거나 설계할 때 가장 먼저 해보는 것은 엔터티에서 관리하려는 대상이 보이는지를 따져 보는 것이다.
    • 보이는 것을 관리하는 에너티는 실체 엔터티를 의미한다.
  • 고객·노트북·상품·자동차 등을 관리하는 엔터티가 보이는 것을 관리하는 엔터티이다.
    • 보이는 실체는 물리적으로 존재하기 때문에 그 대상의 개수가 엔터티의 인스턴스 개수와 같다는 것이 가장 커다란 특징이다.
      • 예를 들어, 노트북을 관리하는 엔터티의 인스턴스가 100개라면 그 회사에서 관리하는 노트북은 100대가 있는 것이다.
      • 이런 엔터티는 대상 하나를 하나의 인스턴스로 관리하는 것이 바람직하다.
  • 보이는 것을 의미하는 데이터는 핵심 데이터일 가능성이 높다.
    • 보이는 실체이기 때문에 인식하기도 쉬워 가능하면 도출하는 것이 좋다.
    • 실체 엔터티는 또한 다른 여러 행위의 주체가 되기 때문에 더욱 중요하다.
    • 보이는 것을 관리하는 엔터티는 많지 않다는 특징도 있다.
    • 많지도 않고 핵심적이기 때문에 엔터티를 분석하거나 설계할 때, 보이는 것을 관리하는지부터 따져 보는 것은 많은 도움이 된다.
  • 보이는 것이 집합이 될 수 있듯이, 보이지 않는 추상적인 것도 집합이 될 수 있고 엔터티가 될 수 있다.
    • 보이지 않는 것은 다시 두 가지로 나눌 수 있다. 연상이 되는 것과 연상이 되지 않는 것으로 나눌 수 있다.
    • 전자는 주문, 강의와 같은 행위를 의미하며, 후자는 환율, 분류와 같은 개념을 의미한다.
    • 둘 다 보이지 않고 개념(Conceptual)으로 존재한다고 볼 수 있다.
    • 실제로 거래와 같은 행위도 보이는 것은 아니기 때문에, 보이는 것을 관리하는 엔터티에 비해 보이지 않는 것을 관리하는 엔터티가 훨씬 많다.
  • 보이지 않는 추상적인 개념을 집합으로 도출하는 것은 어렵다.
    • 만약 잘못된 집합으로 도출하면 의외로 골칫거리가 될 수도 있다.
    • 환율/강좌/분류/계좌유형/상품카테고리/코드 등의 데이터는 볼 수도 없고 만질 수도 없는 데이터다.
    • 이렇게 개념을 관리하는 엔터티에 존재하는 인스턴슨느 당연히 실제로 존재하는 실체와는 무관하며, 하나의 개념이 하나의 인스턴스가 된다.
  • 엔터티를 분석하거나 설계할 때, 앞으로 설명한 다양한 엔터티 분류 중에서도 특별히 실제로 보이는 데이터와 개념으로 존재하는 데이터를 명확히 구분하는 게 엔터티를 설계하는 시발점이 될 수 있다.

 

1.6. 엔터티 정의 방법 - 스스로 존재하는가?

  • 엔터티에 대해 분석할 때, '보이는 것이냐' 다음으로 분석하는 게 바로 '스스로 존재할 수 있느냐'는 것이다.
  • 다른 엔터티에 의존적이지 않고 스스로 존재하는 엔터티가 있다.
    • 이를 자립 엔터티(Independent Entity 또는 Strong Entity, Dominant Entity)라고 한다.
    • 자립 엔터티는 어떤 엔터티에도 존재 종속(Existence Dependency) 되지 않는 엔터티다.
  • 이와 상대적인 개념이 종속 엔터티(Dependent Entity 또는 Weak Entity, Subordinate Entity)다.
    • 종속 엔터티는 상위(부모) 엔터티가 존재하지 않으면 존재할 수 없는 엔터티로, 어떤 엔터티엔가 존재 종속된 엔터티다.
  • 엔터티 B가 존재하기 위해서 엔터티 A가 반드시 존재해야 한다면, B는 A에 존재 종속되었다고 한다. 이때, 엔터티 B는 종속 엔터티다.
    • 반면에, 엔터티 A는 자립 엔터티일 수도 있고 종속 엔터티 일 수도 있다.
  • 다른 엔터티에 존재 종속된 종속 엔터티는 종속 관계와 같은 개념으로 그다지 많지 않다.
    • 대부분의 엔터티는 다른 엔터티에 존재 종속되지 않고 참조 관계만이 존재하는 자림 엔터티다.
  • 자립 엔터티인지 종속 엔터티인지는 업무와 밀접하게 연관된다.
    • 업무에서 관리하는 데이터의 범위에 따라 자립 엔터티가 종속 엔터티가 될 수 있고, 종속 엔터티가 자립 엔터티가 될 수 있다.
      • 예를 들어, 특정 대학의 교수만 관리한다면 교수 엔터티는 자립 엔터티다.
      • 교수 엔터티 상위에 반드시 존재해야 할 엔터티가 존재하지 않기 때문이다.
      • 하지만, 전국 대학의 교수를 관리한다면 교수 엔터티는 종속 엔터티가 될 수 있다.
       

자립 엔터티인 고객 엔터티

  • [그림1] 모델에서 고객 엔터티는 종속 엔터티가 아니다.
    • 직업 엔터티가 부모 엔터티인 것처럼 보이지만, 직업 엔터티가 없어도 고객 엔터티는 존재할 수 있으므로, 고객 엔터티는 종속 엔터티가 아니라 자립 엔터티다. 
    • 이와 같은 관계는 흔히 얘기하는 부모/자식 관계가 아니라 참조 관계(Referential Relationships)라고 한다.
    • 따라서, 직업 엔터티의 주 식별자인 직업번호 속성은 고객 엔터티에 주 식별자로 상속하지 않고 일반 속성으로 상속한다.
  • 직업 엔터티와 같이 참조되는 엔터티는 부모 엔터티라고 표현하지 않고 상위 엔터티라고 표현한다.
    • 존재 종속 관계가 있어야 부모 엔터티라고 표현하며, 그렇지 않은 일반적인 경우에는 상위(부모) 엔터티라고 표현한다.
  • 종속 엔터티는 부모 엔터티와 종속 관계가 있는 엔터티다. 
    • 부모 엔터티의 인스턴스가 삭제되면 종속 엔터티의 인스턴스도 삭제돼야 한다.
    • 존재 종속되었기 때문에 생사를 같이 하게 된다.
  • 많은 CASE 툴에서 자립 엔터티와 종속 엔터티를 달리 표현하는 유사한 기능(종속 엔터티는 관계를 식별자로서 상속받고, 자립 엔터티는 일반 속성으로서 상속받는다. 이를 관계 타입(Relationship Type)이라고 한다.)이 있는 만큼,
  • 엔터티의 종속성은 엔터티의 성격을 가름하는 요소 중의 하나이므로 엔터티를 정의할 때 주의해서 살펴야 한다.
  • 엔터티가 자립 엔터티인지, 종속 엔터티인지를 분석하는 것은 관계까지 고려한 분석이기 때문에 의미가 있다.
    • 엔터티의 성격을 파악하는 데 많은 도움이 된다.
    • 이를 분명하게 구분하면 엔터티 정의와 주 식별자, 관계 정의, 식별자 상속 등과 같은 문제가 풀리기도 한다.
  • '만질 수 있느냐 없느냐'로 간단히 성격을 판단하고, '데이터가 자립했는지 아닌지'를 심도 있게 분석해야 한다. 여기까지 분석되면 엔터티를 정의하기 수월해진다.
  • 엔터티를 구성한 데이터의 성격이 바뀌지 않는 한 엔터티의 정의가 바뀌면 안된다.
    • 종속 엔터티인데 자립 엔터티로 잘못 정의하거나, 실체 엔터티인데 행위 엔터티로 잘못 정의하면 데이터 구조가 튼튼할 수 없다.
    • 데이터의 성격만을 판단해 엔터티를 명확히 정의하는 것이 모델링의 시발점이다.