DATOR


32.선진모델(3)-상품 조건(4) 기본 카테고리


올해 1월4일로 프로젝트를 마쳤습니다.
마무리 하느라 마음의 여유가 없어 글도 못 올렸네요.
항상 문제는 시간이 아니라 마음 인듯 합니다.

 

오늘 룰엔진 기본 모델을 대상으로
모델 분석하는 방법을 살펴봅니다.
물론 룰엔진 모델 구조도 이해를 하면서...


모델 분석은 항상 탑다운으로 합니다.
즉 개체엔티티를 찾은 후 행위엔티티로 진행하게 되는데
개체 엔티티의 특징은 식별자가 하나이고
대부분 자신의 식별자를 상속시키기 때문에
관계선이 나가는 형태(1:M 혹은 상대쪽에 uid bar 존재)가 됩니다.
인조식별자를 아무 생각없이 사용한 모델에서는
대부분 식별자가 하나이고 비식별 상속을 하기 때문에
모델형태만 보아서는 최상위 엔티티를 찾기 어려울 수도 있습니다.
그 때는 속성분석을 통해 찾아야 합니다.

 

예제 모델에서는
식별자 하나인 것이 meta, value 엔티티 2개로 최상위 대상인데
meta는 자신의 식별자를 value의 일반속성으로 상속하고 있습니다.
또한 별다는 속성을 안 갖고 있기 때문에 코드 엔티티나
중요하지 않는 개체엔티티로 파악됩니다.
결국 value 엔티티가 개체 최상위 엔티티로 파악되고
나머지는 이 엔티티를 기반으로 생성된 것임을 알수 있습니다.

 

meta는 value의 parameterName과 parameterType 속성을 3정규화한 코드엔티티로 볼 수도 있고
parameter 라는 별도의 개체로 볼 수도 있습니다.
후자는 meta 엔티티에 parameterType라는 속성이 있기에
단지 패러미터를 코드화하는 목적(문자열을 효율을 위해 코드화)으로 생성된 것이 아니라
다수의 속성을 갖는 개체로서 관리된다고도 볼 수 있기 때문입니다.

 

우측에 있는 relationship은 말 그대로 관계엔티티입니다.
그런데 식별자가 하나 추가되어 있습니다.
이것이 의미하는 것이 뭘까요?
같은 관계조합이 두 번 이상 존재한다는 이야기지요.
다른말로 하면 같은 관계조합이 서로 다른 목적으로 사용된다는 것입니다.


정리하면

1.핵심엔티티는 value
2.meta는 value 속성을 코드(정규)화
3.relationship은 value 간의 관계정보관리하되 같은 조합이 다른 목적으로 사용 가능
입니다.


여기까지가 엔티티 1차 분석입니다.

 

다음은 서브타입, 속성을 통한 상세 분석입니다.

 

value의 식별자명은 '조건'입니다.
즉 이 엔티티에는 조건을 담게됩니다.
서브타입을 보면 조건에는 function과 parameter라는 것이 있습니다.

 

(실제 데이터를 보면서 파악하면 이해하기가 쉬울 겁니다.
하지만 전혀 모르는 상태에서 모델만 보고 이해하는 연습을 해보십니다.)

 

함수와 인수는 어떤 관계이지요?

 

함수는 인수를 받아서 어떤 처리를 하게 되고
그 결과값을 리턴합니다.

 

즉 함수는 여러 인수를 소유하게 됩니다.
그런데 여기서 인수는 엔티티의 로우가 조건이므로
조건자체가 인수가 됩니다.
그러면 함수는 조건인 인수들을 여러개 받아서
어떤 처리를 하여 결과는 내는 어떤 조건입니다.
함수(인수1, 인수2,인수3...)
자 이젠 함수 서브타입의 속성을 보면
'정의'와'연산형식' 두 속성이 있습니다.
정의는 정의고 연산형식은 함수가 하는 일로 생각됩니다.
즉 함수는 인수들을 연산형식대로 처리합니다.


그런데 관계선을 보면 하나는 함수에서 하나는 엔티티에서 나갔습니다.
operator은 함수만이고 operand는 전체 즉 함수와 인수 다 입니다.
결국 함수는 인수로 인수만이 아닌 함수도 갖을 수 있다는 것이지요.
그리고 우측 모델은 BOM 모델로 관계데이터를 재현하면 트리구조의 모양이 될 수 있습니다.

 

정리하면
최상위 함수가 있고
그 함수 아래에 관련된 인수와 함수 들이 있고
아래 함수의 각각 밑에 또 인수와 함수들이...
이런 구조를 예상할 수 있습니다.


이해되시나요?

 

일단 여기까지.

Tag :

Leave Comments