행위

모델링 표준화

DB CAFE

Dbcafe (토론 | 기여)님의 2021년 5월 10일 (월) 17:35 판
thumb_up 추천메뉴 바로가기


1 표준화 / 모델링 작성 가이드[편집]

1.1 모델링 표준 개요[편집]

데이터 표준화 관리를 위한 표준단어관리, 용어사전관리, 도메인관리를 수행하여 모델의 속성을 표준화에 맞춰 관리하고자 함 속성의 정합성 체크 후 모델링 산출물(ERD, DB Object)에 적용함

1.1.1 작업 순서[편집]

  1. 엔티티 명명
  2. 속성 명명
  3. 표준 단어 정의
  4. 표준 용어 정의
  5. 도메인 정의

1.2 표준화 대상[편집]

1.2.1 단어[편집]

데이터 모델링에 사용되는 논리/물리 오프젝트의 한글명 및 영문명을 이루는 원소를 가리키며, 최소한의 의미를 가진 어소(語素)이다. 엔티티명, 속성/컬럼명은 반드시 이러한 단어의 조합으로 이루어 진다.

1.2.2 용어(속성)[편집]

어소와 도메인으로 구성되어, 속성(컬럼명)을 작성할 때 적용하는 요소이며, 한 용어는 반드시 하나의 도메인과 매핑된다.

1.2.3 도메인[편집]

용어(속성)에서 사용하는 데이터 타입과 길이를 제한하는 항목으로, 동일한 도메인을 사용하는 용어들은 동일한 데이터 타입과 길이를 사용하게 되며, 이는 데이터의 정합성 관리를 용이하게 한다.


1.3 표준 정의 원칙[편집]

1.3.1 한글 단어[편집]

  1. 명사형으로 정의하며 동사, 접속사, 복수표시 또는 소유격형태의 단어는 사용하지 않는다.
    (예) 고객의 주소, 가장최근에배송한일자, 과, 와 (X)
  2. 1Byte문자를 사용하여 정의한다.
    (예) A T M(X) ▶ ATM (O)
  3. 띄어쓰기를 허용하지 않으며 특수문자(/,_,-,+,(,))는 사용하지 않는다.
  4. 고객사에서 사용하는 관용어를 우선 사용한다. (빈도수, 업무 등 고려)
  5. 동음이의어는 되도록이면 사용하지 않으나 대체 용어가 없는 경우 빈도가 낮은 용어를 선택하여 합성어를 등록하여 사용한다.
    (예) 수신(Deposit), 수신(Receive) ▶ 문서수신(Document Receive)
  6. 동일한 의미의 단어를 한글과 영문으로 중복해서 정의하지 않는다.
    (예) 이메일(O), EMAIL(X)
  7. 한글 약어는 되도록 피하며, 예외적으로 범용으로 쓰이는 약어나, 공식적으로 사용이 승인된 약어는 표준에 의거하여 길이 제한을 맞추기 위해 특별히 사용할 수 있다.
    (예) 주민번호 ▶ 주민등록번호

1.3.2 영문 및 외래어[편집]

  1. 한글 단어에는 가급적 영문을 사용하지 않으며, 한글화를 원칙으로 하나 대체할 한글이 없거나 범용적으로 사용되는 영문은 사용할 수 있다.
    (예) FAX(X) ▶ 팩스(O), EMAIL(X) ▶ 이메일(O), SQL(O), ID(O)
  2. 영문을 한글화 할 경우 의미를 파악할 수 있도록 한글화하는 것을 원칙으로 하나 소리나는대로 한글화 한 명칭이 더 관용적일 경우 이를 사용할 수 있다. 의미로 한글화 한 경우와 소리나는대로 한글화 한 경우 둘다 자주 사용될 경우 의미로 한글화한 단어를 표준으로 한다.
    (예) BOX(X) ▶ 상자(X), 박스(O) : '상자'보다 '박스'라는 단어가 자주 사용됨
  3. 영문단어를 사용하는 경우 반드시 1Byte 대문자로 정의하며 업무상 관용적으로 사용하는 단어나 고유명사인 경우 특수문자 중 '/' , '-' , '&' 만을 사용할 수 있다.
    (예) lc, LC, b/l, BL(X) ▶ L/C, B/L(O)
  4. 외래어의 경우 한글을 우선으로 하나 한글명보다 더 친숙하게 사용되는 외래어의 경우에는 그 외래어를 한글 용어로 사용한다.
    (예) 전송(X), 팩시밀리(X) ▶ 팩스(O)

