본문 바로가기
Data Modeling

메타 모델 이란?

by csk 2013. 8. 23.

흠... 글을 쓰기 전에 조금 주저했더랬습니다. '내가 메타 모델이라는걸 다룰 수 있는 수준인가?' 하구요.

 

여러분들은 "메타"라는 단어를 들으면 어떤 느낌이 드시나요? 저는 뭔가 고대 이집트 상형문자 분위기가 떠오르면서 알수없는 ^^; 그런 막연하고 어려운 느낌이 들었답니다. 그래서 쓸까말까 망설였지요.


제 블로그 제목은 보시다시피 "아는만큼" 입니다. 아는만큼 보이고 들리고 읽히더라!는 무릎을 치는 경험 때문인데요. 메타라는게 어려운 개념이기는 하지만 제가 아는만큼이라도 읽고 이해하신다면 내 주변을 스쳐가는 메타의 개념들을 언젠가는 모두 꿰뚫게 되는 첫걸음이 되지 않을까 생각하고 감히 적어봅니다.


위키피디아에서는 메타를 이렇게 정의하고 있네요.


메타(영어: meta-그리스어: μετά→ 뒤, 넘어서, 와 함께, 접하여, 스스로)는 영어의 접두사로, 다른 개념으로부터의 추상화를 가리키며 후자를 완성하거나 추가하는 데에 쓰인다. 인식론에서 접두사 meta는 "~에 대해서"라는 뜻으로 쓰인다. 이를테면 메타데이터는 데이터에 대한 데이터이다. 메타메모리는 심리학에서 무언가를 회고할 때 이를 기억하거나 기억하지 아니하는 데 대한 개인의 지식을 뜻한다.


데이터의 데이터... 라니 역시 쉽지 않습니다. 만, 아무튼 추상화를 한다는 것 같습니다. 

그럼 예를들어 설명해 보겠습니다.


이제까지의 글들을 통해 많은 ERD, 즉 데이터 모델을 보셨습니다. 주로 인터넷 쇼핑몰 예를 많이 들었는데요, 거기에는 주문 테이블 상품테이블 등이 존재하구요, 주문 테이블에는 주문일자, 주문총금액 등의 컬럼이 존재합니다. 그리고 제가 이전(속성 정련하기) 글에서 언급한대로 표준화를 적용하면 도메인이라는것을 결정해서 각 컬럼에 적용하게 되구요. 


이러한 "데이터 모델 (ERD)에 대한 모델"을 그리면, 그것이 바로 ERD에 대한 메타 모델입니다.

바로 이렇게 생겼지요. 

<그림1> 데이터 모델에 대한 메타모델


데이터 모델에 대한 모델, 즉 모델을 한차원 추상화 한 수준입니다.

별로 어렵지 않지요?


그럼 메타모델이라는 개념을 어디다 써먹을 수 있을까요? 

제가 만약 데이터 모델링 도구를 만드는 업체에서 일한다면, 위의 모델 자체가 개발을 위한 ERD가 될 것입니다. 일반적인 SI에서 OO회사의 회계시스템의 ERD를 만드는 것처럼요.

하지만 우리는 데이터 모델링 도구를 만들고 있지 않은데....


실제 모델링을 하면서 사실 알게 모르게 메타 모델링 이라는 개념을 사용하고 있습니다. 적용하는 정도의 차이가 있을 뿐입니다. 


대표적이고 간단한 예를 하나 들어볼께요.


쇼핑몰 업체의 고객 등급을 관리하는 테이블을 가지고 있는데, 할인행사가 한 달이 멀다하고 추가되어 다음과 같은 상황이 되었다고 해볼께요.

<그림2> 할인행사가 많은 쇼핑몰의 고객등급 관리 테이블


요즘같이 쇼핑몰이 많은 상황에, 앞으로도 행사는 수시로 기획될거고 그때마다 속성을 추가하고 프로그램을 바꾸자니 괴롭습니다. 그럼 십중팔구 모델을 이렇게 바꾸게 되지요. 

<그림3> 고객등급 관리 테이블 정련


할인행사 테이블의 속성들은, 고객등급 테이블에 존재하던 할인 관련 속성들의 성격을 추상화 하여 뽑아낸 것입니다. 행사명은 평일, 주말, 설 등의 속성의 명칭 자체 이고, 할인율은 각 속성에 들어있던 값이고, 시작일은 설의 시작일을 다른 행사에도 일반화한것이고, 종료일은 필요할 것 같아 추가해 본 속성입니다. 

이런 면에서 이것을 메타 모델링이라고 할 수 있는 겁니다.


네... 물론, 당연히, 이것은 정규화이기도 합니다. 반복속성의 제거니까요.

하지만 반복속성을 그대로 들어내서 옮긴것이 아니라, 속성의 의미를 뽑아 한차원 추상화 했기 때문에 메타 모델링을 적용한 정규화의 일종이다~ 라고 저는 말하고 싶습니다. :-)


어떠세요. 메타에 대한 약간의 감을 잡으셨나요? 

그럼 이제 메타 라는 단어가 나올때마다  한번 잘 들어보세요. 이전과는 다르게 들리실 거에요. 제 경험상 확실히! 아는만큼 들리니까요.


언제 기회가 되면 좀 더 명확한 메타 모델링 사례를 다루어 볼까 합니다.  


'Data Modeling' 카테고리의 다른 글

FK를 어느쪽에 둘지 결정하기  (5) 2013.08.29
공통코드 테이블 (Code Table) 설계하기  (0) 2013.08.15
FK가 양쪽에서 상속된다면?  (0) 2013.08.08
속성 정련하기  (2) 2013.07.30
파생 속성 추가하기  (0) 2013.07.25