Setting Up Roles: What Parties Do

개인이나 조직
  • 고객,공급자,근로자,고용인, 계약자,또는 파트너와 같은 많은 역할을 수행
  • 기업은 비즈니스 전반에 걸쳐 다양한 어플리케이션에서 이러한 개인과 조직의 정보를 관리
  • 개인이나 조직을 비즈니스 라이프 사이클에서 어떻게 참여하는가에 따라 고객,파트너,또는 공급자로 봄

선언적 역할 

  • 기업 전반에 걸쳐 관계자는 ‘고객’ 으로 간주
  • 역할들 을 정의하는 것(역할을 선언는 것)과 관련이 있고

맥락적 역할

  • 동일한 관계자를 배송부서 직원들은 다른 어떤 트랜잭션의 맥락에서 ‘배송고객’ 으로 봄
  • 역할을 사용하는 것(또다른 엔티티의 맥락에서)과 관련

이 패턴이 왜 중요한가?

우리 회사가 관심을 갖고 있는 개인이나 조직은 누구이며, 이들은 우리 회사와 전반적으 로 어떻게 관련되어 있는가?

기업이 핵심 고객과 갖는 관계를 관리

  • 비즈니스 수행 과정에 참여하는 개인과 조직의 속성과 특성은 어떤 것인가?
  • 어떤 것이 개인과 조직이 기업에 대해 갖고 있는 릴레이션쉽을 정의하는가? 비즈니스 수행 과정에서 개인과 조직의 역할은 어떤 것인가?
  • 오직 조직에 대해서만 적합하고 개인에 대해서는 적합하지 않는 역할은 어떤 것인가? 또그 반대의 역할에는 어떤 것이 있는가? 양쪽 모두가 수행할 수 있는 역할에는 어 떤 것이있는가?
  • 관리할 필요성이 있는 역할 카테고리가 있는가?
  • 비즈니스를 수행하는 동안 개인과 조직은 여러 가지 역할을 수행할 수 있는가?



이 장의 내용

  • 선언적 역할의 정의
  • 다양한 레벨의 선언적 역할 패턴
  • 다양한 선언적 역할 패턴을 사용하는 경우와 사용하지 않는 경우
  • 각 패턴에 대한 이해
  • 각 패턴의 적절성
  • 각 패턴의 요약

선언적 역할이란?

선언적 역할은 관계자가 특정 역할을 수행한다라고 ‘선언한다’
ex) Employee(직원)’으로서 식별 되는 개인 또는 Supplier(공급자)’ 역할을 수행하는 조직

선언적 역할

  • ‘개인과 조직에 할당되거나 요구되는 공식적인 행동과 활동’
  • 기업의 전체적인 맥락에서 개인이나 조직이 갖는 행동이나 활동에 대한 설정을 모델링
  • 개인이나 조직은  ‘고객’ 이나 ‘공급자’ 로 선언될 수 있다
  • 트랜잭션이나 비즈니스 정보는 있을 수도 있고 없을 수도 있지만,선언적 역할은 이것과 관계 없이 존재


레벨 1 선언적 역할 패턴


Tuv9j87ewH3JGJRCDag02FfE0PdEDrhnRYuleZcy
레벨1 선언적 역할 패턴

기업의 관점

  • ‘고객’ 엔티티와 ‘공급자’ 엔티티가 있어야만 함
  • 역할 이 매우 다를 뿐만 아니라 시스템에서 두 역할이 서로 다른 방식으로 동작한다면, 동일한 조직이 고객이면서 공급자임에도 불구하고 기업의 시스템은 이것을 두 개의 독립적인 요소로 간주


이 패턴이 필요한 이유는?

레벨 1 선언적 역할 패턴의 목적

  • 모든 역할을 구체적인 엔티티로 명확하게 정의하여  쉽게 이해할 수 있는 매우 단순한 모델을 보여주는 것
  • 각각의 다양한 엔티티들은 특정 주제영역에 대한 역할을 명확하게 기술


선언적 역할의 기본적인 측면

  • 첫째,  역할 자체의 정의나 표현.
  • 둘째, 역할과 기업의 관계
  • 셋째, 어떤 역할이 조직의 역할이고,어떤 역할이 개인의 역할인지,그리고 어떤 역할이 둘 다를 지원하는지.
  • 넷째, 이 패턴은 개인과 조직이 하나 또는 그 이상의 역할을 동시에 수행할 수 있도록 지원
    (동일한 개인과 조직 이 하나 이상의 역할을 수행할 때, 각각 별도의 엔티티에서 관리)



