민서네집

ERwin 설정 본문

컴퓨터 일반

ERwin 설정

브라이언7 2013. 4. 25. 13:27

ERwin 표기방식 변경하기


Idef1x (Integration DEFinition for Information Modeling) 방식 => IE (Information Engineering) 방식


Model 메뉴 > Model Properties... > 세번째 Notation 탭에서 IDEF1X 에서 IE 로 변경해준다.


[참조] http://onesixx.tistory.com/376



ERD에서 자기 참조 관계를 표현하려면


그냥 그리는 것은 할 수 있는데, 아래와 같이 Relationships에서 Rolename을 지정해 주지 않으면

자기 테이블의 PK 컬럼이 자기 자신 컬럼을 FK로 참조하는 것으로 간주하여 Forward Engineering 으로 Script를 생성하여 실행시키면 SQL 에러가 난다.


따라서 반드시 다음과 같이 Rolename을 적어줘야 한다.


아주 간혹 2개 이상의 컬럼을 자기 참조하는 경우도 있을 수 있으므로 Rolename을 적어주기 전에 상단의 Migrated Attribute를 마우스로 먼저 선택하는 것이 좋다.


그리고 Physical View에서 하면 Logical View 에서는 Rolename 이 안 보이고, 이상하게 Rolename 으로 적어준 컬럼이 없어진다. 따라서 반드시 Logical View 에서 Rolename 을 적어줄것.




Logical 속성명에서 Physical Column명 자동 생성하기


Tools 메뉴 > Names > Model Naming Options... > General 탭 > Use File 항목에서 Browse 버튼 클릭해서 nsm 파일을 로드할 수 있다.


처음 저장할 때는 하단의 Naming Standards Editor 에서 Edit... 버튼을 눌러서 편집하고 저장하면 된다.



nsm 파일을 로드하고 나서는 Tools 메뉴 > Names > Edit Naming Standards... > Glossary 탭에서 수정.


Abbreviation 컬럼의 값이 Physical Column 명이 된다.


Physical Column명에서 '_' 를 붙이고 싶으면 Logical 속성명에서도 '_' 를 붙여야 한다. 그냥 공백으로 하면 Column 명에서는 공백이나 '_' 가 붙는 것이 아니라 두 단어가 붙는다.



ERwin Index Naming Rule을 이용한 인덱스 명 자동 변경 방법


[참고] http://blog.naver.com/atlaslee/20058715102


인덱스명을 정해진 명명규칙에 따라 부여하는 방법은
ERwin 도구에서 Tools -> Names -> Model Naming Option -> Name Mappint 에 들어가시면 Key Group to Index 항목이 있습니다.


아래 중에서 하나를 선택해서 Key Group to Index 항목에 넣으면 되는데, 맨 아래 것을 선택해서 넣었음.


%If(%==(%KeyType,PK)){U_}_%TableName


%If(%==(%Substr(%KeyType,1,2),IE)){N}U_%TableName


%If(%==(%Substr(%KeyType,1,2),IE)){N}U%If(%==(%KeyType,PK)){PK}_%TableName%If(%Not(%==(%KeyType,PK))){%Substr(%KeyName,%Len(%KeyName))}


%If(%==(%Substr(%KeyType,1,2),IE)){IX}%If(%==(%Substr(%KeyType,1,2),AK)){UIX}%If(%==(%KeyType,PK)){PK}_%TableName%If(%Not(%==(%KeyType,PK))){_%Substr(%KeyType,3,1)}




ERwin 에서 Comment 자동 생성


Physical 모델 선택 > Database 메뉴 > Pre & Post Scripts > Model -Level... 선택


%ForEachTable() 
{
    alter TABLE %TableName COMMENT = '%EntityName' ENGINE=InnoDB DEFAULT CHARSET=utf8; 
 
    %ForEachColumn() 
    {
        ALTER TABLE %TableName CHANGE COLUMN %ColName %ColName %AttDatatype %AttNullOption COMMENT '%AttName';
      }
}

Tools 메뉴 > Forward Engineer > Schema Generation... 에서 Options 탭의 Schema 항목에서 Pre-Script 와 Post-Script 항목을 체크해 주고 Generate 버튼을 누르면 된다.

