출처 : http://stove99.tistory.com/115

다운로드 : ftp://ftp.ca.com/pub/erwin/ServicePacks/


ERWin 을 이용해 논리, 물리 ERD 를 작성했으면 이제 맹근 ERD 를 바탕으로 데이터베이스에 테이블을 생성해야 한다.

요 테이블을 생성하기 위해서는 뭐 ERWin 에서 데이터베이스에 직접 접속해서 테이블들을 생성까지 해주는 기능이 있지만,


왠지 번거롭게 느껴져서 그냥 테이블 생성 스크립트만 생성해서, 생성된 스크립트를 다른 디비접속툴을 사용해 뽓 실행해 주는것이 더 간편해서 일단

테이블 스크립트만 ERWin 상에서 생성해 보자.



먼저 테스트로 맹글어본 ERD 는 간단히 테이블 하나만 있다. 뭐 테이블이 수없이 많이 있어도 하는방법은 똑같으니깐~

테이블은 논리, 물리 요렇게 되 있다.



빨간색 박스친 부분을 보면 논리모델과 물리모델에 있는 컬럼 순서가 다르게 되 있다.

보통 ERD를 작성할때 당연히 논리모델을 쭉 다 맹글고 물리 모델을 대충 나중에 만든다. 그런데 논리 모델을 맹글면서 컬럼을 순서대로 추가하면 죠런 현상이 없지만,

뭐 그렇게 하기가 힘드니 문득문득 생각나는걸 또 추가하고 추가하고 해서 순서만 살짝살짝 바꿔준다.

그렇게 하다보니 논리모델은 순서가 내가 원하는 순서로 되있지만, 물리모델은 논리모델에서 컬럼을 추가한 순서가 그대로 유지되 있다.

뭐 물론 이상태에서 스크립트를 생성해도 크게 문제는 없지만(생성된 스크립트를 보면 물리모델에 보이는 컬럼순서대로 스크립트가 생성됨)

좋은게 좋은거라고 이왕이면 논리적으로 생각하는 순서와 똑같이 맹글고 싶다.



고걸 하기 위해서는 물리 ERD 작성하는 VIEW로 바꾼다음에 아무테이블 위에서 따블클릭을 하면 요런창이 뽁 뜨는데 요렇게 설정해 주면 논리모델과 순서를 똑같이 맞춰준다.








이제 물리모델의 컬럼 순서까지 보기 좋게 싹 맞춰 줬으니 테이블 생성 스크립트를 생성해 보자.

생성하기전에 살짝 해줄게 하나 있다. 테이블을 생성할때 딸랑 테이블만 생성해도 되지만 이왕이면 논리모델에서 작성한 테이블 이름과 컬럼이름을 코맨트로 달아서

다른 디비접속툴에서도 이 컬럼이 뭐하는 컬럼인지 쉽게 알 수 있게 해주면 좋다.

고런걸 자동으로 해주면 좋겠지만, 아직까진 그렇진 않기 때문에 테이블 생성 스크립트에 코맨트를 추가해주도록 ERWin에서 쓰는 스크립트를 하나 추가해야 한다.


스크립트 추가하기

메뉴 > Database > Pre & Post Scripts > Model-Level...



New 버튼을 클릭해서 적당한 이름으로 하나 추가하고 하단의 스크립트 Code 입력란에 각 디비에 맞는 스크립트를 입력해 준다음 OK 버튼을 클릭하면 된다.



※ 7.3.11 버전
1. 메뉴 > Database > Pre & PostScripts... 메뉴 선택
2. "New" 아이콘 클릭
    - Name : Comment 생성
    - Code 탭에 아래 스크립트 추가




※ 각 데이터베이스별 코맨트 생성 스크립트

MySQL

%ForEachTable()
{
    ALTER TABLE %TableName COMMENT = '%EntityName';
    %ForEachColumn()
    {
        ALTER TABLE %TableName CHANGE COLUMN %ColName %ColName %AttDatatype %AttNullOption COMMENT '%AttName';
    }
}




Oracle

%ForEachTable()
{
    COMMENT ON TABLE %TableName IS '%EntityName';
    
    %ForEachColumn()
    {
        %Switch('%ColumnComment')
        {
            %Choose(''){COMMENT ON COLUMN %TableName.%ColName IS '%AttName';}
            %Default {COMMENT ON COLUMN %TableName.%ColName IS '%ColumnComment';}
        }
    }
}