이 패턴은 어떻게 작동하는가?

  • DECLARATIVE ROLE 은 데이터 전문가가 관심을 갖는 역할 엔티티
  • 역할의 정의와 그 역할에 연관된 속성 모두를 포함
  • 대부분의 상황에서 선언적 역할은 주요 이름이나 현재 이름을 보여주는 하나 이상의 명칭 속성
    (ex) 사람의 first name, last name 또는 조직의 organization name)을 가짐


SUaw-hfU6fkhgAdynwr_I8N-DhQXQ9uuK2dy0L6Y

 레벨 1 선언적 역할 패턴 활용 사례


SIlVUqp5x0aHcBM8IoYoISWs9Pt7RGKDNRcp2jjO
레벨 1 선언적 역할 패턴 활용 사례,CUSTOMER

mndidSLgYlIP_V3qNvonbb4hCXaWW-FaWcOXqqTD
레벨 1 선언적 역할 패턴 활용 사례,SUPPLIER

Llh30mvm6cO8gudZNWBZfLl-CYIAlxq0BzOQtiAu
 레벨 1 선언적 역할 패턴 활용 사례, PARTNET

7gdwZCgt_88ut_5fME6HDIOahtfKV0RXfxdncV7O
레벨 1 선언적 역할 패턴 활용 사례,EMPLOYEE

레벨 1 선언적 역할 패턴의 몇 가지 기본적인 특징

  • 첫째,각각의 엔티티는 명확하게 정의된 역할을 나타냄
  • 둘째,각각의 역할 엔티티는 역할 간에 공유될 수 있는 organization name 또는 first name, last name과  같은 속성들을 가질 수 있음
    각각의 역할 엔티티는 오직 그역할에만 적용되는 특정한 속성들을 가짐
    ex) EMPLOYEE - employee number,SUPPUER - taxation identifier
  • 셋째,어떤 개인이나 조직이 하나 이상의 역할을 수행하는 것을 표에 기술된 인스턴스에 서 볼 수 있음
    ex) ‘Caroline Percy’ -  EMPLOYEE와 CUSTOMER의 인스턴스,
    ‘Matrix Ltd’ - CUSTOMER, PARTNER, SUPPUER의 인스턴스
  • 마지막,어떤 역할들은 개인이나 조직에만 특화
    ex) EMPLOYEE 역할은 오직 개인에 대한 역할


이 패턴은 언제 사용하는가?

  • 비즈니스 관련자가 선언적 역할의 정의를 잘 식별하며 잘 알고 있는 경우
  • 기업이 개인이나 조직을,그들 각자가 수행하는 역할과 동일하게 보는 관점으로 가지고 있는 경우.
  • 기업이 관계자 개념에 대해 매우 강하게 저항하는 경우.
  • 이해하기 쉬운 방법으로 비즈니스 요구사항을 기술할 필요가 있거나, 이해하기 쉽고 명확한 다이어그램을 다른 IT 전문가 또는 관리자들에게 보여줄 필요가 있는 경우
  • 비즈니스 내의 역할이 고정적이고 변하지 않는 경우
  • 동일한 시점에 또는 시간이 경과해도 각 개인이나 조직은 오직 하나의 역할을 수행

이 패턴의 약점은?


  • 이 패턴은 새로운 역할 유형이 빈번하게 추가되거나, 역할이 잘 정의되지 않은 변화가
  • 많은 환경에는 적합하지 않음
  • 역할들에는 동일한 정보가 반복
  • 개인과 조직의 전체적인 그림을 보는 것은 매우 어려움



레벨 2 선언적 역할  패턴


레벨 1 패턴에 PARTY 엔티티를 추가

  • 사람들과 관계된 속성(예를 들어,first name, last name, date of birth)과 조직과 관계된 속성(예를 들어, organization name)은 그들의 역할과 관계없이 PARTY 엔티티에 표현
  • - 역할에 특화된 정보
    (ex)EMPLOYEE - employee number, CUSTOMER - credit limit)는 특정한 선언적 역할 엔티티에서 관리
  • 이전 패턴은 개인과 조직,그리고 역할 정보가 선언적 역할 엔티티에 함께 섞여 있으나
  • 이 패턴은 관계자가 개인 또는 조직이라는 관점, 관계자는 하나 또는 그 이상의 다양한 선언적 역할을 수행한다는 관점을 제공