1.3.3 합성어[편집]

  1. 단독으로 사용 가능한 단일어의 조합에 의해 생성된 단어를 합성어로 등록한다.
  2. 합성어를 구성하는 단어는 반드시 단어사전에 등록되어 있어야 한다.
    (예) '고객번호' 를 합성어 등록시 '고객' , '번호' 가 각각 단어로 등록되어 있어야 함.
  3. 접두사, 접미사 결합 단어
    계약자, 송금인, 초회 … 등
  4. 단일어+단일어 이상의 독립적인 의미를 가지는 경우
    해피콜 : 해피(행복) + 콜(전화)의 의미가 아님, 고객 만족도를 확인하기 우한 상담원의 전화
    홈페이지 : 홈(집) + 페이지(쪽)의 의미가 아님, 월드와이드웹(Web Browser)로 볼 수 있도록 정보 제공자가 정보의 내용을 간단히 소개한 하이퍼텍스트
  5. 고유명사
    회사명 등
  6. 단어 결합시 영문명의 의미가 모호하거나 달라지는 경우
    휴대+전화 : 휴대(Portable) + 전화(Telephone) ▶ PRTB_TEL(X)
    휴대전화 : Mobile Phone ▶ MBP(O)
    휴대전화번호: Mobile Phone Number ▶ MBP_NO(O)
  7. 사용되지 않는 단일어를 포함하는 경우
    합성어를 이루는 단일어가 독립적으로 사용될 일이 거의 없다면 합성 단어로 등록한다.
    단과 + 대학(X) ▶ 단과대학(O)

1.3.4 접두사/접미사 사용 원칙[편집]

  1. 접두(미)사 자체는 반드시 단어로 등록한다.
    (예) 대, 중, 소, 전, 후
  2. 일반적으로 단어와 결합시 영문이 변경되는 접두사는 접두사와 결합된 단어를 단어로 등록하고 접두사와 결합된 단어의 영문이 별도로 존재하지 않는 경우 등록하지 않는다.
    (예) 정상(normal : NORM)
    비정상(abnormal) : 비(not) + 정상(normal) : N_NORM으로 사용하지 않음
    비정상(abnormal) : ABNRM을 단어로 등록한다.
    원천징수(withhold : WHLD)
    주거래(main transaction : MTR) : 대표하는 영문명이 별도로 없으므로 '주', '거래' 만 등록하여 '주+거래(MAIN_TRANS)'로 사용 가능

1.3.5 접두사/접미사 사용 원칙[편집]

  1. 접미사는 일반단어와 결합 시 대부분 별도의 영문이 존재하므로 일반 단어와 결합된 단어를 등록하여 사용한다.
  2. 접두사
    1. 단일어와 결합 시 일반적으로 영문명이 별도로 존재하는 접두사(합성어)
      부(不), 재(再), 미(未), 비(非), 부(副), 선(先)
      (예) 비정상(非正常)을 단일어로 등록함
    2. 단일어와 결합 시 일반적으로 영문명이 별도로 존재하지 않는 접두사
      신(新), 구(舊), 전(前), 후(後), 모(母), 자(子), 유(有), 무(無), 별(別), 총(總), 원(原), 대(大), 중(中), 소(小), 주(主)
  3. 접미사
    1. 반드시 일반 단어로 결합해서 단일어로 등록(합성어)
      사(社), 처(處), 자(子), 인(人), 증(證), 지(地), 료(料), 서(書), 장(長), 금(金), 비(費), 권(權), 성(性), 형(型), 표(表), 식(式), 화(化), 도(度)
      (예) 매입처, 임대인
    2. 단일어와 분리해서 사용하는 접미사
      용, 형, 분
      (예) 입금분 ▶ 입금 + 분

1.3.6 단어의 영문 약어[편집]

  1. AS-IS 시스템에서 사용하는 영문 약어를 우선으로 한다.
  2. 영문 약어는 한글명에 대한 영문명을 어두 이외의 모음을 제거하여 각 음절의 대표자음으로 가급적 6자 이내로 정의한다.
  3. 반드시 대문자로 정의 한다.
  4. 영문 약어 명의 사용시 한글 발음식의 약어는 사용하지 않으나 순수 한글이거나 대체할 영문이 없는 경우 사용할 수 있다.
    (예) 주소 : JUSO(X) ▶ ADDR(O)      시 : SI,    군 : GUN     구 : GU (O)
  5. 두 개의 자음이 연속할 경우, 가급적 한 개의 자음은 생략하는 형태로 표현한다.
    (예) 연봉 (ANNUAL SALARY)      모음제거 ▶ NNL SLR        중복자음제거 ▶ NL SL
  6. 영문 약어는 유일성을 유지하도록 한다.
    범용적으로 사용되는 두문자(Acronyms)가 있는 경우 되도록 두문자를 사용하며 자릿수가 지나치게 긴 경우 새로운 영문약어를 작성한다.
    (예) SQL (Structured Query Language), VAN(Value Added Network)

