본문 바로가기
데이터 모델링/데이터 모델링 강의

1. 엔터티 설계의 첫 관문. 실체 엔터티(4)

by Toddler_AD 2024. 11. 19.
  • 오직 한 번 존재하는 실체 엔터티의 주 식별자
    • 실체 엔터티는 주 식별자에도 몇 가지 의미 있는 특징이 있다.
      • 무엇보다 존재가 한 번만 발생하는 실체의 성격 때문에 주 식별자에 시각 속성이 포함되지 않는다는 점이 핵심이다.
      • 한번 없어지면 끝이며, 다시 생성되지 않는다.
      • 다른 것이 새로 생길 수는 있지만 같은 것이 다시 생길 수는 없다.
        • 고장을 수리하는 것은 존재가 생긴게 아니라 특성이 변형된 것이다.
      • 또한, 주 식별자를 인조 식별자로 설계하는 것도 실체 엔터티의 대표적인 특징이다.
      • 실체라는 개념 자체에 이미 지목할 수 있는 식별 번호가 있다는 것을 내포하고 있다. 
        • 고객번호, 상품번호, 장비번호, 사번 등.
      • 하나의 실체를 하나의 번호로 특정하면 관리 또한 매우 편하게 된다.
        • 지구 상에 같은 실체는 두 개 존재하지 않기 때문에 고유한 번호로 식별할 수 있다.
        • 고객번호와 같이 일반화된 식별 번호를 주 식별자로 사용하면 데이터가 직관적으로 연상되기도 한다.
        • 데이터의 성격이 더욱 명확해진다.
    • 만약, 실체 엔터티의 주 식별자가 여러 속성으로 구성된다면 다양한 문제가 발생할 수 있다.
      • 실체 엔터티의 주 식별자가 복잡하면 모델 전반적으로 관계가 많이 복잡해진다.
      • 이는 가독성이 나빠지고, 관리가 힘들어지고, 잘못된 설계로 이어질 가능성이 높다.
    • 실체 엔터티가 최상위에 위치하는 엔터티라는 사실도 주 식별자를 단순하게 설계해야 하는 이유가 된다.
      • 최상위에 위치하는 엔터티가 잘못 설계되면 모델 전반에 심각한 영향을 끼치게 된다.
      • 심각하진 않더라도 맞지 않은 옷을 입은 것처럼 어딘가는 불편한 것이어서 데이터 성격에 어긋나게 설계할 이유가 없다.
    • 엔터티 유형 중에서 주 식별자를 인조 식별자로 설계하기 적절한 유형은 기준 엔터티도 있다.
      • 중요 행위 엔터티도 포함 된다.
      • 기본 정보를 관리하는 엔터티나 역할 엔터티도 인조 식별자가 적절하다.
  • 통합이 수월하고 적절한 실체 엔터티
    • 실체 언터티는 보이는 것이고 존재 자체를 의미하기 때문에 일반화(generalization)하기 수월하다.
      • 특성이 유사하기 때문에 통합하기 수월하다.
      • 주 식별자가 인조 식별자인 점도 통합을 수월하게 만든다.
      • 실체 엔터티가 통합되면 전체 모델 구조가 단순해진다.
    • 위와 같은 이유로 실체 엔터티는 과감한 통합이 필요하다.
      • 모든 유형의 엔터티는 통합하는게 바람직 하지만,
      • 실체 엔터티는 더욱 그렇다.
      • 실제로 통합을 시도하면, 기초 속성이 유사하기 때문에 작업하기 수월하다.
      • 사람이든 상품이든 장비든 유형 내에서는 이름과 고유번호, 특성 등이 유사하기 때문.
  • 명사형의 엔터티 명
    • 실체 엔터티의 이름은 실체라는 성격에 어울리게 명사형으로 붙이면 된다.
      • 이는 행위 엔터티를 제외한 엔터티들에도 해당되는 것.
      • 행위 데이터가 아닌 이상 명사형으로 끝나도록 붙이는 게 좋다.
      • 탈퇴 회원을 관리하는 엔터티면 '탈퇴회원'이 적절하며, 동사형 명사로 끝나는 '회원탈퇴'는 적절하지 않다.
    • 행위 엔터티의 명명법
      • 행위 엔터티는 뒤에 '했음'을 붙여서 자연스러우면 적절한 이름
        • 예를 들어, 회원이 탈퇴한 행위를 관리하는 엔터티는 행위 엔터티
        • 뒤에 '했음'을 붙여 자연스럽도록 '회원탈퇴'로 정하면 된다.
    • 실체 엔터티의 명명법
      • 실체 엔터티의 이름 뒤에 '했음'을 붙여 자연스러우면,
      • 실체 엔터티의 이름으로 적절하지 않은 것.
      • 항상 엔터티 명 뒤에 '했음'을 항상 붙여보길 권한다.
    • 실체 엔터티는 인스턴스 발생이 빈번하지 않다는 점도 특징입니다. 
      • 하위에 존재하는 행위를 관리하는 엔터티보다는 인스턴스 개수도 적다.
    • 관리되는 속성이 행위 엔터티에 비해 많지 않은 것도 특징
      • 최종 상태를 나타내는 추출 속성의 남발로 속성이 많아지는 경향이 있다.
  • 행위 엔터티보다 실체 엔터티로 도출
    • 실체 엔터티의 태생상 가장 큰 특징 중의 하나는 눈에 쉽게 띄기 때문에 도출이 용이하는 점.
      • 전체 엔터티를 훑어보면서 도출하기도 하고, 주요 엔터티(Primary Entity)를 분석하는 단계에서 도출하기도 한다.
    • 하지만, 애매한 엔터티도 존재
      • 대표적으로 계좌 엔터티.
      • 만질 수 없기 때문에, 엄격하게 보면 실체 엔터티가 아니지만,
      • 느슨하게 보면, 통장이나 잔고증명서와 연결되어 있어 실체로써의 연상이 가능하다.
    • 위와 같은 이유로, 실체 엔터티의 특징을 계좌 엔터티에 적용한다.
      • 실체 엔터티를 구분하는 것 자체가 목적이 아니라,
      • 특성을 이해하고 제대로 설계하기 위한 게 목적이기 때문.
      • 계좌 엔터티와 같이 실체데이터는 어떤 행위에 의해서 생성
      • 행위가 원인이 돼서 결과인 실체 데이터가 생기는 것
        • 예를 들어, 계좌 개설서를 작성해서 계좌 데이터가 생성.
        • 계약이라는 행위가 계좌라는 결과를 생성
    • 이렇게 어떤 행위에 의해서 결과 데이터인 실체 엔터티가 생길 때, 행위 엔터티를 도출하면서 실체 엔터티를 도출하지 않는 경우 발생.
      • 원인인 행위를 엔터티로 도출하고, 결과인 실체는 엔터티로 도출하지 않은 것
    • 하지만, 이렇게 하나만 관리한다면 결과인 실체 데이터를 관리하는 것이 좋다.
      • 보이는 것을 엔터티로 설계하는 것이 바람직하다.
      • 실체 엔터티로 도출해서 데이터 성격도 직관적으로 만들고, 모델 구조에서 토대가 되도록 하는 것이 좋다.