이 패턴이 필요한 이유는?


  • 여러 곳에서 관계자의 이름{또는 다른 속성)을 여러 번 표현하지는 않음
    • PARTY의 서브타입인 ORGANIZATION 엔티티와 PERSON 엔티티를 갖게 됨
    • 조직에 국한된 선언적 역할과 개인에 국한된 선언적 역할을 데이터모델 내에서 구분하여 관리
    • 개인의 선언적 역할은 오직 PERSON과 연관되고 조직의 역할은 ORGANIZATION과 연관
    •  개인과 조직에 모두 적용할 수 있는 역할은 PARTY와 연관


이 패턴은 어떻게 작동하는가?

  • PARTY가 서브타입으로서 PERSON과 ORGANIZATION 모두를 가짐
    • PERSON
      • 살아 있거나 죽은,육체를 가진 인간
    • ORGANIZATION
      • 특정한 목적을 위해 조직된 사람의 그룹,연합 또는 ‘개인들이 비즈니스를 수행하기 위하여 체계적으로 협업하는 구조

  • PERSON
    • current first name,current last name, gender, date of birth와 같은 속성 관리
  • ORGANIZATION
    • current organization name 등과 같은 속성을 관리

5PP08v3g7osIJeQu7hH1T2Mv_FUn93jeTkKclkn3
레벨 2 선언적 역할 패턴


  • 선언적 역할 엔티티 (DECLARATIVE ROLE 1,2,3)
    • PARTY, PERSON, 또는 ORGANIZATION이 어떻게 동작하는지를 정의
    • PARTY가 기업에서 어떤 역할을 수행하는가
    • 각각의 DECLARATIVE ROLE 1은 반드시 하나의 PARTY를 위한 역할이어야 함


  • 관계자에 대해 특정한 속성
    • PARTY, ORGAN IZAT ION , PERSON의 슈퍼타입/서브타입 구조에서 표현
    • 역할에 대해 특정한 속성들은 그 자신의 선언적 역할에서 표현
    • 선언적 역할과의 특정한 일대일 또는 일대다 릴레이션쉽은 선언적 역할 엔티티에서 관련된 엔티티의 외래키를 통해서 표현
    • 할 엔티티에서 관련된 엔티티의 외래키를 통해서 표현될 수 있고,다대다 릴레이션쉽은 그 선언적 역할 엔티티와 관련된 엔티티 간의 연관 엔티티에서 표현
      ex)  PARTNER의 외래키인 partner type id가 PARTNER 선언적 역할을 PARTNER TYPE 분류 엔티 티에 연관


tnUKdyiDGdIut3jPT34V7l_GpNm9bvwEPP0Gbxn_
 레벨2 선언적 역할 패턴 활용 사례

레벨 1 선언적 역할 패턴은 회사가 관심을 갖고 있는 역할의 초기 범위를 보여주기 위 한 것


  • PERSON이나 ORGANIZATION에 대한 정보를 한 번만 관리
  • 그들이 여러 역할을 수행한다 할지라도 중복 데이터를 표현할 필요성을 줄이는 패턴을 생성
  • PARTY, ORGANIZATION, PERSON의 슈퍼타입/서브타입 구조
  • CUSTOMER가 PARTY와 연관
  • 각각의 PARTY는 오직 하나의 CUSTOMER로 서 행동할 수 있다
  • 각각의 CUSTOMER는 오직 하나의 PARTY에 대한 역할이어야 한다
  • CUSTOMER 의 인스턴스는 PERSON 일 수도 있고 ORGANEATION 일수 있음

LiAgicLr-K2b26aH4M-JGu85MFB4alBAnZY-YjrD

