속성의 구분(필자의 구분방법, 실전에서 구분할 필요는 없다고 함)

  • 기초 속성(Basic Attributes)
  • 관계 속성(Relationship Attributes)
  • 추출 속성(Derived Attributes)
  • 시스템 속성(System Attributes)


기초 속성(Basic Attributes)

  • 엔터티의 본질을 설명하는 속성
  • 업무 식별자, 후보 식별자, 엔터티의 성격을 대표할 수 있는 핵심 속성, 업무를 정의하는 코드 속성 등

  • 노란색 음영으로 표기한 부분이 기초 속성임
  • 사용자(user)의 입력행위를 통해서 생성
  • 특정 엔터티가 어떤 주제 영역에 속해야 하는지 의미하는 모델 오너십과 연관이 있음
  • 논리 모델링 초반에 주로 도출되며, 일부 핵심적인 기초 속성은 개념모델링에서 도출되기도 함


관계 속성(Relationship Attributes)

  • 엔터티와의 연관성을 나타내는 속성

  • 분홍색 음영으로 표기한 부분이 관계 속성임
  • 관계 속성은 다른 엔터티의 주 식별자 속성으로 핵심적인 속성(엔터티의 본질을 정의하는 속성이 아닐 수 있음)
  • 상위(부모) 엔터티의 주 식별자를 식별자로 상속받을 때는 기초 속성이면서 관계 속성임, 일반 속성으로 상속받을 때는 관계속성임


추출 속성(Derived Attributes)

  • 원본(raw) 속성의 값을 연산해서 생성할 수 있는 속성
    • 중복 속성과 유사하게 사용되나 중복속성은 동일한 속성을 복사(copy)하는 것임
    • Sum, Count, Min, Max, First, Last, Previous, Next, Flag, Average 등의 연산을 통해 생성되는 속성

  • 주황색 음영으로 표기한 부분이 추출 속성임
    • 주문총금액 : 주문상품 엔터티의 주문금액 속성의 합계
    • 주문금액 : 주문단가 * 주문수량
  • 일반적으로 여러 인스턴스에서 추출하는 주문총금액 속성은 채택을 검토해야 하나, 같은 인스턴스에서 계산하는 주문금액 속성은 채택하지 않는 것을 원칙으로 함
  • 추출 속성을 사용하는 이유는 데이터의 조회 시간을 단축하기 위함(데이터를 미리 연산시켜 놓으므로)
  • 데이터의 정합성을 맞추는 부가적인 작업이 필요하여, 조회 속도가 문제되는 경우가 아니라면 사용하지 않는 것을 원칙으로 함(단, 잔고, 잔금 같은 경우 일반화되고 중요하게 사용하는 속성이므로 추출 속성이 아닌 기초 속성으로 관리하는 것이 유용함)
  • 추출 속성을 채택한다면, 원 속성과 정합성을 유지시킬 수 있는 방안을 마련하고, 연산 규칙을 문서화 시킴
  • 추출 속성을 주 식별자로 사용하면 안됨(원 속성의 값이 변경될 때마다 추출속성의 값이 따라 바뀌므로)


시스템 속성(System Attributes)

  • 전체 엔터티에 존재하는 속성
  • 데이터의 추적, 감시 등을 위해 사용

  • 보라색 음영으로 표기한 부분이 시스템 속성임
  • 시스템 속성은 가능한 최소한으로 채택하는 것이 최선임
  • 시스템 속성은 물리 모델에서만 관리하고 추가하는 것이 바람직, 논의는 빠를 수록 좋음(필자의 생각임)
  • 엔터티의 하단에 주로 위치시킴
  • 시스템 속성에는 업무적인 의미를 부여하지 않도록 함