상기의 목적을 달성하기 위하여, 본 발명에 의한 컴퓨터를 기반으로 한 데이터 무결성 관리장치는 업무 데이터베이스의 업무적 논리 구조를 테이블간의 관계, 비정규화 컬럼, 컬럼 형식 및 경계값, 업무적인 연계성, 시스템간 연계성으로 구분하여 분석하고 논리에 위배되는 데이터를 추출해주는 데이터논리분석기; 및 추출된 오류 데이터를 업무적 논리 구조에 따라 보정해주는 오류데이터보정기;를 포함하여 구성된다.
상기 데이터 무결성 관리장치는 추출된 오류 데이터에 근거하여 각종 통계자료를 제공하는 데이터품질분석기;를 더 포함함을 특징으로 한다.
상기 데이터 무결성 관리장치에 있어서, 상기 데이터논리분석기는 업무 데이터베이스로부터 자료사전을 읽어, 데이터베이스의 구조 분석에 필요한 형태로 가공하여 논리분석정보 데이터베이스에 저장하는 데이터논리스캐너; 업무 데이터베이스의 테이블/컬럼 명명 원칙 및 업무적인 관계를 고려하여 업무 데이터베이스의 업무적 논리 구조별로 논리분석정보 데이터베이스에 저장된 논리분석 정보를 보정하는 데이터논리보정기; 및 보정된 논리분석 정보를 이용해 오류 데이터를 추출할 수 있는 오류 데이터 추출 스크립트를 생성하여 업무 데이터베이스에서 오류 데이터를 추출하는 오류데이터추출처리기;를 구비하고, 상기 오류데이터보정기는 업무 데이터베이스의 업무적 논리 구조별로 추출된 오류데이터를 사용자에게 제공하여 오류데이터 보정 정보를 입력받는 오류데이터보정정보관리기; 및 오류 데이터의 보정 정보에 근거하여 데이터 보정 스크립트를 생성하여 업무 데이터베이스의 오류 데이터를 보정하는 오류데이터보정처리기;를 구비함을 특징으로 한다.
상기의 다른 목적을 달성하기 위하여, 본 발명에 의한 컴퓨터를 사용한 데이터 무결성 관리방법은 (a) 업무 데이터베이스의 업무적 논리 구조를 테이블간의 관계, 비정규화 컬럼, 컬럼 형식 및 경계값 및 업무적인 연계성으로 구분하여 분석하고 논리에 위배되는 데이터를 추출하는 단계; 및 (b) 추출된 오류 데이터를 업무적 논리 구조에 따라 보정하는 단계;를 포함하여 구성된다.
상기 컴퓨터를 사용한 데이터 무결성 관리방법에 있어서, 상기 (a) 단계는 (a1) 업무 데이터베이스로부터 자료사전을 읽어, 데이터베이스의 구조 분석에 필요한 형태로 가공하여 논리분석정보 데이터베이스에 저장하는 단계; (a2) 업무 데이터베이스의 테이블/컬럼 명명 원칙 및 업무적인 관계를 고려하여 업무 데이터베이스의 업무적 논리 구조별로 논리분석정보 데이터베이스에 저장된 논리분석 정보를 보정하는 단계; 및 (a3) 보정된 논리분석 정보를 이용해 오류 데이터를 추출할 수 있는 오류 데이터 추출 스크립트를 생성하여 업무 데이터베이스에서 오류 데이터를 추출하는 단계;를 구비하고, 상기 (b) 단계는 (b1) 업무 데이터베이스의 업무적 논리 구조별로 추출된 오류데이터를 사용자에게 제공하여 오류데이터 보정 정보를 입력받는 단계; 및 (b2) 오류 데이터의 보정 정보에 근거하여 데이터 보정 스크립트를 생성하여 업무 데이터베이스의 오류 데이터를 보정하는 단계;를 구비함을 특징으로 한다.
상기 컴퓨터를 사용한 데이터 무결성 관리방법에 있어서, 상기 (a2) 단계는 업무 데이터베이스의 업무적 논리 구조가 테이블간의 관계인 경우, 사용자로부터 테이블 관계 식별 기준을 등록받고, 논리분석정보 데이터베이스에서 업무 데이터베이스의 물리적/업무적 관계 정보를 읽어 테이블 관계 트리를 생성하는 단계를 구비함을 특징으로 한다.
상기 컴퓨터를 사용한 데이터 무결성 관리방법에 있어서, 상기 (a2) 단계는 업무 데이터베이스의 업무적 논리 구조가 비정규화 컬럼인 경우, 사용자로부터 비정규화 식별 기준을 등록받고, 논리분석정보 데이터베이스에서 업무 데이터베이스의 비정규화 정보를 읽어 비정규화 트리를 생성하는 단계를 구비함을 특징으로 한다.
상기 컴퓨터를 사용한 데이터 무결성 관리방법에 있어서, 상기 (a2) 단계는 업무 데이터베이스의 업무적 논리 구조가 컬럼 형식 및 경계값인 경우, 사용자로부터 컬럼 형식/경계값 추출 기준을 등록받아 그 기준에 근거하여 컬럼을 추출하고 추출된 컬럼에 대하여 컬럼형식/경계값을 보정하는 단계를 구비함을 특징으로 한다.
상기 컴퓨터를 사용한 데이터 무결성 관리방법에 있어서, 상기 (a2) 단계는 업무 데이터베이스의 업무적 논리 구조가 업무적인 연계성인 경우, 사용자로부터 업무적 연계성 관련 항목 추출 기준을 등록받아 통합 업무흐름을 정의하고, 통합업무연관트리를 통합하고, 업무에 의한 데이터 흐름을 분석하고, 업무 연계 관련 컬럼을 식별하고, 컬럼간 업무 연계를 파악하고, 업무적 연계 컬럼간 연산을 정의하는 단계를 구비함을 특징으로 한다.
상기 컴퓨터를 사용한 데이터 무결성 관리방법에 있어서, 상기 (a2) 단계는 업무 데이터베이스의 업무적 논리 구조가 시스템간 연계성인 경우, 타 업무적 논리 구조에 따른 논리 분석 과정과 논리 보정 과정 사이에 시스템간 연계 테이블을 분석하고, 연계 항목별 내역을 정의하는 단계를 구비함을 특징으로 한다.
상기 또 다른 목적을 달성하기 위하여, 본 발명에 의한 컴퓨터가 읽을 수 있는 기록매체에는 상기 데이터 무결성 관리방법을 컴퓨터 상에서 실행하는 프로그램을 기록한다.
이하에서 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 1에 의하면, 본 발명에 의한 데이터 무결성 관리장치(1)는 데이터베이스의 업무적 논리를 분석하고 논리에 위배되는 데이터를 추출해주는 데이터논리분석기(10), 추출된 오류 데이터를 보정해주는 오류데이터보정기(20), 추출된 오류 데이터에 근거하여 각종 통계자료를 제공하는 데이터품질분석기(30)를 포함하여 구성된다. 이와 같은 데이터 무결성 관리장치(1)의 각 구성요소는 프로세서, 기억장치 및 입출력장치를 갖춘 범용 컴퓨터(도시되지 않음) 상에서 수행되는 소프트웨어에 의해 구현되고, 본 발명은 범용 컴퓨터를 구성하는 하드웨어의 특이성에 의해 의해 특징지어지는 것이 아니라 그 하드웨어 상에서 동작되는 소프트웨어의 특이성에 의해 특징지어지는 것이므로, 이하에서는 각 구성요소에서 처리되어지는 기능 및 절차를 중심으로 설명하기로 한다.
데이터논리분석기(10)는 데이터논리스캐너(12), 데이터논리보정기(14) 및 오류데이터추출처리기(16)를 구비한다. 데이터논리스캐너(12)는 업무 데이터베이스(52)로부터 자료사전을 읽어, 데이터베이스의 구조 분석에 필요한 형태로 가공하여 논리분석정보 데이터베이스(54)에 저장한다. 데이터논리보정기(14)는 논리분석정보 데이터베이스(54)에 저장된 논리분석 정보를 읽어 사용자가 해당 업무 데이터베이스의 테이블/컬럼 명명 원칙 및 업무적인 관계를 고려한 보정 작업을 수행할 수 있도록 지원한다. 데이터논리보정기(10)는 업무 데이터베이스(52)의 보정 대상 논리 구조에 따라 수행되는 기능이 달라지는데, 이에 따라 도 1a에 도시된 바와 같이 관계보정기(141), 비정규화보정기(142), 컬럼형식/경계값보정기(143), 업무적연계성보정기(144) 및 시스템간연계성보정기(145)로 세분화된다. 오류데이터추출처리기(16)는 보정된 논리분석 정보를 이용해 오류 데이터를 추출할 수 있는 오류 데이터 추출 스크립트를 생성하여 업무 데이터베이스(52)에서 오류 데이터를 추출하여 오류데이터관리 데이터베이스(56)에 저장한다.
오류데이터보정기(20)는 오류데이터보정정보관리기(22) 및 오류데이터보정처리기(24)를 구비한다. 오류데이터보정정보관리기(22)는 오류데이터관리 데이터베이스(56)에 저장된 오류데이터를 사용자에게 제공하여 보정 정보를 입력받는다. 오류데이터보정정보관리기(22)는 오류 형태에 따라 수행되는 기능이 달라지는데, 도 1b에 도시된 바와 같이 관계오류보정정보관리기(221), 비정규화오류보정정보관리기(222), 컬럼형식/경계값오류보정정보관리기(223), 업무적연계성오류보정정보관리기(224)로 세분화되며, 시스템간 연계성 오류 데이터는 그 오류 형태에 따라 오류데이터보정정보관리기(22) 내의 해당 구성요소에 의해 처리된다. 오류데이터보정처리기(24)는 오류 데이터의 보정 정보에 근거하여 데이터 보정 스크립트를 생성하여 업무 데이터베이스(52)의 오류 데이터를 보정한다.
데이터품질분석기(30)는 추출된 오류 데이터를 근거로 오류 데이터 보고서, 테이블별 오류 통계, 유형별 오류 통계, 시스템별 오류 통계, 오류 증감 추이 등과 같은 데이터 품질 정보를 제공한다.
이하에서는 본 발명에 의한 데이터 무결성 관리장치(1)를 이용하여 오류 데이터를 추출하여 보정하는 과정에 대하여 살펴보기로 한다.
도 2에 의하면, 사용자가 데이터 무결성 관리장치(1)를 이용하여 가장 먼저 하는 작업은 데이터논리스캐너(12)를 이용하여 업무 데이터베이스(52)의 자료사전을 읽어 데이터베이스 구조 분석에 필요한 형태로 가공하여 논리분석정보 데이터베이스(54)에 저장하는 것이다(S100). 이 작업이 완료된 후 데이터베이스의 논리 구조별로 논리보정을 하고 오류 데이터를 추출하여 보정하는 과정들(S200, S300, S400, S500)이 진행된다.
도 3은 데이터논리스캐너(12)가 자료사전의 분석 정보를 저장하는 논리분석정보 데이터베이스(54)의 테이블 구조를 나타내는 객체관계도(Entity Relationship Diagram : 이하에서 ERD라 한다)이다. 도 3에 도시된 바와 같이 데이터논리스캐너(12)는 자료사전으로부터 테이블명, 테이블간의 물리적 관계, 테이블별 컬럼 정보를 읽어 논리분석정보 데이터베이스(54)에 저장하게 된다. 도 3에서 PK 및 FK는 각각 기본키(Primary Key)와 참조키(Foreign Key)를 나타낸다.
도 4는 도 3에서의 테이블간 관계 오류 데이터 처리 과정(S200)을 설명하는 흐름도이다.
테이블간의 물리적인 관계는 자료사전을 읽음으로써 이미 식별되었다. 그러나, 관계 오류 데이터를 추출하는데 있어서 중요한 포인트는 물리적인 관계가 정의되지 않은 테이블간의 업무적인 관계를 식별하는 것이다. 따라서, 사용자는 관계보정기(141)를 이용하여 테이블 관계 식별 기준을 등록하는 작업을 한다(S210). 관계 식별 기준을 등록하는 이유는 다음과 같다. 일반적으로 특정 테이블의 기본키(Primary Key)와 관계를 가지는 컬럼은 기본키와 동일한 컬럼명을 가진다. 그러나, 데이터베이스 특성에 따라 업무적 관계가 있는 테이블의 관계 컬럼들 간에는 관계 식별 접두/접미어 부여하는 경우가 있다. 반대로 업무적 관계가 없음에도 불구하고 명칭이 동일한 컬럼들도 존재할 수 있다(예를 들어, 일련번호). 업무적 관계를 식별하는데 있어 이러한 컬럼들을 추가 또는 제거하기 위해 테이블 관계 식별 기준 등록 작업을 하게 된다. 도 5는 관계 식별 기준을 등록하도록 관계보정기(141)가 사용자에게 제공하는 예시적인 화면이다.
사용자가 테이블 관계 식별 기준 등록을 완료하면, 관계보정기(141)는 테이블 관계 트리 생성 작업을 수행한다(S220). 테이블 관계 트리란 테이블간의 관계 종속 구조 상 최상위에 있는 테이블을 기준으로 생성된 트리를 말한다. 테이블 관계 트리를 생성하는 이유는 업무적으로 복잡하게 엮어있는 데이터베이스 구조를 트리 형태로 단순화시키고, 트리 구조 내에서 물리적인 관계가 없고 업무적으로만 관계가 있는 테이블들을 식별하기 위함이다. 도 6은 테이블 관계 트리를 예시적으로 도시한 것이다. 또한, 도 7은 테이블 관계 트리를 관리하기 위한 테이블 구조로서, 도 3에 도시된 논리분석정보 데이터베이스(54)의 테이블 구조 내에 구현된다.
테이블 관계 트리를 생성하기 위한 알고리듬을 다음과 같다.
Step 1 : 논리분석정보 데이터베이스(54)로부터 모든 물리적 PK/FK 관계 및 관련 컬럼 획득.
Step 2 : 획득된 컬럼과 명칭이 동일하거나 유사한 컬럼으로 참조키(Foreign Key) 정의가 되어 있지 않은 테이블 획득.
Step 3 : 동일 항목에 대해서는 기본키(Primary Key)를 가지는 테이블, 기본키를 가지는 테이블간에는 최소 기본키 컬럼순으로 테이블을 정렬하여 테이블 관계 트리 생성.
Step 4 : 더 이상의 하위 기본키가 없거나, 참조키가 연결되면 해당 하위 노드에서 종료.
도 8a 내지 도 8f는 이상의 알고리듬에 근거하여 테이블 관계 트리를 생성하는 예시적인 순서도를 도시한 것이다.
테이블 관계 트리 생성 작업이 완료되면 사용자는 관계보정기(141)를 이용하여 테이블 관계 트리 보정작업을 실시하게 된다(S230). 이 작업을 하는 이유는 관계 트리 식별 시 물리적 관계는 없고 업무적 관계만 가지는 테이블들을 식별하기 위한 동일/유사/제외 컬럼을 정의하여 트리분석을 실시하기는 하지만 예외적인 업무적 관계가 발생할 수 있어 이러한 부분을 보정하기 위한 작업이다. 도 9는 관계 트리 보정을 위해 관계보정기(141)가 사용자에게 제공하는 예시적인 화면이다.
관계 트리의 보정이 완료되면, 오류데이터추출처리기(16)는 관계 오류 데이터 추출 스크립트 생성 및 보정 작업을 수행한다(S240). 관계 오류 데이터를 추출하기 위한 정보는 테이블별 관계 테이블 및 관계별 컬럼 테이블에서 관리되는 정보를 통해 생성될 수 있다. 이때 생성되는 관계 오류 데이터 추출 스크립트는 업무적 관계를 가지는 테이블(즉, 테이블별 관계 테이블의 물리적 FK 존재 여부 컬럼의 값이 2인 정보)에 대해서만 생성된다. 도 10은 테이블별 관계 및 관계별 컬럼의 정보를 이용해 생성된 관계 오류 데이터 추출 스크립트의 일부를 나타낸다.
이후, 오류데이터추출처리기(16)는 관계 오류 데이터 추출 스크립트를 이용하여 업무 데이터베이스로(52)부터 관계 오류 데이터를 추출하여 오류데이터관리 데이터베이스(56)에 저장한다(S250).
도 11은 오류데이터관리 데이터베이스(56)에서 오류 데이터를 관리하기 위한 테이블 구조를 도시한 것이다. 도 11의 테이블 구조에서 테이블간의 관계가 1:N 관계에서는 1이 부모 테이블이고 N이 자식 테이블이며, 1:1 관계에서는 두 테이블 중 어느 테이블이 부모 테이블 및 자식 테이블이 되더라도 무방하다.
데이터논리분석기(10)에 의해 관계 오류 데이터가 추출되었으면, 오류데이터보정기(20)는 관계 오류 보정 작업을 실시한다. 관계 오류 데이터에 대한 보정은 도 12에 도시된 바와 같이 부모 테이블을 기준으로 하여 자식 테이블을 보정하는 경우(CASE 1)와 자식 테이블을 기준으로 하여 부모 테이블을 보정하는 경우(CASE 2)가 있다. 도 12에서 알 수 있는 것처럼, 두 관계 테이블 중 어느 쪽에 관계 정보를 가지는가를 고려해 각 케이스별로 다시 나누어져 총 네 가지의 보정 유형이 나타난다. 즉, 자료가 존재하는 테이블을 근거해 상대편 관계 정보를 생성해 주는 접근, 자료가 없는 테이블에 근거해 상대편 관계 정보를 제거하는 접근이다. 그래서, 관계 데이터를 생성해야 하는 경우는 논리분석정보 DB(54)로부터 생성대상 테이블의 기본 논리정보를 읽어 데이터를 생성하는 스크립트를 만들며, 관계 데이터를 제거해야 하는 경우는 데이터 제거 스크립트를 생성하고, 사용자 실수의 상황을 대비해 삭제 정보는 백업을 받는다.
먼저, 관계오류보정정보관리기(221)는 도 13에 예시적으로 도시된 바와 같은 관계 오류 데이터 보정 정보 입력 화면을 사용자에게 제시하여 필요한 정보를 입력받는다(S260). 즉, 사용자는 관계 오류 데이터 보정 정보 입력 화면에서 각 오류 데이터에 대해 오류 원인을 분석하여, 각 데이터별로 기준여부 항목을 체크함으로써 기준이 되는 테이블을 선정하게 된다. 기준 테이블에 값이 없으면 상대 테이블의 레코드는 삭제로 정의된다. 기준 테이블에 값이 있으면 상대 테이블에 레코드를 생성해야 한다. 상대 테이블에 레코드를 생성할 경우, 관계오류보정정보관리기(221)는 관계 키 정보 및 비정규화 정보를 논리분석정보 데이터베이스(54)에서 읽어 자동 지정할 수 있다. 그리고, 사용자가 업무적 연계성 컬럼을 지정하면, 논리분석정보 데이터베이스(54)의 업무 연계 정보를 이용해 정합성 체크를 한다. 논리분석정보 데이터베이스(54) 내에서 관리되지 않는 컬럼에 대한 값은 사용자가 지정한 상태로 입력된다. 도 13에 도시된 바와 같은 화면을 통하여 테이블간의 관계 오류 보정 정보가 입력되면 관계오류보정정보관리기(221)는 이를 오류데이터관리 데이터베이스(56)에 저장한다.
이후, 오류데이터보정처리기(24)는 오류데이터관리 데이터베이스(56)에 저장된 관계 오류 보정 정보를 이용하여 관계 오류 데이터 보정 스크립트를 생성/보정하고(S270), 생성/보정된 관계 오류 데이터 보정 스크립트를 수행하여 업무 데이터베이스(52)의 관계 오류 데이터를 보정한다(S280).
도 14는 도 3에서의 비정규화 오류 데이터 처리 과정(S300)을 설명하는 흐름도이다.
먼저, 비정규화보정기(142)는 사용자로부터 비정규화 식별 기준을 등록받는다(S310). 비정규화 식별 기준을 등록하는 이유는 다음과 같다. 일반적으로 기본키(Primary Key)로 정의되지 않은 컬럼 중 여러 테이블에 동일한 이름으로 존재하는 컬럼을 비정규화된 컬럼으로 식별한다. 그러나, 데이터베이스의 특성에 따라 업무적으로 비정규화된 컬럼에 대한 비정규화 식별 접두/접미어를 부여하는 경우가 있다. 반대로 업무적 관계가 없음에도 불구하고 명칭이 동일한 컬럼들도 존재할 수 있다(예를 들어, 일련번호, 입력일자, 입력자 사번 등). 비정규화 컬럼을 식별하는데 있어 이러한 컬럼들을 추가 또는 제거하기 위해 비정규화 식별 기준 등록 작업을 하게 된다. 비정규화 식별 기준을 등록하는 화면은 도 5에 도시된 관계 식별 기준을 등록하는 화면과 같다.
사용자가 비정규화 식별 기준을 등록하면, 비정규화보정기(142)는 비정규화 트리 생성 작업을 수행한다(S320). 비정규화 트리란 테이블 간의 관계 종속 구조 상 최상위에 있는 테이블을 기준으로 생성된 트리를 말한다. 비정규화 트리를 생성하는 이유는 업무적으로 비정규화 컬럼에 대한 부모 테이블(비정규화 컬럼을 제공하는 테이블)과 자식 테이블(비정규화 컬럼을 제공받는 테이블)간의 관계를 식별하기 위한 것이다.
도 15는 비정규화보정기(142)에 의해 생성되는 비정규화 트리의 구조를 도시한 것이다. 도 15에 의하면, 비정규화 트리는 테이블 관계 트리와는 다르게 비정규화 컬럼을 제공하는 테이블(부모 테이블)과 비정규화 컬럼을 제공받는 테이블(자식 테이블)간의 관계로만 정의되고, 트리 레벨이 2레벨 이상 나올 수 없다. 그 이유는 비정규화 오류 데이터 처리과정이 부모 테이블과 자식 테이블간의 비정규화 컬럼값의 일치성을 검토하는 것이기 때문이다. 도 16은 비정규화 트리를 관리하기 위한 테이블 구조이다.
비정규화 트리를 생성하기 위한 알고리듬을 다음과 같다.
Step 1 : 기본키(Primary Key)가 아닌 상태로 2개의 테이블 이상에서 존재하는 컬럼 및 관련 테이블 추출.
Step 2 : 검증 대상 컬럼이 소속된 테이블의 관계가 기본키간의 상속 관계일 경우는 기본키 항목이 제일 적은 테이블이 부모 테이블이 됨.
Step 3 : 검증 대상 컬럼이 소속된 테이블의 기본키가 아닌 다른 테이블의 순수 참조키(Foreign Key) 관계(기본키 상속관계가 아님을 의미)로 정의될 때는 참조키 항목을 제공한 테이블이 부모 테이블이 됨.
Step 4 : 위 2가지 조건으로 검증대상 테이블의 관계에 대한 순차분석을 실시하여 부모 테이블 도출.
Step 5 : 부모 테이블에 관련 자식 테이블 연결.
도 17a 및 도 17b는 이상의 알고리듬에 근거하여 비정규화 트리를 생성하는 예시적인 순서도를 도시한 것이다.
비정규화 트리 생성 작업이 완료되면 사용자는 비정규화보정기(142)를 이용하여 비정규화 트리 보정작업을 실시하게 된다(S330). 이 작업을 하는 이유는 비정규화 트리 식별 시 비정규화 항목을 식별하기 위해 동일/유사/제외 컬럼을 정의하여 트리분석을 실시하기는 하지만 예외적인 비정규화 항목이 발생하거나 비정규화 항목이 아닌 항목이 존재할 수 있어 이러한 부분을 보정하기 위한 작업이다.
도 18은 비정규화 트리 보정을 위해 비정규화보정기(142)가 사용자에게 제공하는 예시적인 화면이다. 도 18에서 알 수 있듯이 비정규화 트리 보정 시 이력 관계인가를 마킹해 주는데, 그 이유는 이력관계는 업무 데이터베이스(52)의 자료사전을 통해 파악할 수 없으므로 사용자가 정의하는 것이다.
비정규화 트리의 보정이 완료되면, 오류데이터추출처리기(16)는 비정규화 오류 데이터 추출 스크립트 생성 및 보정 작업을 한다(S340). 비정규화 오류 데이터를 추출하기 위한 정보 중 비정규화 항목(select 항목) 및 비정규화 관계 정보(from 절)는 비정규화 제공 테이블과 비정규화 대상 테이블에서 얻을 수 있고, 관계에 대한 구체적인 조건(where 절) 정보는 테이블 관계 및 관계별 컬럼에서 얻을 수 있다. 이때 생성되는 비정규화 오류 데이터 추출 스크립트는 비정규화 대상 테이블의 비정규화 유형의 값에 의해 달라진다. 도 19는 비정규화 오류 데이터 추출 스크립트의 일부를 나타낸다.
이후, 오류데이터추출처리기(16)는 비정규화 오류 데이터 추출 스크립트를 이용해 업무 데이터베이스(52)로부터 비정규화 오류 데이터 추출하여 오류데이터관리 데이터베이스(56)에 저장한다(S360).
도 20은 오류데이터관리 데이터베이스(56)에서 오류 데이터를 관리하기 위한 테이블 구조를 도시한 것이다. 도 20의 테이블 구조에서 부모 테이블은 비정규화 제공 테이블이고, 자식 테이블은 비정규화 대상 테이블이 된다.
데이터논리분석기(10)에 의해 비정규화 오류 데이터가 추출되었으면, 오류데이터보정기(20)는 비정규화 오류 보정 작업을 실시한다. 비정규화 오류 데이터에 대한 보정은 비정규화 보정을 위한 기준이 되는 컬럼을 선정하고, 선정된 기준 컬럼 값에 근거하여 나머지 테이블의 비정규화 컬럼값에 대한 일치화 작업을 하게 된다.
도 21에서는, 비정규화 컬럼 간 정보 일치를 위한 기준 컬럼을 자식 테이블에서 선정했다. 그러나, 일반적으로는 원시 정보를 부모 테이블의 컬럼이 가지고 있는 경우가 대부분이므로, 부모 테이블의 컬럼이 비정규화 기준 컬럼으로 선정될 가능성이 매우 높다. 그러나, 예외적인 상황을 고려하여 자식 테이블의 컬럼이 선정되더라도 비정규화 값의 일관화가 가능하도록 하였다.
비정규화오류보정정보관리기(222)는 도 22에 예시적으로 도시된 바와 같은 비정규화 오류 데이터 보정 정보 입력 화면을 사용자에게 제시하여 필요한 정보를 입력받는다(S360). 도 22에서 부모 테이블에서 정의한 항목(K_1, K_X, K_Y)은 부모 테이블의 기본키(Primary Key)이다. 그 이유는 자식 테이블이 부모테이블의 기본키와 연결되어 있으며, 관련 정보의 변경은 부모 테이블의 기본키 값을 가지는 자식 테이블 관련 데이터의 비정규화 항목 값이 변경대상 항목 값이 되기 때문이다. 도 22에 도시된 비정규화 오류 데이터 보정 정보 입력 화면에서 사용자는 각 오류 데이터에 대해 오류 원인을 분석하여, 각 데이터별로 기준 테이블을 체크함으로써 기준이 되는 테이블을 선정하게 되고, 기준의 되는 컬럼값에 의해 일괄적인 변경을 수행하게 된다. 도 22에 도시된 바와 같은 화면을 통하여 비정규화 오류 데이터 보정 정보가 입력되면 비정규화오류보정정보관리기(222)는 이를 오류데이터관리 데이터베이스(56)에 저장한다.
이후, 오류데이터보정처리기(24)는 오류데이터관리 데이터베이스(56)에 저장된 비정규화 오류 보정 정보를 이용하여 비정규화 오류 데이터 보정 스크립트를 생성/보정하고(S370), 생성/보정된 비정규화 오류 데이터 보정 스크립트를 수행하여 업무 데이터베이스(52)의 비정규화 오류 데이터를 보정한다(S380).
도 23은 도 3에서의 컬럼형식/경계값 오류 데이터 처리 과정(S400)을 설명하는 흐름도이다.
먼저, 컬럼형식/경계값보정기(143)는 사용자로부터 컬럼 형식 및 경계값 추출 기준을 등록받는다(S410). 컬럼 형식 및 경계값 추출 기준을 등록하는 이유는 다음과 같다. 모든 컬럼은 다 형식을 가지지만 <Date>나 <number> 형식처럼 컬럼의 형식 자체가 입력 데이터의 제약 조건이 되는 경우에는 컬럼 형식을 위배하는 오류 데이터가 존재할 수 없다. 그리고, 일정한 형식이 없는 <Text> 컬럼의 경우는 컬럼 형식의 논리성을 규정할 수 없어 컬럼 형식에 위배하는지를 검토하기가 어렵다. 그러나, 주민번호, 사번, 전화번호, 물리적으로 <char> 형식을 사용하는 날짜나 숫자 등은 그 형식에 논리성이 있고, 논리를 위배하는 데이터의 입력이 가능해 검토 대상이 된다. 도 24는 컬럼형식 및 경계값 추출 기준을 등록하도록 컬럼형식/경계값보정기(143)가 사용자에게 제공하는 화면이다.
사용자가 컬럼형식/경계값 추출 기준 등록을 완료하면, 컬럼형식/경계값보정기(143)는 추출 기준에 근거하여 컬럼 추출 작업을 수행한다(S420). 컬럼 추출은 논리분석정보 데이터베이스(54)의 테이블별 컬럼 테이블에서 컬럼과 물리적 TYPE을 읽고, 업무 데이터베이스(52)에서 업무적 형식과 관리정보 유형을 읽음으로써 이루어진다. 날짜, 주민번호, 구분자 등과 같은 컬럼의 경우, 업무적 형식과 관리되는 값의 유형을 식별하기 위해 컬럼형식/경계값보정기(143)가업무 데이터베이스(52)에서 해당 컬럼의 값을 샘플링/그룹핑하여 제공할 수 있다.
도 25에 의하면, 테이블별 컬럼 테이블에 물리적 TYPE 컬럼과 업무적 TYPE 컬럼이 있다. 이러한 항목이 존재하는 이유를 예를 들어 설명하면, 업무적 TYPE이 날짜인 입사일자 컬럼의 물리적 TYPE이 <CHAR>로 존재할 경우, 컬럼 형식의 논리에 위배되는 데이터가 존재할 가능성이 있으므로 이와 같은 컬럼을 관리하기 위한 것이다. 그리고, 컬럼의 경계값을 정의하기 위해 최대값, 최소값을 관리하고 있으며 컬럼이 코드 테이블에 관리되는 코드를 사용할 경우, 코드 테이블에서 정의된 값으로 관리된다면 일반 구분자 테이블에서 관리하기 위한 것이다.
컬럼형식/경계값에 대해 추출이 완료되면 사용자는 컬럼형식/경계값보정기(143)를 이용하여 추출된 컬럼 보정 작업을 실시하게 된다(S430). 도 26은 컬럼형식/경계값보정기(143)가 추출된 컬럼의 보정 작업을 수행하도록 사용자에게 제공하는 예시적인 화면이다. 도 26에 예시적으로 도시된 바와 같은 화면을 통하여 사용자는 컬럼값의 범위(경계값), 업무 형식, 코드 테이블 매핑 및 구분자에 대한 정의를 수행한다.
컬럼형식/경계값 보정이 완료되면, 오류추출기(16)는 컬럼형식/경계값 오류 데이터 추출 스크립트 생성 및 보정 작업을 수행한다(S440). 컬럼형식/경계값 오류 데이터를 추출하기 위한 정보는 테이블별 컬럼, 코드테이블 매핑, 일반 구분자 테이블의 정보를 이용하여 생성될 수 있다. 날짜, 주민번호 등 각 컬럼에 대한 정합성 체크는 컬럼을 체크 할 수 있는 범용성있는 함수를 정의하여 사용할 수 있다. 도 27은 오류추출기(16)에 의해 생성되는 컬럼형식/경계값 오류 데이터 추출 스크립트의 일부를 나타낸다.
이후, 오류데이터추출처리기(16)는 컬럼형식/경계값 오류 데이터 추출 스크립트를 이용해 업무 데이터베이스(52)로부터 컬럼 형식 및 경계값 오류 데이터를 추출하여 오류데이터관리 데이터베이스(56)에 저장한다(S450). 도 28은 오류데이터관리 데이터베이스(56)에서 오류 데이터를 관리하기 위한 테이블 구조를 도시한 것이다.
컬럼형식/경계값오류보정정보관리기(223)는 추출된 오류 데이터에 대하여 컬럼형식 및 경계값 보정 정보 입력 작업을 통해 보정하면(S460), 오류데이터관리기(24)는 보정 정보에 근거하여 컬럼형식/경계값 보정 스크립트를 생성/보정하고(S470), 생성/보정된 컬럼형식/경계값 보정 스크립트를 수행하여 업무 데이터베이스(52)의 컬럼형식 및 경계값 오류 데이터를 보정한다(S480).
도 29는 도 3에서의 업무적 연계성 오류 데이터 처리 과정(S500)을 설명하는 흐름도이다.
먼저, 업무연계성보정기(144)는 사용자로부터 업무적 연계성 관련 항목 추출 기준을 등록받는다(S510). 데이터베이스에는 수많은 컬럼들이 있지만 일반적으로 업무적인 연계에 영향을 미치는 컬럼은 몇 종류의 그룹으로 제한된다. 예를 들면, 구분자, 계산 컬럼, 날짜, 코드 등과 같은 컬럼들이 업무적인 연계에서 주로 사용되는 컬럼들이다. 따라서, 이러한 컬럼들을 주요 관심 대상으로 접근한다면, 좀 더 쉽게 업무적 연계성 관련 컬럼을 식별할 수 있다.
도 30은 업무적 연계성 관련 항목 추출 기준을 등록하도록 업무연계성보정기(144)가 사용자에게 제공하는 예시적인 화면이다.
사용자가 업무적 연계성 관련 항목 추출 기준을 등록하면, 업무연계성보정기(144)는 업무적 연계 분석을 실시한다. 업무적 연계 분석은 통합업무 흐름 정의(S510), 통합업무연관트리 통합(S515), 업무에 의한 데이터 흐름 분석(S520), 업무연계성 관련 컬럼 식별(S525), 컬럼간 업무 연계 파악(S530), 업무적 연계성 컬럼간 연산 정의(S535)의 순으로 이루어진다.
통합업무 흐름 정의단계(S510)에서 실시되는 작업은 해당 업무 데이터베이스(52)와 관련된 통합된 업무의 흐름을 정의하는 작업으로, 개발 시 시험 단계에서 실시되는 통합시험 시나리오 정의와 같은 것으로 해석될 수 있다.
통합업무 흐름 정의가 끝나면, 통합업무연관트리 통합작업(S515)을 해야 하는데, 정의된 통합 업무 흐름과 관련된 테이블 관계 트리를 통합해 주는 작업을 의미한다. 도 31에 도시된 바와 같이, 자식 테이블은 여러 부모 테이블로부터 기본키(Primary Key)를 상속받을 수 있기 때문에 자식 테이블이 여러 테이블 관계 트리에 공존할 수 있다. 업무연계성보정기(144)는 통합 업무 흐름이 시작되어 완성되기까지 필요한 관련 테이블 관계 트리를 식별하고, 테이블 관계 트리 간에 공존된 자식 테이블을 병합함으로써 통합업무 흐름에 따른 전체적인 데이터베이스 구성을 이룰 수 있다.
통합업무 트리통합 작업이 완성되면, 업무에 의한 데이터 흐름 분석 작업(S520)을 실시한다. 업무에 의한 데이터 흐름 분석이란 통합업무가 통합된 트리 내의 테이블간에 어떻게 흘러가는지를 분석하는 작업이다. 도 32는 통합된 트리에 대해 데이터 흐름분석을 실시한 예시적인 도면이다. 도 31에 의하면, 업무흐름선으로 업무의 시작점과 끝나는 점을 지정하여 통합업무가 어떻게 테이블간에 흘러가는 지를 보여주고 있다.
업무에 의한 데이터 흐름 분석작업이 완료되면, S505 단계에서 입력된 업무적 연계성 관련 항목 추출 기준에 근거하여 통합트리 안에 존재하는 테이블들 내에서 업무 연계성 관련 컬럼을 식별하기 위한 업무 연계성 관련 컬럼 식별작업(S525)을 실시한다. 도 33은 도 32의 통합 업무 흐름과 관련된 테이블 중 A, B, C, D 테이블의 업무 연계성 관련 컬럼이 식별된 것을 나타내는 도면이다. 도 33에서 날짜(접두어 DT_), 구분자(GB_), 계산 컬럼(COM_) 등을 컬럼명에 소유한 컬럼들이 업무연계성 관련 항목 추출 기준에 근거하여 선정된 컬럼들이다.
이후, 업무연계성보정기(144)는 식별된 업무 연계성 관련 컬럼이 어떠한 컬럼 및 테이블과 관련을 가지는가를 식별하는 컬럼간 업무 연계성 파악 작업(S530)을 실시한다. 도 34를 살펴보면, 식별된 업무 연계성 관련 컬럼은 주변 컬럼 및 테이블과 3가지 유형의 관계를 가지는 것을 알 수 있다.
첫째, A 테이블의 DT_COL1, DT_COL2 컬럼은 각각 날짜 컬럼(예를 들어, 입사일자 및 퇴사일자)이다. 입사일자는 퇴사일자보다 작아야 하는 것처럼 날짜 컬럼은 상호간에 비교 체크되는 값을 가지는데, 이와 같이 컬럼 간에 비교연산을 유발하는 컬럼을 비교 연산 컬럼이라고 한다.
둘째, B 테이블의 GB_COL은 구분자 컬럼으로서, 예를 들어, "사원 테이블에서 사원 구분이 정규직이면 정규직 사원과 관련된 컬럼 또는 테이블에 값이 정의되어야 하고, 계약직이면 계약직 관련 컬럼과 테이블에 값이 정의되어야 한다"와 같이 다음 처리에 반영될 정보의 기준을 명시하는 컬럼이다. 이와 같이 다음 처리의 근거가 되는 컬럼을 원인 연산 컬럼이라고 한다.
셋째, B 테이블의 COM_COL은 연산 결과를 가지고 있는 컬럼으로, 예를 들어, "급여는 본봉과 수당의 합이다"고 할 때 급여 컬럼과 같은 컬럼이다. 이와 같은 컬럼은 컬럼간의 연산 결과를 소유하고 있는 컬럼이므로 결과 연산 컬럼이라고 한다.
데이터베이스 구조 내에 발생하는 연산은 크게 위의 세 가지로 구분할 수 있으며, 특별히 결과 연산은 다양한 연산 유형을 가질 수 있어 추가적인 패턴 분석을 통한 지속적인 패턴 추가 작업을 필요로 한다. 따라서, 업무연계성보정기(144)는 관련 테이블, 컬럼 및 연산 유형을 지정해주어 연산 유형별 작업을 실시할 수 있게 해준다.
다음, 업무연계성보정기(144)는 S530 단계에서 파악된 컬럼 및 테이블 관계, 연산 유형을 이용하여 연산 유형별로 업무적 연계 컬럼간 연산 정의 작업(S535)을 수행해야 한다. 도 35는 연산 유형별 연산을 정의하기 위한 화면을 예시적으로 도시한 것이다. 도 35는 각 연산 유형별 컬럼 간의 연산을 정의할 수 있도록 되어 있다.
원인 연산은 원인을 유발하는 컬럼(도 35에서는 테이블 A의 gb_a)의 값이 무엇이냐에 따라 영향을 받는 컬럼 또는 테이블들의 값이 존재할 수 있는가 여부를 결정한다. 도 35의 [원인연산]에서는 gb_a 컬럼 값이 1일 때, 테이블 A 컬럼 b의 값이 존재할 수 있고 테이블 B의 데이터가 생성될 수 있음을 의미한다.
비교 연산은 두 컬럼간의 값의 크기 비교하는 것이므로 >, =, <의 세개의 연산자를 이용해 컬럼간 비교 연산을 수행할 수 있게 한다.
계산 컬럼(도 35에서 테이블 A의 cum_a)은 여러 관련 컬럼 값 간의 연산의 결과이다. 따라서, 계산 컬럼은 관련 컬럼 값의 가감승제에 의한 관계 및 각 컬럼 값의 GROUP 유형(GROUP의 크기<where 조건에 의존> 및 group 함수(합, 평균, 최대값, 최소값 등))에 의존한다. 가감승제 및 그룹핑이 여러 형태로 나타날 수 있으므로, 결과 연산의 경우에는 정의 이후에 사용자 편집이 가능하게 한다.
도 36은 연산을 관리하기 위한 테이블 구조를 도시한 것으로, 테이블별 컬럼 테이블의 연산유형 컬럼 값이 어떻게 들어오는가에 따라 연산 연관 컬럼 테이블의 값이 지정된다.
테이블별 컬럼에 연산 유형에 값이 1, 즉 원인 연산이 선택되면, 연산연관 컬럼 테이블의 코드값이 지정되고 관련 연관 테이블 및 컬럼이 지정된다.
테이블별 컬럼에 연산 유형에 값이 2, 즉 비교 연산이 선택되면, 연산연관 컬럼 테이블의 비교연산자(<,=,>)가 지정되고 관련 연관 테이블 및 컬럼이 지정된다.
테이블별 컬럼에 연산 유형에 값이 3, 즉 결과 연산이 선택되면, 연산연관 컬럼 테이블의 계산항목(+,-,*,/) 및 컬럼을 그룹핑할 경우는 그룹함수 및 그룹 레벨(level)을 지정하는 조인키, 그리고, 연산 연관 컬럼간 연산 순위를 지정해준다. 그리고, 만약 연산 연관 컬럼 테이블을 통한 결과 연산 지정이 어려울 경우는 사용자 정의 함수를 통해 사용자 정의를 할 수도 있다.
업무적 연계성 정의와 관련된 작업이 끝나면, 오류테이터추출기(16)는 논리분석정보 데이터베이스(54)에 저장된 업무연계 컬럼간 연산 정보를 이용하여 업무적 연계성에 따른 오류 데이터 추출 스트립트 생성 및 보정 작업을 수행한다(S540).
도 37은 업무적 연계성에 따른 오류 데이터 추출 스크립트를 예시적으로 나타낸 것이다. 도 37에서 [원인 연산] 오류 데이터 추출 스크립트의 생성은 원인 연산 컬럼 테이블에서 COL_4에 존재할 수 있는 값을 체크하고 연산 연관 컬럼에서 COL_4의 값에 따라 존재할 수 있는 관련 컬럼 값 및 레코드 값을 식별한다. [원인연산] 사례에서는 COL_4의 값이 '1'이어야만 테이블 B의 값이 존재할 수 있는데, COL_4의 값이 '1'이 아님에도 불과하고 테이블 B의 값이 존재하는 오류 데이터를 추출하는 스크립트이다. 테이블 A와 테이블 B의 관계는 테이블별 관계 및 관계별 컬럼 테이블로부터 추출할 수 있다.
도 37에서 [비교연산] 스크립트는 비교연산 컬럼 테이블의 DT_COL_1은 DT_COL_2보다 크거나 같아야 한다고 정의되어 있는데, 그렇지 않은 오류 데이터를 추출하는 스크립트이다.
도 37에서 [결과 연산] 스크립트는 결과 연산 컬럼 및 연산 관련 컬럼 테이블에 COL_COM = SUM(COL_2/COL_3)로 정의되어 있는데, 그렇지 않은 오류 데이터를 추출하는 스크립트이다. 테이블 A와 테이블 C의 관계는 테이블별 관계 및 관계별 컬럼 테이블로부터 추출할 수 있다.
이후, 오류데이터추출처리기(16)는 업무적 연계성에 따른 오류 데이터 추출 스크립트를 이용해 업무 데이터베이스(520로부터 업무적 연계성 오류 데이터를 추출하여 오류데이터관리 데이터베이스(56)에 저장한다(S545).
도 38은 오류데이터관리 데이터베이스(56)에서 오류 데이터를 관리하기 위한 테이블 구조를 도시한 것이다. 도 38에 도시된 테이블 구조에서 기준 오류 정보는 원인, 비교, 결과에서 각각 기준이 되는 테이블의 컬럼으로서, 원인 연산에서는 원인을 유발하는 컬럼, 비교 연산에서는 비교 대상 컬럼 중 사용자가 임의로 지정한 컬럼, 결과 연산에서는 결과값이 저장되는 컬럼을 말한다.
데이터논리분석기(10)에 의해 업무적 연계성 오류 데이터가 추출되었으면, 오류데이터보정기(20)는 업무적 연계성 오류 보정 작업을 실시한다. 도 39에 도시된 바에 의하면, 업무적 연계성 오류 데이터에 대한 보정은 원인연산, 비교연산, 결과연산별 보정이 있다. 도 39에서 원인연산, 비교연산, 결과연산의 세가지 연산에 대한 보정 매카니즘 중 비교연산은 처리 매카니즘이 단순하여 제외하였다.
원인 연산 보정 매카니즘은 원인 유발항목과 결과 내역 중 하나를 기준으로 보정을 실시하는 매카니즘이다. 결과 연산 보정 매카니즘은 결과 컬럼과 관련 연산 컬럼들 중 사용자가 지정한 특정 컬럼이 보정대상이 되어 보정 컬럼값을 관련 컬럼들의 값과 연산 알고리즘에 의해 보정하는 매카니즘이다. 도 40은 보정 연산 매카니즘에 대한 예시적인 순서도이다.
업무적연계성오류보정정보관리기(224)는 도 41에 예시적으로 도시된 바와 같은 업무적 연계성 오류 데이터 보정 정보 입력 화면을 사용자에게 제시하여 필요한 정보를 입력받는다(S550). 업무적 연계성 오류 데이터 보정 정보 입력 화면에서 원인 연산과 비교 연산 보정의 경우 사용자는 각 오류 데이터에 대해 오류 원인을 분석하여 각 데이터별로 기준 여부 항목을 체크하면, 업무적연계성오류보정정보관리기(224)는 기준이 되는 테이블을 선정하고 상대항목을 기준항목에 근거하여 변경할 수 있도록 지원한다. 결과 연산의 경우 사용자가 보정대상 값을 선택하면 업무적연계성오류보정정보관리기(224)는 나머지 값에 근거하여 보정대상 값을 자동 연산한다. 도 41에 도시된 바와 같은 화면을 통하여 업무적 연계성 보정 정보가 입력되면 업무적연계성오류보정정보관리기(224)는 이를 오류데이터관리 데이터베이스(56)에 저장한다.
이후, 오류데이터보정처리기(24)는 오류데이터관리 데이터베이스(56)에 저장된 업무적 연계성 보정 정보를 이용하여 업무적 연계성 오류 데이터 보정 스크립트를 생성/보정하고(S555), 생성/보정된 업무적 연계성 오류 데이터 보정 스크립트를 수행하여 업무 데이터베이스(52)의 업무적 연계 오류 데이터를 보정한다(S560).
도 42는 도 3에서의 시스템간 연계성 오류 데이터 처리 과정(S600)을 설명하는 흐름도이다. 도 42에 의한 시스템간 연계성 오류 데이터 처리작업은 데이터논리보정기(14)의 관계보정기(141), 비정규화보정기(142), 컬럼형식/경계값보정기(143) 및 업무적연계성보정기(144)에 의한 논리분석작업(S220, S320 또는 S525) 이후, 논리보정작업(S230, S330 또는 S530, 도 42에서는 A로 표시됨) 이전에 시스템간연계성보정기(145)에 의해 수행된다.
시스템간 연계 분석 단계(S610)는 데이터베이스 논리 구조에 의한 작업활동은 아니다. 일반적으로, 사용자는 자신의 시스템에만 관심을 가지기 때문에 강제적으로 타 시스템과의 연계분석을 실시하게 하기위해 만든 프로세스다. 시스템간 연계를 분석을 위해 맨 처음 하는 과정은 시스템간 연계 테이블을 분석하는 것이다. 이 작업은 사용자가 연계 대상 테이블을 직접 선택하고 연계 항목별 연계 내역을 분석함으로서 이루어진다.
도 43은 시스템간 연계 분석의 사례를 설명하기 것이다. 도 43에서 볼 수 있는 것처럼 연계 대상 테이블간에는 테이블간의 관계, 비정규화, 업무적 연계성의 형태로 연계가 발생한다. 이후, 각 연계 항목별 내역 정의가 완료되면(S620), 시스템간연계성보정기(145)는 해당 정보를 논리분석정보 데이터베이스(54)에 저장하고, 각 논리 구조별 논리 보정 과정(S230, S330 또는 S530 내지 S540)에서 처리된 다음, 오류데이터추출처리기(16)에 의한 오류 데이터 추출 및 오류데이터보정기(20)에 의한 오류 데이터 보정 작업이 이루어진다.
한편, 상술한 본 발명의 데이터 무결성 관리장치(1)의 실시예는 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하다. 그리고, 컴퓨터에서 사용되는 매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 상기 매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 씨디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.