레벨 2 선언적 역할 패턴 활용 사례

  • SUPPLIER 역할은 ORGANIZATION과 직접적으로 연관
    • ‘각각의 ORGANEATION은 오직 하나의 SUPPLIER로서 행동할 수 있다
  • EMPLOYEE
    • 각각의 PERSON은 오직 하나의 EMPLOYEE로서 행동할 수 있다
  • PARTY, PERSON 또는 ORGANIZATION의 인스턴스가 각 선언적 역할을 한 시점에 오직 한번만 수행할 수 있도록 관리
    •  개인은 오직 한 번만 직원이 될 수 있음
    •  한 조직은 공급자 역할을 오직 한 번만 수행할 수 있음
      ( 이것은 일대일 릴레이션쉽이기 때문에 몇몇 데이터 모델러들이 문제를 제기할 수도 있다.)


PARTY로부터 역할을 분리해야 하는 이유

  • 과세식별번호 (SUPPPLER), 직원번호(EMPLOYEE) 등과 같이 관계자가 수행하는 각 역할에 종속적인 정보뿐만 아니라 이름,생년월일 등과 같이 관계자 역할과는 관계 없는 정보
  • 선언적 역할이 관계자,개인,또는 조직 그 자체가 아님
  • 선언적 역할은 관계자,개인,또는 조직이 수행
  • 역할과는 관계 없는 관계자(이름,생년월일,기타 등)에 대한 데이터를 한 번만 관리
    (레벨 1 패턴은 반복해서 관리)


 각각의 다양한 선언적 역할

  • 암묵적으로 분류된 구체적인 역할의 인스턴스
  • 기록된 어떤 개인이나 조직은 그 역할에 의하여 분류
    ex)  개인이나 조직이 CUSTOMER 역할로서 활동하고 있다면 그들은 CUSTOMER ‘유형’ 선언적 역할을 수행


이 패턴은 언제 사용하는가?

  • 개인이나 조직에 대한 공통 정보가 존재
  • 동일한 관계자가 여러 역할을 수행하는 상황
  • 개인만을 위한 일부 특정한 역할이 있고, 조직에서만 수행하는 역할이 있으며,개인과
  • 조직 모두가 수행할 수 있는 역할이 있다는 것을 명확하게 할 필요
  • 역할을 관계자, 개인, 조직과 구분해야 할 필요
  • 기업이 여러 상황에 적용할 수 있는 패턴을 사용하는 데 관심
  • 공감대를 얻기 위해 데이터모델을 이해하기 쉽도록 개별 역할들이 어느 정도는 구체적일 필요
  • 관계자에 연관된 모든 정보에 대해 더 완전한 그림을 볼 필요가 있을때


이 패턴의 약점은?

  • 어떤 기업은 선언적 역할이 관계자와 의미적으로 다른 것임을 느끼지 못한다.
  • 이 패턴은 관계자가 특정 유형의 역할을 한 번만 수행할 것이라고 제시한다.
  • 레벨 1 패턴과 매우 유사하게, 이 패턴은 새로운 유형의 역할이 빈번하게 추가되는 변화 가 많은 환경에는 적합하지 않다.
  • 이 패턴은 역할 유형에 대한 데이터 관리와 유지보수를 지원하지 않는다


레벨 3 선언적 역할 패턴

이 패턴이 필요한 이유는?

레벨 3 선언적 역할 패턴 Level 3 Declarative Role Pattern

  • 다양한 역할 유형에 대한 관리뿐만 아니라 선언적 역할을 추가하거나 변경하는 데 유연한 접근법으로서 사용
  • 기업의 선언적 역할을 PARTY ROLE이라는 슈퍼타입으로 모아준다.
  • 선언적 역할이 그것과 연관된 특정한 데이터 또는 릴레이션쉽을 갖고 있고 그 선언적 역할이 기업에 의해 중요한 역할로 식별될 때,PARTY ROLE의 서브타입 으로서 추가
  • 그리고 선언적 역할이 변경된다면,PARTY ROLE의 맥락에서 변경 된다.
  • ROLE TYPE 엔티티가 역할 유형에 대한 데이터를 관리한다
  • credit limit는 CUSTOMER라는 특정한 역할의 속성이지만 AUTHOREATION(즉, 읽고, 수정하고,갱신하고, 삭제하는 권한)은 ROLE TYPE에 연관


이 패턴은 어떻게 작동하는가?


lqgm8zV14s5Cj9GZs0PyoaFVtHJYjODCUyMLQanL

레벨3 선언적 역할 패턴

