IT노트/DB모델링

메타 데이터모델의 시작은 클래스 메타 데이터모델부터…

wychoi 2015. 1. 29. 23:12

메타 데이터모델의 시작은 클래스 메타 데이터모델부터

 

유연한 데이터모델을 하기 위해서는 메타모델을 적재적소에 활용하는 것이 중요한 하나의 전략이라고 생각을 할 수 있다그래서메타모델에 대해서 체계적으로 한번 설명을 하고자 한다.

 

모든 것이 그렇듯이 전체를 알면 부분적인 활용이 쉽기 때문에 메타모델의 가장 최상위 레벨인 클래스메타에 대해서 먼저 소개를 한다.

 

 

 

메타 영역은 크게 나누어 보면 정의영역과 값영역으로 나누어 볼 수 있다.

여기에서 정의영역은 클래스/클래스속성관계/속성 등의 세개 엔티티가 정의영역이고 오브젝트/오브젝트속성값 등의 엔티티가 메타값영역이다.

 

 

클레스엔티티는 엔티티명 자체를 적는다고 생각하면 된다전사관계자엔티티가 있으면 전사관계자 자체를 정의하는 것이다.만약에 고객관리시스템에 100개의 엔티티가 있으면 100개의 엔티티명을 여기에 다가 적으면 된다.

 

속성엔티티는 사용되는 속성의 유일한 값을 적으면 된다데이터표준의 용어에 해당 된다용어는 1000 개이지만 테이블별로 사용되는 속성은 10000개가 될 수 있으니까 말이다.

 

클래스속성관계엔티티는 말그대로 클래스가 사용하는 속성과의 관계정보를 가지고 있는 항목이다하나의 엔티티에 속성명이 중복될 수 없듯이 여기서도 하나의 클래스에서 동일한 속성을 여러 번 사용할 수가 없다.

 

위에 사례에서 보면 클래스엔티티에 전사관계자엔티티를 정의를 한것이고 전사관계자엔티티의 속성은 관계자번호관계자명관계자구분으로 속성에 정의되어 있음을 알 수가 있을 것이다.

이상이 클래스메타의 정의영역에 대해서 설명을 했고 다음으로 클래스메타의 값영역에 대해서 설명을 하겠다.

 

오브젝트엔티티는 전사관계자엔티티를 예로 들면 (관계자번호/1001),(관계자명/홍길동),(관계자구분/개인이라는 하나의 레코드가 있다고 생각을 하자일반적인 엔티티에서는 이 레코드를 대표하는 실질식별자는 (관계자번호/1001) 이기 때문에 별도의 유일한 번호를 가져갈 필요가 없지만 여기서는 전사관계자엔티티만 들어오는 것이 아니고 모든 엔티티가 다들어오므로 유일한 식별자가 필요하다그 유일한 식별자를 채번하는 것이 오브젝트엔티티가 하는 역할이라고 생각을 하면 된다.

오브젝트속성값엔티티는 실제 값이 들어가는 엔티티이다예제에서 오브젝트ID가 같은 것은 하나의 레코드라고 생각을 하면 된다클래스속성관계에 있는 속성ID만 올 수가 있다여기에서 오브젝트ID 1번은 클래스ID 1번에 속하므로 클래스속성관계의 클래스ID 1번에 해당하는 속성ID 1, 2, 3번의 정보가 입력 되어 있는 것을 알 수 있을 것이다.

 

속성ID 1번은 관계자번호속성이고 숫자타입으로 정의가 되어 있으므로 숫자속성에 값이 들어가 있다속성ID 1번은 관계자명이고 문자타입으로 정의가 되어 있으므로 문자속성에 값이 들어가 있는 것을 알 수가 있을 것이다.

 

클래스메타를 마지막으로 정리를 하면 일반 속성메타나 테이블메타가 엔티티는 항상 정의가 되어 있는 반면에 클래스메타는 엔티티자체를 클래스로 정의를 해서 사용하는 아주 유연한 메타 데이터모델이라고 생각을 하면 된다여기에 있는 엔티티만 그려놓고 나는 모든 모델을 다했다고 얘기를 해도 된다는 말이다성능에 문제가 없다면 이렇게 하고 싶은 마음이 굴뚝같을 것이다.

 

그래서매우 높은 유연성을 요구하는 (ER-Win이나 SA(System Architecture) ) 등의 외산 솔루션들 내부 Repository는 모두가 클래스 메타데이터모델 구조를 사용하는 것이다.

외산솔루션에서는 단순한 엔티티속성정보뿐만이 아니라 툴이 필요한 모든 정보들(예를 들면 ERD의 관계선이나 그래픽정보)을 자유자재로 클래스로 정의를 해놓고 사용을 하고 있는 것이다.

 

이제 메타 데이터모델의 최상위부분을 알았으니 다음에 얘기할 속성메타 데이터모델이나 테이블 메타 데이터모델은 쉽게 느껴질 것이다.