1.3.7 용어(속성명, 단어 조합)[편집]

  1. 용어는 하나 또는 그 이상의 단어로 조합되며, 마지막 단어는 반드시 분류어여야 한다.
  2. 조합형식은 주제어 + 수식어 + 수식어 + … + 분류어로 한다.
    1. 주제어 : 업무명이나 항목의 성격, 발생처 또는 사용처에 따라 논리적으로 분류하는 단어
    2. 수식어 : 일반적인 수식어
    3. 분류어 : 업무용어를 구성하기 위해 필수적으로 부여하는 업무단어로 데이터의 특성을 결정(금액, 성명, 일자, 내용, 수량, 코드, 번호 등)
  3. 업무단어 기준으로 최대 5단어 이내로 정의하며, 가급적 28자리(BYTE)를 넘지 않도록 선정한다.
  4. 동음이의어가 존재하는 경우 영문 약어를 반드시 확인한다.

1.4 논리모델 작성 표준[편집]

  1. 엔티티명은 하나 또는 그 이상의 단어로 조합되며, 마지막 단어는 반드시 엔티티 유형명이어야 한다.
  2. 조합형식은 [주제영역코드] + “_” + 수식어 + 수식어 + … + 유형명으로 한다.
  3. 필수 작성 항목 : 엔티티명, 엔티티 definition,엔티티 note
    , 속성명, 속성 definition, 속성 note
  4. 타영역 및 본인 영역 참조 엔티티명은 엔티티명 앞에 “복사복_”을 추가 기입한다.
  5. 표준으로 등록된 용어만 속성으로 사용해야 한다.
  6. 속성 definition은 기본적으로 용어의 정의를 차용하되, 사용되는 엔티티에 따라 의미를 수정할 수 있다.
----- --- ------------------------------------------------
주제  코  엔터티 목록 
영역  드  
----- --- ------------------------------------------------
공통  CM  공통/시스템관리    공통코드, 우편번호, 날씨, 은행
상품  MD  상품  상품 등록 및 변경, 조회, 이력관리
      PG  구색  POG관리
      PR  행사  판촉, 이벤트, 행사
      PT  협력사 거래처, 배송처 관리
SCM   PO  발주  발주, 매입 주문
      ST  재고  입출고, 재고, 수불
      LO  물류  입고, 출고, 반품
영업  SC  매장  매장 개발 및 계약관리
      SA  영업  전표, 매출, 회원/인사 연계
      FR  가맹  가맹 수수료, 인센티브 정산
----- --- ------------------------------------------------
  1. 엔티티 유형
    1. 아래 기준을 참조하되, 업무적의미에 따라 적절히 선택적으로 사용한다.
------ -- ------------------------------------------------
마스터 M   주된 업무의 대상이 되는 마스터 정보 관리(회원, 상품, 거래처, 사업장)
기본   B   마스터는 아니나 프로세스 상 기준이나 중심이 되는 핵심(헤더) 정보
상세   D   마스터나 기본에 대해서 부가적인 속성을 관리
내역   L   마스터나 기본에 대해 1:N으로 부가적이거나 트랜잭션에 의해 반복적으로 발생하는 속성을 관리
이력   H   마스터나 기본 정보 등 주요 엔티티의 히스토리를 관리
           이력 대상 주요 엔티티명 + “이력"으로 명명함.
TR     R   POS에서 발생하는 거래 데이터
코드   C   공통코드, 개별코드 등 거의 변하지 않는 조회성 데이터
기준   S   환율 등 단순한 구조로 주기적으로 변경되는 데이터
집계   A   배치, 리포트 등 특정 목적에 맞게 구조화된 데이터
------ -- ------------------------------------------------
  1. 엔티티 작성 예시
    1. [Entity Definition]
      1. 엔티티에서 관리하는 데이터의 의미를 간략히 작성
        (예) 센터 및 매장의 기본 정보를 관리한다.
    2. [Entity Note]
      1. 매핑되는 ASIS 테이블명을 작성, 신규일 경우 ‘[신규]’로 기입
        (규칙) 시스템명.테이블명
    3. [Attribute Definition]
      1. 속성에서 관리하는 데이터의 의미를 간략히 작성
        (예) 센터 혹은 매장을 식별하기 위한 유일한 식별번호
    4. [Attribute Note]
      1. 매핑되는 ASIS 컬럼명을 작성, 신규인 경우 ‘[신규]’로 기입
        (규칙) 시스템명.테이블명.컬럼명
    5. ※ 타 영역이나, 동일 영역의 엔티티를 복사해서 관계를 도출해야 하는 경우, 엔티티명 앞에 “복사복_”을 추가하여 작성한다.
    6. 가독성을 위해 PK외 나머지 속성은 삭제한다.
    7. 타 영역 엔티티의 경우 “노란색”으로, 동일 영역 엔티티인 경우, “하늘색"으로 구분한다.

