프로그램 아키텍쳐/소프트웨어공학

개요 - 데이터의 코드화

본클라쓰 2010. 6. 17. 11:02

 

코드는 대량의 자료를 구별, 동질의 그룹으로 분류하고, 순번으로 나열하며, 특정 자료를 선별, 수량 파악, 간결한 표현 등을 용이하게 하는데 필요하다. 즉, '코드는 데이터를 사용 목적에 따라 식별, 분류, 배열하기 위해 사용되는 숫자, 문자 또는 기호이다'라고 정의할 수 있다.

 

코드의 기능은 표준화, 간소화, 식별, 분류, 배열, 연상, 암호화, 오류 검출 기능 등과 같은 부가적인 기능이 있다. 이 중에서 식별, 분류, 배열 기능을 코드의 3대 기능이라고 한다.

 

 · 표준화 - 코드 대상이 되는 데이터를 표준화하는 기능

 · 간소화 - 데이터를 코드화 함으로써 짧고, 간결하고 명료화하는 것

 · 식별 - 각각의 데이터를 상대에 따라 구별하는 기능으로, 식별 기능을 유지하기 위해서는 1개의 코드와 1개의 데이터가 1대 1로 대응해야 한다.

 · 분류 - 코드 대상이 되는 동일 특성을 가진 데이터를 그룹화 하는 기능

 · 배열 - 데이터를 나열하는 것을 어떤 의미를 주어 결정하는 기능

 · 연상 - 코드에 대한 해독을 쉽게 하는 것으로 코드를 보는 순간 그 코드의 대상을 연상할 수 있도록 하는 기능

 · 암호화 - 데이터를 코드화 함으로써 그 대상이 무엇인지 알지 못하게 하는 기능

 · 오류검출 - 코드 자체에서 오류를 찾게 하는 기능

 

 

 

코드의 구분

 

코드는 사용되는 숫자나 문자 또는 기호를 조합하는 방법에 따라 종류를 구분한다.

 

 

순서 코드(Sequence Code)

 

순서 코드는 코드화 대상 항목을 자료의 발생 순서, 크기 순서, 가나다라 순서 등과 같이 어떤 일정한 기준에 따라 일련 번호를 부여하는 가장 간단한 코드 분류 방법이다.

 

ex)

홍길동 .... 0001

박길동 .... 0002

김길동 .... 0003

 

순서 코드는 단순하고 이해하기 쉬우며, 코드화가 용이하다. 또한, 코드의 추가와 기억이 매우 용이하며, 적은 자릿수로 표현이 가능하다. 항목 수가 비교적 적고, 장기간 불변인 경우에 적합하다.

 

하지만 코드 대상 항목이 많은 경우, 항목에 공통성이 없어 분류 조작에 부적합하며, 코드 사이에 새로운 자료 삽입이 불가능하다. 분류 체계가 아니므로 그룹별 정리에 부적합하다.

 

 

완전 순서 코드(Complete Sequence Code)

 

완전 순서 코드는 순서 번호에 일정한 여유를 두어 새로운 자료가 발생하면 중간에 삽입할 수 있는 코드 체계를 갖는 방법이다.

 

ex)

서울 특별시 .... 01

부산 광역시 .... 02

 

경기도 .... 11

강원도 .... 12

 

완전 순서 코드는 순차 코드의 결합을 보완한 코드이다. 실수로 누락한 경우 여분의 코드가 있어 사용할 수 있다. 하지만, 여분의 코드를 여유 있게 둘 경우 혼돈 가능성이 있다.

 

 

블록 코드(Block Code)

 

블록 코드는 분류의 효과를 두드러지게 한 코드로서 몇 개의 블록으로 나누어 각 블록 내에서 순서대로 번호를 부여하는 방식이다.

 

ex)

강남옥 .... 02-01

강은화 .... 02-02

 

김승용 .... 99-01

박병규 .... 99-02

 

블록 코드는 적은 자릿수로 많은 항목을 표시할 수 있다. 예비 코드를 사용할 수 있어 항목의 추가가 용이하며, 공통된 특성별로 분류 및 집계가 용이하다.

 

하지만, 구분마다 예비 코드가 있어 처리가 복잡하며, 코드가 낭비된다. 자릿수 및 그룹수가 증가하면 프로그램이 복잡하다.

 

 

십진 분류 코드(Decimal Classification Code)

 

십진 분류 코드는 코드화 대상 항목을 10진법에 따라 분류한 것으로 각각을 다시 10진법으로 중분휴하며, 필요에 따라 계속 10진법으로 소분류하는 방법으로 주로 도서 분류에 사용된다.

 

ex)

총류 .... 000

철학 .... 100

역사 .... 200

공학 .... 400

컴퓨터 .... 410

엑셀 .... 4121

 