그런데 위와 같이 하면 MySQL DB에서 컬럼에 AUTO_INCREMENT 속성을 주었을때 문제가 발생한다.


AUTO_INCREMENT 속성은 ERwin에서는 NULL Option의 한 종류이기 때문이다.



Forward Engineer 로 Script를 생성하게 되면


AUTO_INCREMNT 컬럼의 경우 


    ALTER TABLE T_SCEN CHANGE COLUMN SCEN_ID SCEN_ID INTEGER IDENTITY(1) COMMENT '시나리오_ID';


이렇게 생성되기 때문. 이 명령을 실행하면 MySQL에서 당연히 오류가 발생한다.


그래서 이 Script를 다음과 같이 수정해야 한다.

%ForEachTable() 

{

    alter TABLE %TableName COMMENT = '%EntityName' ENGINE=InnoDB DEFAULT CHARSET=utf8; 


    %ForEachColumn() 

    {

          %Decl(NullOption)

        %If(%==(%Substr(%ColumnNullOption,1,8),IDENTITY)){%=(NullOption,AUTO_INCREMENT)}

        %Else {%=(NullOption,%ColumnNullOption)}

        ALTER TABLE %TableName CHANGE COLUMN %ColName %ColName %AttDatatype %:NullOption COMMENT '%AttName';

      }

}


Pre & Post Scripts 대화상자에서 Macro Toolbox 버튼을 누르면 Miscellaneous Macro 항목을 보면
Macro를 프로그래밍 할 수 있다는 것을 알 수 있다.


AllFusion ERwin Data Modeler: Macro Language



Macro를 프로그래밍하는 방법을 설명한 PPT 파일.

ERwin pre & post script 작성시 변수 이용해보기


declares argument as a variable
and optionally initializes it

Basic Syntax Example:
%Decl(<arg>,<initial value>)

ERwin pre & post script로 index 생성 script 만들기

http://mc.mungchung.com/xe/protip/102705?PHPSESSID=6097b14a6842483dba1042f6ffe32744


Physical 에서 Column 순서를 Logical 과 동일하게 정렬시키는 기능






ERwin 7.3 Ver. Comment로 Logical 만들기


http://joke00.tistory.com/168


ERwin 7.3 에서 Forward Engineering 으로 Script 를 만들 때 

AUTO_INCREMENT 속성을 잘못 만드는 버그 수정하는 법


[참조] https://communities.ca.com/web/ca-modeling-global-user-community/message-board/-/message_boards/view_message/2273537


https://communities.ca.com/web/ca-modeling-global-user-community/message-board/-/message_boards/view_message/2273545?&#p_19


위 문서처럼 수정한 템플릿 파일을 첨부함. 

MySQL.fet


ERwin 7.3.0.1666 버전에서는 위와 같은 오류가 있었는데, 7.3.4.1822 (Service Pack1)에서는 Fix 되었다.



ERwin 설치 시 에러나는 경우 (LogWatch Service Fail)


error 1920.service event log watch (logwatch) failed to start. verify that you have sufficient privileges to start system services.



Google에서 찾아보니 데이터 실행 방지 때문에 그런다는데, 내 경우에는


이전에 설치됐던 것을 uninstall 했었는데, LogWatNT.exe 프로그램이 계속 실행되고 있었기 때문이었다.


Windodws 작업 관리자에서 이 프로세스를 끝내기 하고, C:\Program Files (x86)\CA 에 남아있던 파일들을 삭제하고, 다시 설치하니 잘 설치되었다.


[주의] Windows 작업 관리자에서 하단에 "모든 사용자의 프로세스 표시" 버튼을 클릭해야지 보인다.


LogWatch 프로세스에 대한 정보


=> http://www.windowexe.com/bbs/board.php?bo_table=board01_l&wr_id=221


참고로 데이터 실행 방지를 회피하는 방법은 다음 URL에 나와 있다.


http://oh190.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%84%A4%EC%B9%98-%EC%98%A4%EB%A5%98-Error-1920-%EB%B0%9C%EC%83%9D%EC%8B%9C-%ED%95%B4%EA%B2%B0%EC%B1%85


http://www.dracure.com/cmty01/view.php?ccd=W100&idx_cm=11130211p7wuTQ3jAoOg



Comments