1.5 물리모델 작성 표준[편집]

1.5.1 테이블[편집]

  1. 테이블명의 조합 형식은 “엔티티명에 대응되는 영문약어"를 기준으로 한다.
  2. 테이블 식별자(TB), 업무영역코드 및 엔티티유형영문명은 반드시 작성하여야 한다.
  3. 엔티티명이 긴 경우, 핵심 단어만 영문 조합을 하여 테이블명으로 할 수 있다.
  4. 참조 및 복사 엔티티에 대해서는 테이블명명을 하지 않아도 된다.
  5. 필수 작성 항목 : 테이블명, 컬럼명, 매핑 도메인, 데이터타입/사이즈
    1. 테이블명 작성 예시
---------------------------- ------------------------
엔티티명                     테이블명
---------------------------- ------------------------
SA_사업장마스터              TB_SA_BIZPLC_M
---------------------------- ------------------------
FR_가맹점지원금내역          TB_FR_FCSTR_SPPMNY_L
---------------------------- ------------------------
SC_POS별상품중분류판매집계   TB_SC_POS_GDS_MCLS_A
---------------------------- ------------------------

1.5.2 테이블 유형 (물리모델 추가)[편집]

--------- ---------- ---------------------------------------------------------
유형명    유형영문명   설명
--------- ---------- ---------------------------------------------------------
임시      T          배치 작업용 중간 테이블 (자료 삭제)
WORK      W          배치 작업용 중간 테이블(자료 보존), 엑셀 업로드 용 등.
송신IF    IS         시스템간 송신용 중간 데이터 저장을 위해 사용.
                     엔티티명 : 원엔티티명 + “_송신IF”로 명명함.
                     테이블명 : 원테이블명 + “_IS”로 명명함.
수신IF    IR         시스템간 수신용 중간 데이터 저장을 위해 사용.
                     엔티티명 : 원엔티티명 + “_수신IF”로 명명함.
                     테이블명 : 원테이블명 + “_IR”로 명명함.
--------- ---------- ---------------------------------------------------------

1.5.3 도메인 작성[편집]

----------- ----------- ------------------ ---------------------------
도메인그룹   도메인명    데이터타입/크기    설명
----------- ----------- ------------------ ---------------------------
코드          XX코드      VARCHAR(N)        XX를 구분하기 위한 기준정보
                여부      VARCHAR(1)        ‘Y’와 ‘N’ 값만 허용
번호          XX번호      VARCHAR(N)        업무적으로 주요 정보를 구분하기 위해 체계적으로 구성한 인조번호
                                            예) 계좌번호, 전표번호, 사업자번호
                XXID      VARCHAR(N)        시스템적으로 주요 데이터를 구분하기 위한 번호
                                            예) 사용자ID, 프로그램ID, 메뉴ID
일련번호    일련번호_N5   NUMBER(5)         5자리 이내의 연속 부여 번호
            일련번호_N10  NUMBER(10)        10자리 이내의 연속 부여 번호
금액        금액_N20      NUMBER(20)        원화 표기
            금액_N20,2    NUMBER(20,2)      외화 표기, 원화의 소수점 표기
            단가_N10      NUMBER(10)        원화 단가 표기
            단가_N10,2    NUMBER(10,2)      외화 단가 표기
율          율            NUMBER(18,6)      비율 표기
날짜/시각   일자          VARCHAR(8)        년월일(YYYYMMDD)형식의 날짜 표현
            년월          VARCHAR(6)        년월(YYYYMMD)형식의 날짜 표현
            월            VARCHAR(2)        월(MM)형식의 날짜 표현
            년도          VARCHAR(4)        년도(YYYY)형식의 날짜 표현
            일시          DATE              년월일시분초를 포함하는 날짜+시각 표현
            시각          VARCHAR(6)        시분초(HHMISS)형태의 시각 표현
            시분          VARCHAR(4)        시분(HHMI) 형태의 시각 표현
