이번 글은 복합어에 대한 내용입니다. 이미 복합어에 대한 글을 게시한 적이 있지만, 이번 기회에 더 자세하게 설명하겠습니다. 먼저 표준 단어에 대한 이전 글을 읽어보시길 권합니다.
http://dataprofessional.tistory.com/172
위 글에서 설명했지만 복합어는 표준 단어의 일종입니다. 즉, 표준 단어는 단일어와 복합어로 나눌 수 있습니다.
복합어가 필요한 이유를 간단히 설명한다면, 애매한 사용을 줄이고 컬럼 명을 줄이기 위해서라고 하겠습니다. 표준화지침서에 복합어의 사용을 지양하라는 지침이 많은데, 제 생각은 반대입니다. 애매한 사용을 줄이고 컬럼 명을 줄이기 위해서는 복합어가 많아야 한다고 생각하기 때문입니다.
복합어를 사용해야 하는 경우
그럼, 어떤 경우에 복합어를 만들면 될까요? 크게 보면 앞서 밝혔듯이 애매하게 사용되지 않게 하고, 컬럼 명을 짧게 해야 하는 경우에 만들게 됩니다. 주요한 몇 가지 경우가 있습니다.
우선 업무에서 사용하는 복합 명사는 복합어로 만들어야 합니다. 다시 말해 속성에 사용된 복합 명사는 복합어가 돼야 하는 것이죠. 복합 명사 성격의 단어는 많을 것입니다. 명사와 명사가 결합된 형태니까요. 부가가치세, 자동이체, 한국은행, 약속어음, 수수료, 전자보증서 등 많습니다.
여기에는 명사가 결합돼 의미가 다소 변하는 성격의 단어도 포함됩니다. 별도의 의미가 있는 '계정'이나 '과목'이란 단어를 ‘계정과목’으로 합치면 의미가 달라집니다. ‘고객센터’도 여기에 속하죠.
의미가 달라지는지 여부와 무관하게 명사와 명사가 합쳐진 단어가 자주 사용된다면 복합어로 등록하는 게 좋습니다. 복합 명사 자체가 복합어이기 때문이기도 하지만, 컬럼 명을 줄이기 위해서입니다. 왜 줄여야 하는지는 나중에 자세하게 설명하겠습니다.
한 글자 단어도 복합어로 만들어야 하는 경우입니다. 표준 단어 글에서 밝혔듯이 원(原), 가(價), 료(料), 처(處), 비(費), 전(前), 자(者), 재(再), 별(別) 등의 접사나 관형사, 명(名), 모(母) 등의 명사 등 한 글자 단어는 표준 단어로 등록하지 않아야 한다고 생각합니다.
실생활에서 단독으로 사용하면 의미가 통하지 않으니 단어로 보기 힘들고요. 무엇보다 잘못 사용될 수 있고, 혼동될 수 있습니다. 모든 복합어 사용 목적은 컬럼 명을 줄이려는 의도가 크다는 점은 재차 강조합니다. 한 글자 단어가 사용되면 컬럼 명이 길어진다는 의미입니다.
만약에 '재(再)'를 표준 단어로 등록하면 ‘재+발급+신청+일자’로 사용할 텐데요. ‘재’가 '再'의 의미인지 확실하지 않을 때는 ‘재발급+신청+일자’로 사용할 수 있습니다. 대개는 상식적으로 판단하기 쉬울 테지만, 그렇지 않은 경우도 많을 것입니다.
‘율/률’도 혼란스러운 대표적인 한 글자 단어입니다. ‘율’이나 ‘률’이 표준 단어로 등록되면 모음이나 ‘ㄴ’ 받침 뒤에는 ‘율’로 나머지의 경우는 ‘률’로 사용해야 하는데, 정확하게 사용하기 쉽지 않습니다. ‘수익율’과 ‘수익률’이 둘 다 사용되는 이유입니다.
‘율/률’은 표준 단어로 등록하지 않고, ‘수익률’을 복합어로 ‘수익율’은 금칙어로 생성하면 사용에 혼선이 없게 됩니다.
접미사로 주로 사용되는 '비(費)'가 표준 단어일 경우에는 ‘사업+비’ 대신 ‘사업+비용’으로 쓸 수 있습니다. ‘사업비’를 복합어로 생성한다면 ‘사업비용’이 사용될 가능성이 줄어듭니다.
속성 개수가 적다면 위와 같은 한 글자 단어로 인한 오류를 최소화할 수 있는데, 속성 개수는 압도적으로 많습니다. 오류를 알아서 잘 피하도록 하는 것보다 가능한 오류가 원천봉쇄되도록 하는 게 좋습니다.
표준 용어를 신청할 때 판단할 필요가 없도록 ‘재’나 ‘비’가 표준 단어에 없는 게 명확합니다. 재발급, 사업비 등만 있으니 달리 선택할 방법이 없는 것이죠. 잘못 사용되지 않도록 하는 게 표준화의 가장 큰 목적입니다.
한 글자 단어를 복합어로 사용하면 품질이 높아지는 경향도 있습니다. ‘고객명’, ‘사원명’ 등으로 한정해서 사용하면 오히려 더 정확하게 사용되는 것이죠. ‘관리+사원명’처럼 사용돼 ‘관리자명’ 등으로의 사용을 방지할 수 있고, 중요한 부분은 아니지만 데이터 타입의 자리수도 나름대로 의미 있게 정해서 일관되게 사용할 수 있습니다. 외국인이 포함된 ‘고객명’은VC100으로 정하고 ‘파일명’은 VC500으로 사용할 수 있는 식이죠.
이렇게 한 글자 단어를 포함한 복합어를 사용할 경우에 단점은 복합어가 많아진다는 것입니다. 대부분의 한 글자 단어에 대해서는 복합어가 많이 생기지 않는데, 명(名)과 수(數)의 경우는 복합어가 다소 많이 생깁니다.
사실 복합어가 많은 게 특별히 문제가 되진 않습니다. 혼란도 방지할 수 있고 컬럼 명까지 줄일 수 있으니 한 글자 단어는 표준 단어로 등록하지 않고, 복합어로 사용하도록 하는 게 좋습니다.
한 글자 단어가 표준 단어로 존재하는 상태에서, 다수의 모델러가 표준 용어를 등록하면 아무리 승인 과정이 있더라도 오류는 피할 수 없습니다. 아예 잘못 사용할 원인을 제거하는 게 바람직합니다. 표준화는 매우 섬세한 작업이기 때문에 사소한 위반이라도 쌓이면 품질 저하를 일으킬 수 있습니다.
품질 저하가 특정 지점을 넘어가면 표준화에 대한 의미가 없어져 유명무실해집니다. 쓸모도 적으면서 괜한 통제로 인식되면 부작용만 커집니다. 정확히 사용돼야 명분이 있는 것이기 때문에 DA는 원칙을 사수해야 합니다. 작은 구멍에 둑이 무너지는 법입니다.
명사로 정해진 고유한 영문 명을 사용하기 위해서도 복합어를 사용합니다. 예를 들어 ‘감가상각비’의 영문은 ‘VAT’인데, ‘감가상각비’를 복합어로 등록하지 않으면 표준 용어를 등록할 때 ‘감가+상각+비’, ‘감가+상각비’처럼 사용될 수 있습니다. 그러면 영문인 ‘VAT’를 사용할 수 없게 됩니다. 고유한 영문이 존재하는 경우는 복합어로 등록해야 합니다.
기관 명 등의 고유 명사도 복합어로 등록해서 사용해야 하는 경우입니다. ‘한국은행’을 ‘한국+은행’으로 사용하지 않도록 하는 것입니다. 원래 하나의 단어로 사용하니 의미 상으로도 복합어로 등록해야 하는 것입니다.
‘1분기’, ‘1학기’ 등 숫자와 한글이 결합된 경우도 복합어로 등록합니다. 숫자 자체를 단어로 사용할 수 없기 때문에 이렇게 숫자와 결합된 복합어는 상당히 많습니다. 복합어가 많아져서 한 글자 단어를 복합어로 만들지 않는다면 숫자 역시 단어가 돼야 하는 것이죠.
주 식별자 속성도 복힙어로 등록하는 게 좋습니다. 계좌 엔터티의 주 식별자인 ‘계좌번호’, 고객 엔터티의 주 식별자인 ‘고객번호’는 복합어로 등록해서 사용하는 게 좋습니다. 이는 도메인과 연관돼 있는데, 도메인은 별도로 설명하겠습니다.
마지막으로 구분코드, 유형코드, 종류코드 등은 컬럼 명을 줄이기 위해 복합어로 등록합니다. TP_CD 대신 TC로 사용하기 위해서죠. 업무 용어는 아니지만 속성에 자주 사용되는 복합 명사로 볼 수 있습니다. ‘사원명’의 경우와 마찬가지로 사용 범위를 축소시켜 강제하기 때문에 품질이 높아지는 효과가 있기도 합니다.
저는 공통 코드에 대해서는 '코드' 앞에 구분어를 꼭 사용하고, 구분어는 유형, 종류, 구분으로 한정합니다. 이를 복합어로 등록하면 사용이 획일적이어서 잘못 사용되는 경우가 줄어듭니다.
이상으로 복합어로 등록해야 하는 경우에 대해 자세하게 설명했습니다. 모든 경우에 공통적으로 해당하는 목적이 컬럼 명을 짧게 만들기 위함인데요. 개인적으로 민감하게 생각하는 부분이라 이것이 복합어를 만드는 주요 기준이 됩니다.
복합어가 생기는 시점
위와 같은 경우에 복합어가 생성되는데요. 그럼 복합어를 생성하는 시점은 언제일까요? 크게 두 가지로 구분할 수 있습니다. 우선, 개발 프로젝트일 때를 기준으로 설명하겠습니다. 프로젝트 시작 전에 사전 구축하는 방법이 있고, 표준 용어를 등록할 때 복합어를 생성하는 방법이 있습니다.
나중에 설명할 표준 용어는 모델러가 신청하는 게 일반적이지만, 복합어는 DA나 표준담당자가 생성합니다. 개발 프로젝트라면 표준담당자가 존재할 것이라서 표준담당자가 복합어를 생성합니다. 표준담당자는 표준 컨턴츠가 어느 정도 구축된 프로젝트 중반에는 없을 수도 있습니다. 이때는 DA가 복합어를 생성합니다.
복합어는 단어에 포함되고, 단어는 일반적으로 사전에 구축하기 때문에 복합어 또한 사전에 구축하는 방법을 많이 사용하고 있습니다. 위의 절에서 설명한 복합어 생성 대상에 해당되는 복합어를 도출해서 사전에 구축하는 것입니다.
이 방법의 단점은 대량 작업으로 인한 컨텐츠의 품질 저하라고 생각합니다. 연관되는 얘기인데, 표준담당자가 표준 용어의 의미를 정확히 알 수 없어 복합어 선정에 어려움을 겪을 수 있습니다. 이런 문제에 대량 작업을 해야 하는 문제가 겹쳐 결국 품질에 문제가 생길 수 있습니다.
두 번째 방법은 표준 용어를 등록하는 시점에 복합어를 생성하는 것입니다. 이때는 복합어에 대한 일차적인 판단을 모델러가 하게 됩니다. 위에서 설명한 복합어가 필요한 상황이면, 표준 용어를 신청하면서 복합어를 동시에 신청하는 것입니다. 물론 승인은 표준담당자나 DA가 하게 됩니다. 복합어가 필요한 상황인데 모델러가 인지하지 못하고 신청하지 않을 수도 있습니다. 이때는 복합어를 등록하고 사용하도록 가이드하게 됩니다.
이 방법이 표준 용어를 등록하는데 시간이 조금 더 걸릴 수는 있지만, 복합어나 표준 용어의 품질은 더욱 높아지게 됩니다. 모델러가 표준 용어의 의미를 정확히 알기 때문에 복합어를 더욱 잘 선정할 수 있다고 생각합니다.
표준담당자나 DA가 복합어를 미리 생성하는 것은 힘듭니다. ‘주민등록번호’ 등 일부 도출하기 쉬운 복합어는 미리 생성해 놓을 수 있지만, 모든 복합어를 사전에 생성하긴 힘듭니다. 표준 단어와 복합어는 결국 ASIS 속성 명에서 도출되는데, 의미를 모르는 상태여서 작업도 힘들고 결과도 만족스럽지 못하게 됩니다.
주요 복합어만 사전에 등록하고 표준 용어를 등록하면서 복합어를 도출하는 게 좋습니다. 위에서 설명한 복합어를 생성하는 명확한 기준이 있다면 품질이 높은 표준 컨텐츠를 구축할 수 있습니다.
표준 단어나 복합어가 완전하게 구비되지 않은 상태에서 표준 용어를 신청하는 것에 대한 우려를 많이 하는데, 표준 단어와 복합어가 대한 정책만 제대로 존재있다면 복합어를 그때그때 생성하는 게 문제가 되진 않습니다.
대량 작업에는 오류가 뒤따르게 마련이니 소량의 작업을 확실하게 하는 게 바람직합니다. 초반에 다소 느리지만 나중에 재작업이 줄어드는 걸 생각하면 결코 느리다고 할 수 없습니다.
빨리 구축하고 계속 수정하는 것과 천천히 구축하고 수정을 안 하는 것의 차이입니다. 이는 IT에 종사하는 사람이면 누구나 아는 차이입니다. 길을 잘못 든 사람이 걸음을 재촉하는 법이라고 합니다. 걸음을 재촉하면 길을 잘못 들 수 있습니다.
복합어의 사용 형태
표준 용어를 신청할 때 복합어가 존재하는지 여부에 따라 상황이 달라집니다. 복합어가 있는 상태에서 복합어가 표준 용어에 포함된 경우는 문제가 없습니다. 복합어가 분리된 표준 단어가 존재해도 복합어를 사용해야 합니다.
이는 시스템에서 간단하게 적용할 수 있는 경우입니다. 예를 들어 ‘한국은행(BOK)’이란 복합어가 있다면 ‘한국(KOR)’과 ‘은행(BNK)’이라는 표준 단어가 있어도 ‘한국은행(BOK)’을 사용하는 것입니다.
문제는 복합어가 없는 상태에서 복합어 후보가 생겼을 때입니다. 이 때도 두 가지 경우가 있는데요. 복합어를 분리한 형태로 사용하고 있지 않을 때와 분리한 형태로 사용하고 있을 때입니다.
복잡할 수 있으니 그림으로 설명하겠습니다. [그림 1]의 1번은 앞서 설명한 대로 아무 문제가 없는 경우입니다. ‘한국은행(BOK)’이란 복합어가 있다면 그 복합어를 사용하면 됩니다.
[그림 1] 표준 용어 등록 시 복합어의 사용 형태
1번 경우도 문제가 될 수 있는데, 예를 들면 ‘전자보증서발급일자’ 용어를 신청할 때 ‘전자보증서’라는 복합어를 사용하지 않고 ‘전자+보증서+발급+일자’로 등록할 때입니다. 물론 오류에 해당합니다.
모델러가 ‘전자+보증서+발급+일자’로 신청했다고 해도 메타 시스템에서 ‘전자보증서+발급+일자’로 바로잡아줘야 합니다. 복합어가 있는 상태라면 복합어의 사용이 원칙이며, 시스템에서 강제해야 하는 원칙입니다.
2번의 경우가 ‘전자보증서’라는 복합어가 없으면서, ‘전자+보증서’로 사용하고 있는 표준 용어가 없는 상태입니다. 이때도 문제 없이 간단하게 처리힐 수 있습니다. ‘전자보증서’를 복합어로 등록한 후에 ‘전자보증서+발급+일자’를 표준 용어로 등록하면 됩니다.
3번과 4번은 다소 복잡합니댜. ‘전자보증서’라는 복합어가 없는데, ‘전자+보증서’로 사용하고 있는 표준 용어가 있는 상태입니다. 3번은 ‘전자+보증서’로 사용하고 있는 표준 용어의 개수가 많은 경우이고요. 4번은 개수가 적은 경우입니다.
3번의 경우는 어쩔 수 없이 ‘전자보증서’를 복합어로 등록하고, ‘전자보증서+발급+일자’로 용어를 등록하게 됩니다. 그런데 ‘전자+보증서’로 사용하고 있는 표준 용어가 이미 많기 때문에 ‘전자보증서’라는 복합어는 예외로 사용한다는 것을 의미합니다.
위와 같은 경우는 컬럼 명이 길어질 때 발생하는데요. 컬럼 명의 길이 제한이 있는 DB에서만 발생합니다. 예를 들면 오라클은 30자리까지 허용합니다. 반복 속성이 10개 이상 생길 수 있어 끝에 두 자리 숫자를 여분으로 두면 28자리가 촤대 길이가 됩니다. 표준 정책을 잘못 정하고 속성 명을 구체적으로 정하면 이 최대 길이를 넘어가는 속성이 생각보다 많아질 수 있습니다.
어쩔 수 없이 컬럼 명을 줄여야 할 때, ‘전자+보증서’라고 사용하고 있는 표준 용어가 많은데도 불구하고 ‘전자보증서’라는 복합어를 나중에 만들게 되는 상황입니다. 나중에 만든 복합어는 예외로 사용하도록 처리하는 것이고요. 혹시 다른 컬럼의 길이가 길어져서 다시 ‘전자보증서’라는 복합어를 사용하게 될 수는 있지만, 그렇지 않을 경우에는 ‘전자+보증서’를 사용하는 것입니다.
이렇게 사용하기 위해서는 나중에 만들어진, 예외로 사용하게 될 복합어에 대해서는 따로 구별을 해야 합니다. 그래야 시스템에서 지속적으로 사용되지 않고 예외 처리를 할 수 있습니다. 1번, 2번 경우와 비교하면 구분이 필요한 상황입니다.
4번은 약간 다른데요. 나중에 ‘전자보증서’라는 복합어를 만든 상황은 3번과 같습니다. 그런데 ‘전자+보증서’로 사용하는 용어가 1~2개로 매우 적은 것입니다. 이때는 오히려 ‘전자보증서’라는 복합어를 계속 사용하도록 할 수 있습니다. 물론 일관된 사용을 위해 이 경우에도 3번과 마찬가지로 ‘전자+보증서’를 사용하는 게 좋다고 생각합니다.
여담이지만 오래 전에 3번, 4번 경우가 빈번히 발생하는 프로젝트가 있었는데요. 그때는 예를 들면 ‘전자+보증서’로 사용하던 속성을 전부 ‘전자보증서’로 수정하도록 했습니다. 제가 아니라 PM이요. 개발 중이었으니 여러 군데서 소심한 곡소리가 들렸죠.
위와 같이 처리하는 게 가장 깔끔하긴 한데 파장이 큰 거 같습니다. 매우 빈번하다면 어쩔 수 없지만, 흔치 않다면 복합어를 사용한 경우를 예외로 처리하는 게 차선책입니다. ‘전자보증서’가 포함되고 28자리가 넘는 용어가 드물 것이라 계속 ‘전자+보증서’로 사용하도록 하는 게 부작용도 최소화되고 일관적이라고 생각합니다. 물론 ‘전자+보증서’로 사용된 용어가 적을 때는 이를 ‘전자보증서’로 수정하는 것은 좋은 방법입니다.
일관되게 적용하려면 ‘전자+보증서’와 같이 단어의 조합으로 사용 중일 때 생긴 복합어는 예외 처리를 해서 다시 사용되지 않도록 하는 게 좋습니다. 시스템에 적용하려면 한 방향을 정해야 합니다.
어쨌든 3번, 4번은 용어에 ‘전자보증서’와 ‘전자+보증서’가 동시에 사용되는데, 이는 컬럼 명이 달라지게 된다는 것을 의미합니다. 이런 상황이 자주 발생하면 품질이 떨어질 수 있습니다.
이와 같은 현상은 복합어가 나중에 생겨서 발생합니다. 이 말은 결국 복합어로 생성해야 할 대상을 단어의 조합으로 사용했을 때 생길 수 있습니다. 복합어를 생성하는 시점의 문제보다는 대상을 도출하지 못하고 지나쳤을 때 생길 수 있습니다.
컬럼 명이 길어지는 것 자체가 좋지 않고, 간혹 컬럼 명의 길이 제한 때문에 3번, 4번 상황이 발생하니 애초부터 복합어에 대한 설계를 제대로 해야 합니다. 복합어만 적절하게 생성해도 3번, 4번 경우는 발생하지 않습니다. 위에서 설명한 복합어 생성 후보에 대해서는 그때그때 복합어로 등록하는 게 좋습니다.
3번, 4번이 안 생기도록 하는 또 한가지 비법은 단어의 영문 약어를 짧게 만드는 것입니다. ‘계좌’라는 단어의 영문 약어명을 ‘ACCT’라고 하지 않고 ‘AC’라고 하는 것이죠. 길게 만드는 장점은 가독성입니다. 하지만 표준 용어가 4~5개의 단어로 구성되면 영문의 가독성이 좋아진다고 볼 수 없습니다. 게다가 컬럼 명이 길어지는 것에 대한 단점이 너무나 큽니다.
속성 명을 구체적으로 정해야 할 때가 많아 용어가 4~5개의 단어로 구성되는 경우가 많습니다. 단어의 영문 약어가 4글자라면 단어 사이의 ‘_’까지 감안했을 때 25자리 정도가 되는데, DB에 생성이 가능해도 매우 긴 상태입니다.
길어도 15~20자리가 넘지 않는 게 좋습니다. 28자리가 넘어가는 문제로 생기는 복합어와 관련된 혼란도 없고 사용하기도 편합니다. ‘AC’처럼 짧더라도 자주 보면 익숙해지고 익히게 됩니다. 단어의 영문 약어명은 2~3자리가 좋습니다.
실제로 [그림 1]의 3번, 4번처럼 긴 컬럼 명을 줄여야 할 상황이 발생하면, 연관성이 있는 단어를 복합어로 만드는 게 좋습니다. 연관되는 단어가 없을 때는 영문이 긴 단어를 묶는 것이 좋습니다.
복합어의 영문 약어명은 당연히 ‘_’ 없이 정하는 게 바람직합니다. ‘계좌번호’라는 복합어를 ‘AC_NO’로 하기보다 ‘ANO’로 하는 것입니다. 이는 사실 필연적인데, ‘AC_NO’로 사용한다면 복합어인지 두 단어를 합친 것인지 알 수 없게 됩니다. 영문을 줄이기 위해 복합어를 사용하는데, ‘AC_NO’로 사용하면 복합어를 사용할 이유가 없게 되는 것입니다. 복합어라면 영문이 줄어야 합니다. 복합어인데 영문 약어명에 “_”가 포함돼 있다면 잘못된 것입니다.
표준 용어를 등록할 때 문제가 발생할 수 있는 부분은 크게 이음동의어와 동음이의어를 어떻게 처리하는지, 그리고 복합어를 어떻게 처리하는지 정도입니다. 나머지 문제는 지엽적입니다. 표준 용어에 대해서는 별도의 장에서 자세하게 설명하겠습니다.
전사 데이터베이스에 오라클이 포함될 확률이 높기 때문에 컬럼 명 길이 제약을 대비해서라도 복합어에 대한 정책을 제대로 세워야 합니다. 그렇지 않으면 나중에 수정해야 할 작업이 많아지거나, 수정조차 못하고 표준이 없는 것이나 마찬가지인 상태로 사용하게 될 수 있습니다.
마직막으로 언급할 것은 복합어의 구성 단어를 무조건 표준 단어로 등록하는 것은 지양해야 한다는 것입니다. 해당 단어가 별도로 사용될 때 등록하는 게 바람직합니다. 사용되지 않는데도 불구하고 복합어를 분리한 단어가 각자 등록되면 복합어와 혼란만 생깁니다.
‘고객’과 ‘센터’가 단어라면 복합어인 ‘고객센터’를 사용할 때 ‘고객+센터’로 사용될 수 있는 것이죠. 물론 대부분의 단어는 사용될 것입니다. 무의미할 수 있는 ‘고객센터’의 ‘센터’, ‘랩어카운트’의 ‘랩’이나 ‘어카운트’, ‘벤처기업’의 ‘벤처’ 등의 단어를 무조건 등록하는 것을 지양하면 됩니다.
이상으로 복합어에 대한 설명을 끝마치겠습니다. 표준 단어에 대해서는 어느 정도 설명을 마친 것 같습니다. 다음 기회에는 표준 도메인에 대해 자세하게 설명하겠습니다.
'데이터 Story > 데이터 표준' 카테고리의 다른 글
두 가지 종류의 표준 도메인 (0) | 2017.12.23 |
---|---|
표준 단어에 대해서 (0) | 2017.11.19 |
속성 명 정하는 방법 (2) | 2017.10.22 |
도메인 개념과 대표 속성 (0) | 2017.09.09 |
화면 용어를 관리하려면 (0) | 2017.06.18 |