십진 분류 코드는 대량의 자료를 삽입 및 추가가 용이하며, 코드의 범위를 무한대로 확장 가능하며, 배열이나 집계가 용이하다. 하지만, 자릿수가 많을 경우 사용이 불편하며, 자릿수 길이를 결정하기 어렵고, 기계 처리가 불편하다.

 

 

그룹 분류 코드(Group Classification Code)

 

그룹 분류 코드는 블록 코드를 세분화한 것으로 코드화 대상 항목을 대분류, 중분류, 소분류 등으로 구분하여 각 그룹 내에서 순서대로 번호를 부여하는 분류 방법이다.

 

대분류, 중분류, 소분류로 구분한 방식으로

ex)

111 .... 총무부 인사과 행정계

112 .... 총무부 인사과 기획계

121 .... 총무부 경리과 경리계

 

그룹 분류 코드는 자료 항목 구성의 분류 기능이 우수하다. 융통성이 있어 자료의 추가가 용이하며, 대량의 자료를 처리하기에 적합하다. 기계 처리에 가장 적합한 코드 체계이다.

 

하지만 항목의 수에 비하여 자릿수를 많이 차지하고, 전산 처리에 있어서 코드 낭비가 심하다.

 

 

표의 숫자 코드(Signigicant Digit Code)

 

표의 숫자 코드는 코드화 대상 항목에 관련된 중량, 면적, 용량, 거리, 부피, 성능 등의 구체적인 수치를 직접 코드에 적용시키는 방법이다.

 

ex)

1220 .... 20W 전구

1260 .... 60W 전구

1317 .... 17인치 TV

 

표의 숫자 코드는 코드에 물리적 수치를 부여하여 기억이 용이하며, 같은 코드를 재사용하므로 오류가 적다. 코드 작성이 간단하며, 추가 및 삭제가 용이하다.

 

하지만 항목의 자릿수가 길어 분류가 어렵고, 기계 처리가 어렵다.

 

 

연상 코드(Final Digit Code)

 

연상 코드는 코드 값을 보면 어떤 대상을 의미하는지를 연상할 수 있도록 대상의 의미가 코드에 그대로 부여하여 작성한 코드를 말한다.

 

ex)

KOR .... 한국

JPN .... 일본

USA .... 미구

 

연산 코드는 코드만 보면 대상을 쉽게 알 수 있으며, 코드 작성이 간단하고, 자료의 추가가 용이하다.

 

하지만 자릿수가 길어 분류 및 기계 처리가 어렵고, 항목간에 공통성이 결여된다.

 

 

합성 코드(Combined Code)

 

합성 코드는 두 개 이상의 코드를 조합하여 만든 코드로서 다른 코드의 결점을 보완한 코드이다.

 

ex)

KAL-737 .... 대한항공 737기

JAL-131 : 일본항목 131기

 

합성코드는 코드의 표현에 융통성이 있으며, 각종 코드의 결점을 보완할 수 있다.

 

하지만 코드의 자릿수가 많아져 기계 처리가 어렵다.

 

 

특정 자릿수 코드(Final Digit Code)

 

특정 자릿수 코드는 코드의 끝자리 수에 의미를 부여하여 한 자리를 추가해서 항목을 분류할 수 있는 코드이다.

 

ex)

홍길동 .... 0011

박길자 .... 0022

한혜숙 .... 0032

 

남성 : 1, 여성 : 2

 

특정 자릿수 코드는 분류의 기능을 보완한 코드이다. 특정 자릿수 코드의 단점은 독립적으로 사용이 불가능한 코드이다.

 

 

약자식 코드(Letter Type Code)

 

약자식 코드는 영문자 시프트에 의해 표시되는 영문자나 명사 등의 코드화 종류의 일종으로서 습관적이나 관습상 사용하는 약호 등을 그대로 통상 거래 단위나 도량형 단위 등으로 코드화한 분류 방법이다.

 

ex)

킬로그램 .... KG

온스 .... OZ

야드 .... YD

 

약자식 코드는 코드만 보면 내용 파악이 용이하며, 코드 작성이 간단 명료하다. 약자식 코드의 단점은 공통 특징이 없어 분류가 어렵고, 기계 처리에 불편한다.

 

 

영숫자 대조 코드(Numerical Alphabetic Code)

 

영숫자 대조 코드는 코드화 대상을 일정한 방식에 따라 1개의 문자를 2자리 수로 대응시켜 나타낸 코드로서 숫자식 문자 코드라고도 한다.

 

ex)

A .... 01

B .... 02

...

Z .... 26

 

영숫자 대조 코드의 장점은 알파멧순이나 가나다라순으로 표시할 수 있으므로 색인이 용이하며, 큼 분류를 요하는 코드에 적합하다. 하지만 응용 분야가 한정적이고, 자릿수가 많아지기 쉽다.