선언적 역할(DECLARATIVE ROLE 1,2,3)

  • PARTY ROLE의 서브타입
  • 기업이 수행하는 모든 활동들의 맥락에서 기업이 정의하는 역할


PARTY ROLE

  • 모든 선언적 역할에 존재할 수 있는 공통적인 속성과 릴레이션쉽을 포함
    ex) from date와 thru date는 역할이 유효할 때와 역할이 더는 유효하지 않을 때를 명시



‘각각의 PARTY는 하나 또는 그 이상의 PARTY ROLE로서 활동하고 각각의 PARTY ROLE은 오직 하나의 PARTY에 대한 것 이어야 한다’

  •  PERSON 이나 ORGANIZATION이 많은 선언적 역할을 동시에 수행할 수 있으며 선언적 역할들은 반드시 하나의 PARTY(PERSON이나 ORGANIZATION)에 대한 것이어야 함


hNayoDn4IJ0Fy6bce9zLJmyfNzNNnXfozm6ORPf1
레벨 3 선언적 역할 패턴 활용 사례

Bj1uvP5LCxxT77EyLnKdavXLfni-TYS9HaGJ_4b0
레벨3 선언적 역할 패턴 활용 사례

uLNhFdkZvCb6AfFWZS5mqg_ZTKxF3DJdKn-V9C5a

역할 유형의 계층구조

iSDQzL7x2b3qlBmwq0kiL99tvJOA_MYqBA8pdwFX

역할 유형의 계층구조

  • ROLE TYPE의 재귀 릴레이션쉽은 역할 유형들이 어떤 비즈니스 맥락에서 어떻게 사용되는지에 관한 범주화를 다루는 데 사용 가능
  • 역할이 개인 역할인지 조직 역할인지 뿐만 아니라 비즈니스 내의 역할들의 맥락
    (ex)주문 처리, 상품관리,또는 배송 실행계획에 필요한 모든역할) 에 의해서 여러 가지 방법으로 분류가능
    -> 패턴에 추가될 수 있고 ROLE TYPE 에 대한 분류를 향상시키는 데 사용될 수 있는 분류에 대한 패턴은  5장 에서 다룸


4fPqerFfMsK0rCbOZT-fLRkmu2ApJCEK0ucUuRES

역할 유형의 대안 계층구조

이 패턴은 언제 사용하는가?

  • 기업이, 시간이 경과함에 따라 새로운 요구사항의 등장으로 선언적 역할이 추가되고 변 경되는 역동적인 비즈니스 환경을 가질때
  • 모든 역할을 효율적으로 유지하고 관리할 필요가 있을대
  • 기업이 ROLE TYPE의 추가를 통하여 PARTY ROLE 내의 다양한 선언적 역할을 범주화 하는 유연한 방식을 원할때
  • 데이터 전문가는 PARTY ROLE 레벨에서 공통적인 릴레이션쉽과 속성을 관리하고, 관계자가 여러 역할을 수행할 수 있더라도 PARTY에서 데이터를 관리함으로써 속성의 반복 과 릴레이션쉽의 반복을 피하고자 할때
  • 각각의 역할에 연관된 데이터, 각각의 관계자가 수행하는 모든 역할, 각각의 관계자에 대한 더 완전한 그림을 관리할 필요가 있을때
  • PARTY ROLE 슈퍼타입에 다른 엔티티를 연관시킬 필요가 있을때


이 패턴의 약점은?

  • PARTY ROLE 개념을 추가하는 것은 많은 기업이 불편해 할 수도 있는 일반화의 레벨을 추가한다는 점
  • 특정한 역할이 개인을 위한 용도인지, 조직을 위한 용도인지, 관계자를 위한 용도인지가 불분명
  • 관계자가 하나 이상의 역할을 수행하지 않는다면 데이터 중복을 제거한다는 이점은 중요
  • 한 요소가 될 수 없음

  • 데이터 모델 리소스 북 Vol.3  (bysql.net 2013년 1차 스터디)
  • 작성자: 남송휘 (tofriend)
  • 최초작성일: 2013년 4월 27일
  • 본문서는 bysql.net 스터디 결과입니다 .본 문서를 인용하실때는 출처를 밝혀주세요. http://www.bysql.net
  • 문서의 잘못된 점이나 질문사항은 본문서에 댓글로 남겨주세요. ^^