DA# Macro(4): DA# Macro(매크로) 기능(3)-Reverse
DA# Macro Reverse 기능에 대해 살펴본다.
이전 글에서 이어지는 내용이다.
DA# Macro(3): DA# Macro(매크로) 기능(2)-Attribute Get/Set
2.4. DA# Macro Reverse 기능
2.4.1. DA# Macro Reverse 기능을 만든 이유
데이터 모델링 도구의 Reverse 기능은 역공학(Reverse Engineering) 기법을 이용하여 데이터베이스로부터 ERD 형태의 데이터 모델을 생성하는 기능이다.
데이터베이스에 직접 접속하여 Reverse 기능을 실행하는 방법이 가장 일반적이다. 데이터베이스에 직접 접속하기가 어렵거나 권한을 얻기까지 시간이 오래 걸리는 경우는 접근 권한을 가지고 있는 담당자(보통 DBA 또는 IT 운영자)에게 데이터 모델 정보를 수집하는 SQL을 제공하고, 그 실행결과를 엑셀 파일로 제공받아서 Reverse 기능을 실행할 수도 있다.
DA#은 데이터베이스로부터 Reverse하는 기능과 엑셀 파일로부터 Reverse 하는 기능을 모두 제공하고 있다. 다만, 다음의 한계점이 있어 프로젝트 현장에서 사용할 때 많은 수작업이 필요하다.
- 데이터 모델을 한 번에 하나씩만 처리할 수 있다.
- 데이터 모델이 많은 경우(수십 개 ~ 수백 개) 각 모델별로 Reverse 기능을 반복적으로 실행해야 한다.
- 하나의 주제영역 다이어그램으로 생성되고, 모든 엔터티가 무작위로 배치된다.
- 주제영역을 만들고, 각 엔터티의 주제영역을 분리하는 작업이 필요하다.
- 주제영역 다이어그램에서 엔터티를 업무 영역으로 묶거나 관련 엔터티를 한 곳에 배치하는 등 엔터티 이동 작업이 필요하다.
위 한계점을 최대한 극복하고 수작업을 가능한 한 제거하기 위하여 DA# Macro(매크로) 도구에 Reverse 기능을 만들었다. 아래 기능이 가능하다.
- 여러 모델을 한꺼번에 Reverse 가능
- 각 테이블의 주제영역을 지정하여 해당 주제영역 다이어그램에 배치 가능
- 한 주제영역 다이어그램 내에서 엔터티의 그룹을 지정하여 각 그룹별로 한 위치에 묶어서 배치 –> 핵심 기능
- DA#에서 제공하는 배치 방식 외에 사용자 정의 배치 (향후 버전에서 계획. 현재는 DA#에서 제공해 주는 배치 방식만 지원)
2.4.2. Reverse 기능 사용 방법 요약
- 입력 엑셀 파일을 작성하고, ‘Reverse’ 시트에서 각 파일을 선택 후 Option을 설정하여 실행한다.
- 입력 엑셀 파일은 데이터베이스에서 query를 실행하여 작성하거나, 관리하고 있는 테이블 정의서를 활용하여 작성한다.
2.4.3. 입력 파일
- Model 목록: Reverse 대상 Model 목록을 작성한 파일 (필수)
- Model의 DBMSType을 설정
- 이 파일에 기술된 Model과 Table 목록에 기술된 Model명이 일치하는 대상만 Reverse 됨
- Table 목록: Reverse 대상 Table 목록을 작성한 파일 (필수)
- Column 목록: Reverse 대상 Column 목록을 작성한 파일 (필수)
- FK 목록: Reverse 대상 FK(Foreign Key) 목록을 작성한 파일 (선택적)
- 각 목록 파일 작성 시 유의사항
- Model, Table, Column, FK 목록은 하나의 파일로 작성해도 되고, 각각 다른 파일로 저장해도 됨
- 각 목록의 Template은 DA# Macro “Reverse”시트 하단의 첨부 파일을 활용하거나 별도로 제공되는 파일로 작성할 것 (정해진 양식대로 작성해야 함)
2.4.4. Reverse Option
- 입력파일 열기모드: 입력파일을 어떤 모드(읽기전용, 쓰기가능)로 열지 선택
- 처리후 입력파일 닫기 여부: 입력파일을 모두 읽어 memory 적재 후 닫을지 여부 (Y: 읽은 후 닫기, N: 열어 두기)
- Entity 배치 방식: DA# 메뉴 > 서식 > 자동배치 에서 제공하는 배치 방식. 현재는 방사형, HTree 방식 두 가지중 하나를 지정한다.
- Group 배치 간격: Entity Group 사이 좌우, 상하 간격 (단위: pixel) (권장 값: 300 이상)
- 한 행의 Group 열 수: 주제영역 다이어그램 한 행에 배치할 Entity Group 개수
- 예: Entity Group이 총 10개일 때
- 열수 3으로 설정하는 경우: 4개 행, 3개 열로 배치 (4×3)
- 열수 5로 설정하는 경우: 2개 행, 5개 열로 배치 (2×5)
- Reverse DA# 모델 template 사용여부: 아래 <Reverse DA# 모델 template file>을 사용할지 여부 (“N” 선택시 template을 사용하지 않고 새 모델 생성)
- Reverse DA# 모델 template file: Reverse DA# 모델의 template 파일
- 모델의 기본 설정을 미리 저장해 둔 파일 지정
- 모델 기본 설정 예시: 개체명 보기옵션(보조명 보기, 동의어 보기), 페이지 배율 등
- 위 사용여부 옵션이 “N”인 경우 사용하지 않음
- 예시 값: D:\Project\My\01.엑셀VBA\02.DA# Macro\test reverse file\template model.damx
- Reverse DA# 모델 저장경로: Reverse 한 DA# 모델 파일(*. damx)을 저장할 경로 (파일명은 아래 형식에 따라 생성됨)
- 모델 파일명 형식: 모델 파일명에 적용하는 형식 문자열
- [모델명]: Model 목록 template에 지정된 모델명
- [DATE]: YYYYMMDD 형식 (예: 20201228)
- [TIME]: HH24MISS 형식 (예: 155621)
- 상수: 고객사명, 시스템명 등
- 예시 값: 엔코아 [모델명]_[DATE]_[TIME].damx
- 물리모델 생성여부: 주제영역별로 물리모델 Diagram을 생성할지 여부
- “Y”: Reverse 완료하는데 더 많은 시간이 걸리나 처음부터 물리모델 생성함
- “N” 물리모델을 생성하지 않음(더 빨리 Reverse 완료 가능)
2.4.5. Template 파일: Model
- 모델명: 저장되는 모델파일의 명칭. 여기에서 지정한 모델만 Reverse 된다.
- 옵션의 “모델 파일명 형식”에서 사용된다.
- Table, Column, FK Template의 모델명과 일치해야 한다.
- DBMSType: 해당 모델의 물리모델에 지정할 DBMS Type을 지정한다. 다음 값 중 하나를 사용한다. (참고: DA#이 업그레이드되면서 이 값은 추가되거나 제거될 수 있다)
- ALTIBASE
- BIGQUERY
- CUBRID
- DB2UDB
- GREENPLUM
- HANADB
- HIVE
- IMPALA
- INFORMIX
- MARIA
- MYSQL
- NETEZZA
- OCEANBASE
- ORACLE
- POSTGRESQL
- REDSHIFT
- SQLSERVER
- SYBASEASE
- SYBASEIQ
- TERADATA
- TIBERO
- VERTICA
- 그 외 값은 ORACLE 로 지정됨
- 정의: 해당 모델에 대한 설명
2.4.6. Template 파일: Table
- 모델명: 저장되는 모델파일의 명칭. 여기에서 지정한 모델만 Reverse 실행된다.
- 주제영역명: 각 테이블을 배치할 모델 하위 주제영역
- 엔터티 그룹명: 그룹명이 동일한 엔터티들을 주제영역 다이어그램의 같은 위치에 배치한다.
- Reverse를 실행하기 전에 미리 각 Table의 업무 영역(주문, 결제 등) 또는 Table의 성격(개체(기본), 상세, 코드, 이력, 임시, 관계 등)을 분석하여 그룹명을 미리 지정하고 그 그룹끼리 한 곳에 배치하려는 경우에 유용하다.
- 엔터티 그룹명을 텍스트 박스로 만들고 그 하위에 엔터티들을 모아서 배치한다. (아래 이미지 참조)
- 그외는 다음과 같은 DA#의 엔터티 개체에 지정되는 특성 값이다.
- 엔터티명
- 테이블명
- 동의어
- 보조명
- DB Owner
- 분류: Key, Main, Action, None 중 하나. 값을 지정하지 않은 경우 기본 값은 ‘None’ 이다.
- Level
- 단계: 본질적, 실용적 중 하나. 값을 지정하지 않은 경우 기본 값은 ‘실용적’ 이다.
- 유형: Normal, Additional, Drop, External, Pseudo 중 하나. 값을 지정하지 않은 경우 기본 값은 ‘Normal’ 이다.
- 표준화: 상속, 대상, 비대상 중 하나. 값을 지정하지 않은 경우 기본 값은 ‘상속’ 이다.
- 상태
- 발생주기
- 월간발생량
- 보존기한(월)
- 총건수
- 정의
- 데이터 처리 형태
- 특이사항
- Note
- Tag
- 참고사항: 이 글을 작성하는 시점에서는 UDP 값 설정은 지원하지 않는다.
2.4.7. Template 파일: Column
- 모델명: 저장되는 모델파일의 명칭. 여기에서 지정한 모델만 Reverse 된다.
- 엔터티명: 아래 테이블명 내용 참조. 필수값은 아니다.
- 테이블명: 속성이 어떤 엔터티에 속하는지를 연결하는 값. 필수값이다. 엔터티명은 유일성 보장이 어렵고 비어 있는 경우가 많아 연결하는 값으로 사용하지 않는다. 데이터베이스에서 query를 통해 reverse정보를 추출하는 경우, 테이블명은 유일성이 보장이 가능하고 비어 있지 않아서 테이블명을 연결 값으로 사용한다.
- 아래는 DA#의 Attribute 개체에 지정되는 특성 값이다.
- 속성명
- 컬럼명
- 정의
- 보조명
- 동의어
- Reverse Table
- Reverse Column
- Reverse Type
- Reverse Length
- PK: 속성의 PK 여부(Y 또는 null)
- NotNull: NotNull 여부(Y 또는 null)
- 유형: Normal, Additional, Drop, System, Pseudo 중 하나
- 데이터타입
- 길이
- 소수점
- 기본값
- 핵심속성여부: (Y 또는 null)
- 본질식별자여부: (Y 또는 null)
- 보조식별자여부: (Y 또는 null)
- 표준동기화여부: (Y 또는 null)
- 비상속여부:(Y 또는 null)
- 표준화
- 정보보호여부: (Y 또는 null)
- 정보보호등급
- 암호화여부: (Y 또는 null)
- 스크램블
- 참고사항: 이 글을 작성하는 시점에서는 UDP 값 설정은 지원하지 않는다.
2.4.8. Template 파일: FK
- FK는 필수 입력이 아니나, 엔터티간 관계를 미리 알 수 있는 경우는 가급적 작성하여 입력하는 것이 좋다.
- 모델명: 저장되는 모델파일의 명칭. 여기에서 지정한 모델만 Reverse 실행된다.
- 부모 엔터티명, 자식 엔터티명
- Table template에서 지정한 엔터티명과 정확히 일치해야 한다.
- DA# API 중 물리모델에 FK를 생성하는 API는 없어서 논리모델에 Relationship을 생성하는 API(Model.LinkRelation)를 활용한다.
- 아래는 DA#의 Relationship 개체에 지정되는 특성 값이다.
- 관계명
- 정의
- 관계유형: Normal, Pseudo 중 하나. 값을 지정하지 않거나 둘 중에 하나가 아닌 경우 기본 값은 ‘Normal’ 이다.
- 두 엔터티간에 관계가 확실한 경우 Normal을 지정하고, 확실하지 않거나 데이터 모델 분석 목적으로 관계를 생성하는 경우 Pseudo로 지정하는 것이 좋다.
- Normal인 경우 부모 엔터티의 식별자가 자식 엔터티로 상속되는데, 실제 데이터 모델에는 식별자의 실부 속성이 제외되거나 명칭이 다른 경우가 있어서 데이터 모델을 훼손할 수 있기 때문이다.
- 기수성(부모:자식): 1:1, 1:M, M:M 중 하나. 값을 지정하지 않은 경우 기본 값은 ‘1:M’ 이다.
- 선택성(부모:자식): 다음 중 하나로 지정한다. 값을 지정하지 않은 경우 기본 값은 ‘O:M’ 이다. (O: Optional, M: Mandatory)
- O:M –> 기본값
- O:O
- M:O –> 부적합하나 제공함
- M:M
- 식별성: 식별, 비식별 중 하나. 값을 지정하지 않은 경우 기본 값은 ‘비식별’ 이다.
- 식별: 부모 식별자가 자식 식별자로 상속
- 비식별: 부모 식별자가 자식 일반 속성으로 상속
- 부모 엔터티 관계동사, 자식 엔터티 관계동사: 보통은 관계명으로 충분하나, 추가적인 설명이 필요할 경우 관계동사를 지정한다. 개념은 아래 이미지를 참조한다.
여기까지 DA# Macro(매크로) 기능 중 Reverse 기능에 대해 살펴보았다. 다음에는 DA# Macro 사용시 주의사항과 참고할만한 내용을 살펴보겠다.
<< 관련 글 목록 >>
- DA# Macro(1): DA#, DA# API, DA# Macro (매크로) 개요
- DA# Macro(2): DA# Macro(매크로) 기능(1)-공통기능, Entity Get/Set
- DA# Macro(3): DA# Macro(매크로) 기능(2)-Attribute Get/Set
- DA# Macro(4): DA# Macro(매크로) 기능(3)-Reverse
- DA# Macro(5): 사용상 주의사항/참고사항, 다운로드, 향후 추가 예정 기능, 일러두기
- DA# Macro(6): DA# Modeler API
- DA# Macro 기능 시연 영상 (YouTube)
- DA# Macro 설명글 목차 , 다운로드