기타

ERwin을 이용한 CUBRID 리버스 엔지니어링

by 민순 posted Jul 13, 2020

 이 튜토리얼에서는 기존 데이터베이스를 리버스 엔지니어링하고 스키마 정보를 얻는 방법을 설명합니다. 예시로 큐브리드 설치시 생성되는 demodb를 이용합니다.

 

 

ERwin을 설치 후 (이 튜토리얼에서는 2020 R2 14677 버전을 이용합니다) 프로그램 실행 후 Actions -> Reverse Engineer... 메뉴를 선택합니다.

 

" ERwin에서 리버스 엔지니어링은 실제 데이터베이스에서 물리적 데이터 모델 (Physical Data Model)을  논리 데이터 모델 (Logical Database Model) 표현으로 변환하는 프로세스라고 설명합니다. "

 

 

New Model 창이 열리면, 타입과 대상 서버를 다음과 같이 선택합니다. (큐브리드 ODBC 드라이버는 ODBC Spec 3.x 기반으로 구현됨) 

 

 new_model.png

 

 

새로운 빈 데이터 모델 문서가 생성됩니다. 이때 Set Options  창이 나타납니다.

 

set_options.png

 

리버스 엔지니어링 항목

창 왼쪽의  Items to Reverse Engineer 그룹에서 스키마 정보를 가져올 개체를 선택할 수 있습니다. 저장 프로시저를 사용하지 않는다면 체크 해제합니다.

 

 

옵션

- Reverse Engineer

 창의 오른쪽 위에서 리버스 엔지니어링 할 테이블 유형을 선택할 수 있습니다. 큐브리드 에는 시스템 테이블사용자 테이블이 있습니다. 응용 프로그램에서 사용하는 사용자 테이블 만 리버스 엔지니어링을 하려면 System Objects 를 체크 해제합니다. System Objects 를 체크하면 시스템 테이블에 대한 스키마 정보만 얻을 수 있습니다. 이 튜토리얼에서는 편집 할 수 있는 사용자 테이블만 리버스 엔지니어링합니다.

 

사용자 테이블의 경우 현재 사용자 또는 특정 사용자가 액세스 할 수 있는 테이블 또는 모든 테이블을 리버스 엔지니어링하도록 선택할 수 있습니다.

 

 

- Infer

 여기서 리버스 엔지니어가 데이터베이스 스키마에서 추론할 컬럼 속성을 선택할 수 있습니다. 큐브리드는 관계형 DBMS이므로 기본외래 키를 설정할 수 있습니다. 리버스 엔지니어링중인 대상 데이터베이스가 키를 이미 정의한 경우에는 이 부분을 체크하지 않아도 됩니다. ERwin이 자동으로 이를 감지합니다. 옵션을 설정했으면 Next을 클릭하여 리버스 엔지니어링 프로세스를 완료하면 됩니다.

 

 

ODBC 연결

새 창에서 사용자 이름비밀번호와 같은 데이터베이스 연결 정보를 입력하십시오. "CUBRID"가 ODBC Data Source 매개 변수의 값으로 자동 선택되지 않으면 이를 클릭하고 "CUBRID"를 선택한 다음 Connect 버튼을 클릭합니다.

 

" CUBRID ODBC 드라이버 연결은 메뉴얼을 참고해주시기 바랍니다. - www.cubrid.org/manual/en/10.2/api/odbc.html#configuring-and-environment-odbc

 

ODBC_connection.png

 

결과

결과로 데이터베이스의 스키마가 표시됩니다. 아래는 demodb 데이터베이스의 일부입니다.

 

erd_ie.PNG

 

- 관계

 ERwin Data Modeler에서 각 테이블은 수평선으로 2 개로 나누어져 있습니다. 위 섹션에는 모든 키 (기본 및 외부)가 나열되어 있습니다. 하단 섹션에는 나머지 컬럼이 나열됩니다. 위의 예에서 게임 테이블은 위의 섹션에 3개의 컬럼으로 구성된 복합키 (여러 컬럼으로 정의 된 PK)의 일부인 host_year 컬럼이 있습니다. 또한 event_code 및 athlete_code FK를 통해 event 및 athlete 테이블과 외래 키 관계를 갖습니다.

 

“ 여기에서 알아야 할 중요한 것은 이러한 event_code 및 athlete_code 외래 키가 일반적인 비식별 관계와 다른 식별 관계를 나타내는 것입니다. 식별 관계는 항상 복합 기본 키의 일부입니다. ERwin 문서에서 자세한 내용을 읽을 수 있습니다. ”

 

테이블 a와 테이블 b의 특정 관계에 대한 자세한 정보를 얻으려면 해당 테이블 사이의 관계를 두 번 클릭합니다.

다음과 같은 창이 나타납니다. RI Actions  탭 (참조 무결성 동작)을 클릭하면 ON DELETEON UPDATE에 설정된 값을 확인할 수 있습니다.

아래 예에서 두 트리거는 모두 RESTRICT로 설정되어 있습니다. CUBRID에서 허용되는 RI 액션을 선택할 수 있습니다.

 

fk_erwin.png

 

또한 위의 섹션에서 컬럼 3개로 구성된 복합키 (여러 컬럼으로 정의 된 PK)의 일부인 host_year 컬럼을 볼 수 있습니다. 이 리버스 엔지니어링의 정확성을 확인하기 위해 CUBRID Admin을 열고 실제 데이터베이스 스키마를이 모델과 비교할 수 있습니다. 

 

컬럼 속성

모델에서 테이블의 열을 두 번 클릭하거나 테이블을 마우스 오른쪽 버튼으로 클릭하고 Column Properties...을 선택하면 컬럼 속성이있는 창을 볼 수 있습니다.

 

column_erwin.png

 

모든 속성이 올바른지 여부를 확인하기 위해 실제 테이블 스키마와 비교할 수 있습니다.

CREATE TABLE "game"(
    "host_year" integer NOT NULL,
     "event_code" integer NOT NULL,
     "athlete_code" integer NOT NULL,
     "stadium_code" integer NOT NULL,
     "nation_code" character(3),
     "medal" character(1),
     "game_date" date,
    CONSTRAINT pk_game_host_year_event_code_athlete_code PRIMARY KEY("host_year","event_code","athlete_code"),
     FOREIGN KEY ("event_code") REFERENCES "event"("code") ON DELETE RESTRICT ON UPDATE RESTRICT,
     FOREIGN KEY ("athlete_code") REFERENCES "athlete"("code") ON DELETE RESTRICT ON UPDATE RESTRICT
);

 

모든 것이 실제 데이터베이스와 정확히 일치함을 알 수 있습니다. NOT NULL 제약 조건은 ODBC 탭에서 확인할 수 있습니다.

 

not_null.png

 

실제 데이터베이스에 사용 된 정확한 외래 키 이름을 찾으려면 모델 테이블 (컬럼이 아님)을 두 번 클릭하거나 테이블 오른쪽 마우스 클릭 후 Table Properties... 을 선택하십시오. 사용 위치에서 선택한 테이블에 사용 된 외래 키 이름을 볼 수 있습니다.

 

table_properties.png

 

그 외 다른 옵션을 사용하여 ERwin 리버스 엔지니어링 도구의 나머지 기능을 찾아볼 수 있습니다.


Articles

1 2 3 4 5 6 7 8 9