명          명_V200       VARCHAR(200)      200BYTE 내의 문자열 형식의 명칭
            명_V1000      VARCHAR(1000)     1000BYTE 내의 문자열 형식의 명칭
            내용          VARCHAR(4000)     4000BYTE 내의 문자열 내용
            설명          VARCHAR(4000)     4000BYTE 내의 문자열 설명
            비고          VARCHAR(4000)     4000BYTE 내의 문자열 비고
            적요          VARCHAR(500)      500BYTE 내의 문자열 적요
수          수_N9,2       NUMBER(9,2) 
            수_N10        NUMBER(10)  
            수량          NUMBER(11,2)    
            지수          NUMBER(5,2) 
            점수          NUMBER(5,2) 
            횟수          NUMBER(10)  
            건수          NUMBER(10)  
            길이          NUMBER(10)  
            깊이          NUMBER(10)  
            높이          NUMBER(10)  
            중량          NUMBER(10)  
            용량          NUMBER(10)  
            순위          NUMBER(10)  
            온도          NUMBER(5,2)

1.5.4 컬럼 기본값(default) / Null 설정[편집]

  1. 원칙적으로 기본값은 설정하지 않도록 하여, DB에서 암묵적인 처리가 아닌 응용프로그램에서 명시적인 처리를 하도록 한다.
  2. 숫자형 컬럼에 대해서는 선택적으로 ‘숫자 0’을 디폴트로 설정할 수 있다.
  3. 여부형 컬럼에 대해서는 선택적으로 문자 ‘Y’나 문자 ‘N’를 디폴트로 설정할 수 있다.
  4. 일시형 관리컬럼에 대해서는 선택적으로 ‘시스템일시'로 설정한다.
  5. PK와 관리 컬럼은 반드시 NOT NULL로 설정한다.
  6. 일반속성은 필요시 선택적으로 NOT NULL을 설정할 수 있다.
---------- ----------- -------------------------------------
디폴트명    디폴트값    설명
---------- ----------- -------------------------------------
숫자0 0       도메인     그룹이 금액, 수, 율인 컬럼에 대해서 설정
문자N ‘N’     여부       도메인을 사용하는 컬럼에 대해서 선택적으로 설정
문자Y ‘Y’     여부       도메인을 사용하는 컬럼에 대해서 선택적으로 설정
시스템일시   SYSDATE     등록일시, 수정일시 컬럼에 대해서 설정
---------- ----------- -------------------------------------

1.5.5 관리 컬럼 (Audit Column)[편집]

  1. 데이터의 입력/수정에 대한 이력을 남기기 위한 용도로 사용하기 위해 모든 테이블에 관리 컬럼을 둔다.
  2. 모든 테이블의 가장 아래에 관리 컬럼을 위치시키며, 공통에서 제공하는 Function을 사용해서 데이터를 입력한다.
-------------- ------------- ------------ ------------- ------------------------
속성명          컬럼명         도메인명    데이터타입    설명
-------------- ------------- ------------ ------------- ------------------------
등록사용자ID    REG_USR_ID     사용자ID    VARCHAR(50)   Insert 시점의 사용자ID를 입력함.
                                                         화면 입력 데이터 : 로그인 사용자의 계정ID
                                                         배치 입력 데이터 : 배치프로그램ID
등록일시        REG_DTM         일시       DATE          Insert시점의 시스템 일시
수정사용자ID    MOD_USR_ID    사용자ID     VARCHAR(50)   Insert/Update 시점의 사용자ID를 입력함.
                                                         화면 입력 데이터 : 로그인 사용자의 계정ID
                                                         배치 입력 데이터 : 배치프로그램ID
수정일시        MOD_DTM         일시       DATE          Insert/Update 시점의 시스템 일시

1.5.6 테이블 작성 예시 (1/2)[편집]

  1. Table Name
    1. 엔티티명에 대응하여 테이블 명명 규칙에 맞추어 1:1로 변환
  2. Column Name
    1. 속성명을 구성하는 표준단어의 영문명과 “_”로 조합하여 구성
      (예) 매장코드▶STR_CD, 영업시작시분▶SLBIZ_STRT_HHMM
  3. Domain
    1. 컬럼과 도메인을 매핑
      (예) SLBIZ_STRT_HHMM ▶ 시분
    2. 숫자형, 일시형 관리컬럼 등에 대해 필수 입력
      (예) 매출금액 ▶ 숫자0
  4. Not null
    1. PK, 관리컬럼에 대해 필수 입력
  5. 테이블 작성 예시 (2/2)
    1. Not null 설정 예시

- REG_DTM(등록일시)에 대해 Not null 설정

    1. Default 설정 예시

- Default Value 등록 후 REG_DTM(등록일시)에 적용