데이터가치연구소 공식 블로그

엔터티(테이블)의 분류어란 무엇인가요?

엔터티* 분류어는 데이터 표준을 수립할 때 항상 고민하는 대상입니다.
* 엔터티(Entity) – 논리 데이터 모델에서 사용하는 용어로 테이블을 말합니다.
데이터 표준은 사람을 위한 도구입니다.‘ 글에서 설명한 바와 같이 표준은 기업마다 다릅니다.
그러므로 엔터티 분류어도 기업의 특성을 고려하여 정의합니다.
이 글에서는 보편적으로 사용하는 분류어를 다룹니다.

용어(속성/칼럼)의 분류어란 무엇인가요?‘ 글에서 분류어는 ‘용어를 구성하는 가장 마지막 단어’라고 정의하였습니다.
위의 정의에서 ‘용어’를 ‘엔터티’로 바꾸면 엔터티 분류어를 다음과 같이 정의할 수 있습니다.

엔터티 분류어 = 엔터티의 이름을 구성하는 가장 마지막 단어

용어의 분류어와 마찬가지로 엔터티의 분류어도 엔터티의 특징을 드러냅니다.
엔터티의 특징이란 다음과 같은 항목을 말합니다.

  • 최상위 대상인가?
    • 예) 고객, 상품, 시설, 장비, ···
  • 로그*를 기록하는 대상인가?
    *로그(log) – 어떤 활동의 기록을 발생한 순서대로 기록한 데이터
    • 예) 고객이 로그인한 정보
  • 다른 시스템과 주고 받는 데이터를 저장하는 대상인가?
    • 예) 외부 시스템과 데이터를 주고 받는 인터페이스
  • 변경 사항을 기록하는 대상인가?
    • 예) 상품을 수정하면 수정하기 전의 정보를 기록
  • 동일하게 복제한 대상인가?
    • 예) 특정 시점에 고객을 동일하게 복제한 대상

위 항목을 근거로 다음과 같이 분류어를 정의할 수 있습니다.

  • 마스터
  • 상세
  • 내역
  • 이력
  • 집계
  • 로그
  • 백업
  • 인터페이스

그럼, 각각의 분류어를 설명합니다.


마스터 (Master)

기업이나 기관에서 관리하는 가장 중요한 대상을 가리킵니다.
다른 업무의 시작점이 되는 대상이지요.
예를 들어, 모든 기업에서 가장 중요한 대상은 무엇일까요?
당연히 ‘고객’ 정보입니다.
고객이 없는 비즈니스는 없으니까요.
고객 다음으로 중요한 대상은 ‘상품’ 정보일 것입니다.
‘고객’과 ‘상품’ 외에도 업종마다 중요하게 여기는 대상이 있습니다.
호텔 비즈니스를 하는 기업이라면 보유한 ‘호텔’ 정보는 매우 중요합니다.
유통 비즈니스를 하는 기업에서는요?
‘창고’가 중요한 대상입니다.

이처럼 ‘마스터’는 기업이나 기관에서 업무의 시작점이 되는 중요한 대상을 말합니다.
해당 대상들은 매우 중요한 정보이기에 각별히 신경 써서 관리해야 합니다.
MDM(Master Data Management)을 들어보셨습니까?
‘마스터’로 분류한 대상들은 MDM에서 관리하는 대상의 후보가 됩니다.

‘마스터’는 기업의 핵심 정보입니다.
만약, 이것저것 아무거나 ‘마스터’로 분류한다면 어떨까요?
정말 중요한 것을 알 수 없게 됩니다.
그러므로 ‘마스터’로 분류할 때는 신중하게 결정해야 합니다.

다음의 체크 사항을 통과했다면 ‘마스터’로 분류해도 좋습니다.

  • 비즈니스에 꼭 필요한 대상인가?
  • 이 대상을 태어나게 하는 부모가 없는가?
  • 이 대상으로 많은 자식이 태어나는가?

가장 쉽게 이해할 수 있는 ‘고객’으로 위의 사항을 점검해 보겠습니다.

  • ‘고객’ 없이 비즈니스를 할 수 없습니다.
  • ‘고객’은 부모 없이 정의할 수 있습니다.
  • ‘고객’으로 많은 업무를 수행합니다.
    • 예) 고객은 상품을 구매합니다, 고객은 서비스에 가입합니다.


상세 (Detail)

여러분이 소개팅에서 자신을 소개한다고 생각해 보십시오.
자신을 어떻게 소개하시나요?
아마도 이와 같이 설명하지 않을까요?

저는 ㅇㅇㅇ에 사는 ㅇㅇㅇ입니다.
ㅇㅇㅇ 회사에 근무하고 있습니다.
취미는 ㅇㅇㅇ 이고요,
좋아하는 영화는 ㅇㅇㅇ 입니다. ···

이러한 내용은 ‘나’ 라는 사람을 설명하는 ‘정보’입니다.
엔터티도 이러한 ‘정보’가 있습니다.

‘상품’을 예로 설명하겠습니다.

상품을 만든 곳은 어디인가요?
상품은 언제 만들어졌나요?
상품의 가격은 얼마인가요? ···

이러한 ‘정보’는 ‘상품’을 설명합니다.
이렇게 ‘상품’을 설명하는 정보를 별도로 관리한다면 ‘상세’ 엔터티라 합니다.

상세를 별도로 관리하는 이유는 무엇일까요?
가장 큰 이유는 상위 엔터티의 항목이 많아지는 것을 방지하기 때문입니다.

귀사에서 관리하는 고객, 상품, 시설 등 주요 엔터티에서 관리하는 속성은 보통 몇 개인가요?

