본문 바로가기

데이터 Story/모델링 이론

엔터티에 대한 주절거림

모델링의 3요소는 엔터티, 속성, 관계입니다.
마치 믿음, 소망, 사랑과 같죠. 그 중에 제일은 사랑입니다.
엔터티, 속성, 관계 중에 제일은엔터티입니다.
 
엔터티를 정의하는 것이 모델링에서 가장 중요하고 어려운 작업입니다.
엔터티를 정의한다는 것은 CASE 툴의 엔터티 정의(Definition) 항목에 설명을 적는 것을 의미하지 않습니다.
식별자가 무엇이고 서브타입이 무엇인지, 어떤 집합으로 구성됐는지 등을 도출하는 것을 의미합니다.
 
엔터티는 필요에 의해 관리하고자 하는 데이터의 집합입니다.
업무를 수행하는 데 필요한 데이터를 특성이 유사한 것끼리 모아 놓은 집합이죠.
특성이 유사한 것끼리 모아 놓았다는 것은 함수 종속(Functional Dependency)을 의미합니다.
업무에서 관리하고자 하는 데이터(속성)를 함수 종속에 의해 도출한 결과 집합이 엔터티입니다.
 
엔터티를 도출할 때 가장 기본적인 판단 기준은 ‘관리하고자 하는 데이터인지’를 판단하는 것입니다.
데이터베이스에 관리할 필요가 없는 데이터에 대해서는 고민할 이유가 없습니다.
이는 대부분 현업의 판단을 따르게 되는데요.
 
모델러로서 한가지 주의할 점은 가능한 많은 데이터를 데이터베이스에 저장하도록 유도해야 한다는 것입니다.
현재는 필요 없을 거 같다고 현업이 판단했어도 가능한 관리하는 게 좋은 경우가 많습니다.
미래를 판단하는 것은 쉽지 않지만 경험을 할수록 머지않은 미래에 필요한 데이터일 수 있겠다고 판단될 때가 있습니다.
 
미래에 대한 판단 못지않게 과거 데이터에 대한 판단도 중요하고 어렵습니다.
데이터를 이력 관리하는 것이 대유행이지만 무턱대고 이력 데이터를 쌓을 필요는 없습니다.
미래에 필요해질 수 있겠다고 판단되면 당장 필요 없어도 쌓아두는 것이 좋고요.
 
이렇게 현재는 그다지 필요 없지만 나중에 필요할 수 있을지도 모른다고 생각해보는 것이 좋습니다.
그렇다고 사용될 가능성이 전혀 없는 데이터를 관리하는 것은 낭비입니다.
미래에 대한 판단이니 쉽지 않습니다.
 
엔터티를 도출할 때 주의해야 할 또 다른 점은 주 식별자입니다.
저는 엔터티와 주 식별자는 한 몸이라고 생각하는데요.
주 식별자를 모르고 엔터티를 도출(정의)할 수 없다고 생각합니다.
이와 연관된 주제는 앞으로 계속 다룰 거 같습니다(제 에서도 지속적으로 강조를 했고요).
 
그리고 엔터티를 도출할 때는 속성이나 관계와 혼돈해서는 안 됩니다.
속성으로 도출해야 하는데 엔터티로 도출하거나 관계로 도출해야 하는데 엔터티로 도출하는 경우가 많습니다.
그 반대는 비정규화로 인해 더욱 많겠죠.
 
엔터티를 정의(도출)하는 것은 대단히 중요합니다.
그리고 가장 어렵습니다.
대부분 이게 제대로 안 돼 모델이 이상해지는 경우가 많습니다.
 
설명하기도 가장 어려운데요.
저는 간단히 함수 종속이라고 설명을 하는데 이해시키기가 쉽지 않고요.
때론 ‘영감(靈感)과 같은 단어를 사용하기도 합니다.
어떤 분도 데이터가 보인다는 표현을 가끔 사용하시는데요. 꿈틀꿈틀한다고요. 지렁이인지 ㅎㅎ
 
어쨌든 이게 되는 사람은 자신감을 가져도 될 거 같습니다.
모델링 경험이 없다거나 해당 업무를 모른다고 기죽을 필요 없습니다(모델링을 하려면 업무를 알아야 하는가?는 다음에).
가장 강력한 무기를 가지고 있으니...
 
짧지만 엔터티에 대한 개념을 대략 설명했습니다.
다음에는 엔터티에 대해 하나씩 구체적으로 살펴보도록 하겠습니다.