MSSQL

%ForEachTable() {
    exec sp_addextendedproperty 'MS_Description' , '%EntityName' , 'USER' , 'dbo' , 'TABLE' , '%TableName'
    go

    %ForEachColumn() {
        exec sp_addextendedproperty 'MS_Description' , '%AttName' , 'USER' , 'dbo' , 'TABLE' '%TableName' , 'COLUMN' , '%ColName'
        go
    }
}


%ForEachTable() {
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'%EntityName', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'%TableName'
go

%ForEachColumn() {
EXEC sp_addextendedproperty @name=N'MS_Description', @value=N'%AttName', @level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'%TableName', @level2type=N'COLUMN', @level2name=N'%ColName'
go
}
}





요기까지 했으니 이제 진짜로 테이블 생성 스크립트를 생성해 보자.

메뉴 > Tools > Forward Enginner 
테이블 생성 스크립트 생성시 쫌전에 맹글었던 코맨트 생성스크립트를 사용하라고 Post-Script 를 체크하고 간단히 Preview 버튼만 폿 눌러주면 생성된 스크립트가 팝업창에 뜬다.

요 팝업창에 뜬 스크립트를 폿 복사해서 토드같은 툴에다 붙여넣고 폿 실행을 하면 테이블이 생성된다.

※ sql 파일로 export 하고 싶으면 Report 버튼을 클릭하면 된다.

* 스크립트로 생성 시 컬럼 순서를 Logical과 똑같이 하고 싶다면 Forward Engineer Schema Generation에서 좌측에서 Column을 선택한 후 우측의 Physical Order 체크를 해제하면 된다.




==================================================================================================================

설정


* Forward Engineer - Schema Generation 옵션
  - Column > Physical Order : 체크 해제, 필드 순서를 보이는대로 script 생성
  - Trigger > ERWin Generated : 체크 해제, 불필요한 Trigger 생성 제거
  - Schema > Post-Script : 체크, Comment 스크립트 추가
               > Create > User Defined Type : 체크해제, Domains 생성 스크립트 제거
  - Referential Integrity > Foreign Key (FK) : 체크 해제, Foreign key 생성 제거
  - Other Options > Constraint Name : Script 생성 시 Constraint 생성 여부
  - Table > Drop > Table : Drop Table script 최상단 추가


* Physical 에서 datatype 보기
- Format > Table Display > Column Datatype 선택


* Constraint Key명 변경
- Tools > Names > Model Naming Options 메뉴 선택 > Name Mapping 탭 선택
- Key Group to Index 항목 편집 : 기본값 (%KeyName)

- 예제 테이블명 TB_USR
    PK 룰 : PK_TB_USR
    AK 룰 (Unique) : UX_TB_USR_1
    IE 룰 (Index) : IX_TB_USR_1

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


- 예제 테이블명 TB_USR
    PK 룰 : TB_USR_PK
    AK 룰 (Unique) : TB_USR_UX1
    IE 룰 (Index) : TB_USR_IX1

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



- %IndexType, Else 샘플

%If(%==(%IndexType,PK)){PK_%TableName}%Else{%IF(%==(%substr(%IndexType,1,2),IF)) {%TableName_%substr(%IndexType,2)}}



* 연결선(관계) 모양 변경
Model > Model Properties : Notation 탭에서 Logical Notation => IE, Physical Notation => IE 선택



==================================================================================================================

Image Export


1. Tools > Report Template Builder > Report Builder 선택

2. New 버튼 클릭

3. 왼쪽의 G Graphical > Picture 선택 후 우측이동 버튼 클릭

4. 저장 버튼 클릭하여 rtb 파일 저장 후 해당 팝업 (New 클릭 후 열린 팝업) 닫기

5. Report Builder 팝업에서 Available Templates 영역에서 저장한 rtb 파일 선택
   Output Type : PDF 선택
   Browse... 버튼을 클릭하여 저장 위치 지정
   Run 버튼 클릭하여 이미지 생성

6. Browse... 에서 지정한 경로에 가면 images 폴더 아래에 이미지가 저장되어 있음.





+ Recent posts