몇 년 전 한 쇼핑몰 차세대 프로젝트에서 상품을 관리하는 테이블의 칼럼은 300개가 넘었습니다.
한 테이블의 칼럼이 너무 많아서 여러 개의 상세 테이블로 분리하는 작업을 하였습니다.
상세 엔터티로 분리하여 관리한다면 마스터 엔터티가 거대해지는 것을 막을 수 있습니다.


내역 (List)

‘내역’을 쉽게 설명하기에 가장 적합한 대상은 ‘마트 영수증’입니다.
‘마트 영수증’에는 아래의 예시처럼 무엇을 구매했는지 목록을 보여줍니다.

마트 영수증
영수증 예시

양념등심돈까스, 파프리카와 같은 목록이 모여서 ‘마트 영수증’을 구성합니다.
이처럼 전체를 구성하는 각각의 목록을 ‘내역’이라 합니다.

몇 가지 예시를 들어보겠습니다.

  • ‘주문한 상품의 목록’을 관리한다면 ‘상품 주문 내역’
  • ‘장비를 수리한 목록’을 관리한다면 ‘장비 수리 내역’
  • ‘고객이 발급한 신용카드의 목록’을 관리한다면 ‘신용카드 발급 내역’
  • ‘호텔을 예약한 고객의 목록’을 관리한다면 ‘호텔 예약 내역’

‘상세’와 헷갈리 수 있지만, 이 특징을 기억한다면 쉽게 구분할 수 있을 것입니다.


이력 (History)

이력에 해당하는 영어 단어는 History 입니다.
History 즉, 역사에는 중요한 특징이 있습니다.
바로 ‘시간’을 갖는다는 것입니다.
‘시간’을 가지지 않는 역사적인 사건이 없듯이 ‘시간’을 가지지 않았다면 History가 아닙니다.

이력에는 반드시 ‘시간’이라는 값을 가집니다.
‘시간’으로 무엇을 알 수 있습니까?
전(前)과 후(後)를 알 수 있습니다.
그러므로 ‘시간’*이라는 값이 아니더라도 전과 후를 알 수 있는 값이 반드시 필요합니다.
* 시간은 시간의 길이를 의미하지만, 시각(時刻) 즉, 한 시점을 의미하기도 합니다.
예를 들면 ‘시간’ 대신 ‘순번’을 사용할 수 있습니다.
이 ‘순번’으로 전과 후를 비교할 수 있으니까요.

이러한 특징을 갖는 ‘이력’의 예시는 무엇이 있을까요?

  • ‘고객의 주소를 변경한 내용’을 시간 순서로 관리한다면 ‘고객 주소 변경 이력’
  • ‘상품의 가격을 변경한 내용’을 시간 순서로 관리한다면 ‘상품 가격 변경 이력’

꼭 기억하시기 바랍니다.
이력은 ‘시각’을 갖습니다!


로그 (Log)

로그는 시스템이 기록하는 이력이라 할 수 있습니다.
로그도 일종의 이력이므로 ‘시간’ 순으로 기록하며 ‘시각’ 정보를 포함합니다.

예를 들어, 사용자가 사이트에 로그인하면 로그인 사실을 시간순으로 기록합니다.
이때 로그인한 시각과 아이디를 저장할 수 있겠지요.
사용자의 어떤 정보도 변경하지 않고 로그인 행위만 기록합니다.
반면, 이력은 변경된 정보를 저장합니다.
이것이 로그와 이력의 차이입니다.


집계 (Summary)

기업에서는 어떤 대상의 통계를 보고 싶어합니다.
호텔 비즈니스라면 투숙객이 몇 명인지 궁금하겠지요?
그러한 통계를 일/주/월/분기/년 단위로 알고 싶을 것입니다.

이러한 통계를 실시간으로 보여주기 어려울 때는 별도의 테이블이 필요합니다.
일/주/월/분기/년 단위로 데이터를 미리 생성하는 것이지요.
이렇게 미리 생성한 통계 데이터를 저장하는 테이블을 ‘집계’라 합니다.


백업 (Backup)

사고는 언제든지 일어날 수 있습니다.
사람의 실수로 발생할 수 있고 때로는 기계의 결함으로도 발생합니다.
이러한 사고로 데이터를 잃어버린다면 어떨까요?
만약 잃어버린 데이터가 마스터 데이터라면 큰일입니다.

이처럼 데이터를 보존하기 위해 백업이 필요합니다.
백업 시스템을 구축하여 만약의 사고를 대비할 수 있습니다.
그러나 이러한 시스템을 구축하는 것은 비용과 시간이 많이 듭니다.
이때 백업 테이블을 만드는 것은 사고를 대비하는 아주 손쉬운 방법입니다.

마스터 성격의 데이터라면 특정 시점별로 백업 테이블을 만들 수 있습니다.
이러한 백업 테이블은 원본과 구분하기 위해 ‘백업’이라는 분류어를 사용합니다.
필요하다면 날짜 정보도 포함할 수 있습니다.

예) 고객마스터백업_20240408


인터페이스 (Interface)

시스템의 일부 데이터는 외부로부터 받기도 합니다.
은행이라면 타 은행과 거래 시 데이터를 주고받습니다.
이렇게 타 기업이나 기관과 주고받는 행위를 ‘인터페이스’라고 합니다.
‘인터페이스’ 분류어는 이러한 데이터를 저장하는 테이블에 사용합니다.


테이블에는 데이터가 저장됩니다.
하지만 테이블의 중요성이나 역할은 서로 다릅니다.
그러한 테이블 즉, 엔터티에 적합한 분류어를 지정한다면 엔터티의 중요도, 역할이 드러납니다.
엔터티의 분류어만으로도 유용한 정보를 알 수 있는 것입니다.

author avatar
데이터가치연구소 데이터가치플래너
『공공기관 표준화 전문』 대표 컨설턴트 허 상 철 |
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments