* Oracle

Mode : Physical 

Database > Pre & Post Scripts > Model Level

1. Script Template 새로 생성 

2. Code 란에 아래 내용 삽입

 

%ForEachTable() { 

COMMENT ON TABLE %TableName IS '%EntityName'; 

%ForEachColumn() {  

COMMENT ON COLUMN %TableName.%ColName IS '%AttName';

}

 

* 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

}

}

 

 

참고 : Forward Engineer 에서 Schema Generation 할 때 첨부파일을 Option Set으로 설정



출처 : http://blog.naver.com/PostView.nhn?blogId=2zerox&logNo=90175801084&categoryNo=11&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=1

728x90
반응형

'Tools > ER-WIN' 카테고리의 다른 글

ERwin 설정  (0) 2014.04.01
Comment 로 Logical 만들기  (0) 2014.04.01
ERWIN TIP  (0) 2014.04.01
erwin index 명 설정  (0) 2014.04.01

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 %:NullOptionCOMMENT '%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\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




출처 : http://bryan7.tistory.com/71


728x90
반응형

'Tools > ER-WIN' 카테고리의 다른 글

erwin schema generation option  (0) 2014.04.01
Comment 로 Logical 만들기  (0) 2014.04.01
ERWIN TIP  (0) 2014.04.01
erwin index 명 설정  (0) 2014.04.01

이번에 7.3 으로 ER Win Version UP 했숨다~! 그거에 맞춰서 DB Oracle 에는 테이블에 Comment 컬럼이 있어요.
토드에서 테이블명 입력 후 F4 키를 누르시면 Table Description 을 볼 수 있습니다



이제 저녀석을 Reverse 해서 저 Comment 값을 Logical 로 변경하는 ER Win 작업을 해 보겠습니다.



* Reverse Engineer 를 사용하여 DB 내용 값을 긁어오기

1. Tools - Reverse Engineer.. 를 선택합니다.



2. 어떤 타입의 DB 내용과 Logical 도 함께 긁어올 것인지 Physical 만 긁어 올 것인지 선택합니다.

 Oracle 10g 이므로 Oracle 을 선택 하였습니다 ^^
Next 를 누릅니다.



3. Option 을 선택 합니다.

전, 선택된 사용자만 가져올 것이기 떄문에 Owners 를 선택하여 사용자 스키마 명을 써 주었습니다

Infra 탭에서는 Primary Key(주키) 값 과 Relations (관계) 를 함께 보여줄 것이기 떄문에 체크 합니다.
Physical 및 Logical 의 이름은 모두 대문자로 볼 것 이기 떄문에 UPPER 를 선택하였습니다.

설정이 끝나면 Next 누릅니다.



4. Oracle Connection 화면 창이 뜨네요.

Database : Oracle 10g/11g  (오라클 10g 이므로..)
Authentication : Database Authentication ( 디비 사용자 할꺼임 -0-)
User Name : 사용자 명
Password : 패스워드

Connection String : SID
 명(자기 로컬일 경우)을 써 줍니다.

외부 데이터로 붙을 때에는  Connection String : nerv.kr/xe 이런식으로 써 줍니다.

< 이전 ERWin 4.1 버전에는 ip 주소 까지 써주었는데... 이번 7버전은 없네요 -_-;;; 
tns.ora 파일에서 설정해 준 값으로 가나 봅니다..>

설정이 끝나면 Connect 를 누릅니다.



5. Reverse Engineer 의 상태 값이 뜨네요... 막~ 읽힐꺼예요.. 조금 시간적 여유를 가지세요! ^-^



6. 중간 중간 물어봅니다. 아까 Infra 탭에서 Primary Key 와 Relation 에 대한걸 물어보네요... Yes 를 누릅니다.



7. 쨔-잔~!! ERD 가 뽑아져 나왔네요! ^-^




자, 바로 이어서 Logical 을 Comment 로 바꾸는거 나갑니다~! ^-^



* ERD Comment 를  Logical 로 변경하기

8. Logical 로 변경할 테이블을 선택 합니다. 
(선택하면 아래처럼 빨간 네모 박스처럼 선택된 테이블은 윗대가리가 까맣네요! ^-^)
전체 선택 할꺼면 Ctrl + A



9. 다음엔 무슨작업을 할꺼냐면... 중요!!!!!!!!

Logical 변경 값에 따라 Physical 값도 같이 변경 되기 때문에 둘을 분리 하는 작업입니다.
위에서 테이블을 선택 한 다음 마우스 오른쪽을 누른 후 Harden Physical Names 를 선택합니다.

그럼 Logical 이름과 Physical 이름이 따로 가게 됩니다 ^^



상태 창에 다음과 같은  Action 이 쭈욱~ 떨어지게 됩니다 ^^



10. 뭐가 변경되었는지 궁금하신지 보여 드리겠습니다. 

Model - Columns.. 를 선택합니다.



11. Rename  을 선택합니다.



12. Harden Physical Names 을 선택 하기 이전에는 다음과 같이 Attrivute* 이렇게 " * " 표시 모양이 있는데 Harden Physical Names  을 선택한 후에는 " * " 표시가 없습니다 ^^

변경전 >>



변경후>>



13. Physical 을 Logical 로 변경 합니다 (단축기는 Ctrl + Up & Down)



14.  Model - Domain Dictionary .. 를 선택합니다.



15. 
Edit Mode  : Logical 
Name Inherited by Attribute:* : %ColumnComment 
로 설정 합니다.

Name Inherited by Attrbute 의 값은 Macro Toolbox 를 누르면 선택이 가능합니다.



Attribute Macro  에 보면, 



%ColumnComment 를 선택 한 후 Insert Macro 한 후 Close  합니다.



16.  다음과 같이 %ColumnComment 만을 남겨두고 %AttDomain 이 남아 있다면 지우고 OK 를 누릅니다. ^^



17. Model - Attributes.. 를 선택 합니다. (계속 Logical 모드임)



18. 메시지가 뜨네요~! ^^ 확인을 누릅니다.



19. Reset 을 누릅니다.




20. 

Resetting Attribute : Reset all attributes in model  (ERD 전체 변경)
Select Properties to Reset : Name

을 선택 한 후 OK 를 누릅니다.

Only attribute PAGE_COMPONENT_ID 라고 되어 있는건 
: (해당 컬럼 값의 속성만 변경 - PAGE_COMPONENT_ID 컬럼 )
All attribute of entity PAGE_COMPONENT 라고 되어 있는건 
: (해당 테이블에 속해있는 속성만 변경 - PAGE_COMPONENT 테이블)



21. 테이블 내에서 중복되는 이름(Comment) 에 대해서 나옵니다. 
이때 Help 는 누르면 자세한 도움말을 볼 수 있습니다. (Ok, cancle, rename 에 관하여 영문 설명이 나옵니다)
(중복 안되게 변경해 주면 됩니다)



22. 이름으로 변경 된 화면을 감상 하실수 있습니다 ^-^ OK 를 눌러주세요!



23. Logical 일때의 모습입니다.



24. Physical 일때의 모습입니다.



테이블 명은 안바뀌는게 조금 아숩네요 -ㅅ-
혹, 테이블 명도 Comment 로 변경되는걸아시는분은 댓글 남겨 주세요~! ^_^

Comment 로 변경 안되더라도, 생 작업으로 변경 해 보도록 하겠습니다.


25. Model - Attribute 를 선택합니다.
Entity 에 변경할 테이블을 선택 한 후 Entity 이름 옆의 .... 를 누릅니다.



26. Name 이 있죠?!
저 Name 을 한글로 변경 한 후 OK 누르시면 됩니다 ^-^


출처 : http://joke00.tistory.com/168



728x90
반응형

'Tools > ER-WIN' 카테고리의 다른 글

erwin schema generation option  (0) 2014.04.01
ERwin 설정  (0) 2014.04.01
ERWIN TIP  (0) 2014.04.01
erwin index 명 설정  (0) 2014.04.01

테이블 생성스크립트 작성 ( Comment 포함)

선준비사항 (ERWin으로 생성된 Erd 필요, Logical 정보포함)

    1. Physical 모드로 변경 
    2. Database > > Pre & Post Scripts > Model-Level 선택

    3. New 선택 후 Script를 넣어줌(comment 같은것) 
    4. 아래의 내용을 Code에 기입후 OK 클릭

===로지컬을 코맨트로 사용하기===========================

%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() { 
        COMMENT ON TABLE %TableName IS '%EntityName'; 
        %ForEachColumn() {  
                COMMENT ON COLUMN %TableName.%ColName IS '%AttName'; 
         } 
}

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


Forward Engineering 시에  
    5. Tools > Forward Engineer/Schema Generation 선택 
    6. 우측에 Post-Script 선택 후 OK 
    7. 다시 Tools > Forward Engineer/Schema Generation 선택후 
        Preview을 선택하면 Erd의 Logical 정보가 해당코멘트로 달린 Sql 생성스크립트를 볼수 있음.

(mssql 2005에서는 안되는 듯) 
  
* 코멘트가 중복되므로 먼저 해제한다.

erwin 꺾임선으로 표시

** Orthogonal Lines = 직선 
** Diagonal Lines = 사선

 

 

 3) 코딩시작. 단 Sql문과 컬럼명에는 꼭 한글주석을 달도록

대처법 : Oracle 딕셔너리 정보를 이용해 table의 코멘트 정보를 자동생성하는 Generate를 만든다.                 1.system 계정으로 처리나 그에 걸맞는 권한을 가진 계정을 가질것

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

SELECT 
     A.COLUMN_NAME   AS columnName, 
     A.DATA_TYPE     AS dataType, 
     A.DATA_LENGTH   AS dataLength, 
     B.COMMENTS      AS comments, 
     A.NULLABLE      AS nullAble 
   FROM dba_tab_columns A, 
           all_col_comments B 
     WHERE A.OWNER = B.OWNER 
       AND A.TABLE_NAME = B.TABLE_NAME 
       AND A.COLUMN_NAME = B.COLUMN_NAME 
       AND A.OWNER = '개발중인 DB 계정'

       //AND 조건으로 테이블명 선택시 생성하게끔도 가능

      AND A.TABLE_NAME = #tableName#

===================================================== 
2. 각 프로젝트의 Framework을 이용해 기본 CURD를 주석과 함께 생성해내는 코드를 작성

 

 

 

----------------------------------------------------------------------------------------------------------------------------------

 

나와 같은 고민의 흔적들... 
아래는 http://www.dbguide.net 의 글을 발췌한 것인데 이제는 링크가 깨진 것 같아 보관용으로 포스팅. 
조윤배(iflight)  2004-04-19 22:26:25.0

엔 티티 30개 미만의 소규모 시스템을 개발하고 있습니다. 수많은 글들을 통해 데이터 모델링이 얼마나 중요한지 강조되고 있습니다. 데이터 모델링이 반영된 가장 기본적인 ERD. 프로젝트가 진행되는 도중에 발생하는 ERD와 실제 DB와의 괴리. 이것을 어떻게 좁힐 수 있는지 궁금합니다. ERWin을 통해 데이터 모델링이 이루어진 후, Forward Engineering을 통해서 데이터베이스에 각종 디비 객체를 생성합니다. 그 후 개발이 이루어지며, 밝혀내지 못했던 요구사항이 밝혀지며... 사소한 데이터타입의 변경은 물론 다양한 변화가 발생됩니다.

ERWin 의 Complete Compare 기능은 도저히 못쓰겠습니다. (잘못 쓰고 있는걸까요?) 이때.. 아무리 번거로워도 ERD 와 실제 개발서버의 DB와의 괴리를 어떻게 좁힐 수 있을까요? ERD 의 수작업 밖에는 해결책이 없는것일까요? 새로 리버스 엔지니어링 하기에는, 우리말로 새로 수정해 놓은 논리모델이 리버스엔지니어링 되지 않으므로 한번 ERD가 생성된 이후엔 DB로도, ERD로도 자동으로 업데이트를 기대할 수 없게 되어버렸습니다. 그리고 300여개, 3000여개의 엔티티가 사용되는 대규모 '공사'에는 이러한 문제가 어떻게 다뤄지고 있는지도 궁금합니다. 

남효석(whitememil)  07/03/22

Complete Compare의 기능은 충분히 유용합니다.


ERD 즉 데이터 모형과 실제 DB를 항상 동일하게 유지하는 것은 기업의 정보자산 관리를 위해 아주 중요한 문제입니다.

ERwin 의 Foward, Reverse Engineering 기능과 함께 Complete compare 기능을 이용하면 모델의 현행화를 쉽게 달성할 수 있습니다.

데이터 모형(ERD)와 DB Schema 간의 현행화는 CASE 툴을 통해서만 가능하다고 할 수 있습니다.  

실 례로 예전에 대림엔지니어링 모델링 프로젝트에서 담당 DBA에게 이 기능을 잘 교육시켜 모델을 통해 DB변경을 하도록 하였는데 이 DBA는 이를 잘 수행하여 수년뒤 다시 동 회사의 프로젝트를 수행할때 현행화되어 관리되는 모델을 입수할 수 있었습니다. 이는 후속 프로젝트 수행에 많은 도움이 되었습니다.


저 또한 수많은 프로젝트를 수행하면서 프로젝트 수행기간동안의 DB 모형의 변화에 따른 DB 변경을 ERwin을 통해 성공적으로 수행할 수 있었습니다. (ALTER와 ALTER로 변경이 불가능할 경우 기존 테이블의 RENAME한 후 새로 테이블을 생성하고 데이터를 이행해오는 형태로 DB 변경 작업내역을 CASE Tool이 제공해 주어 프로젝트의 변경작업 부하를 상당히 감소시켜 줌)


그 러나 CASE Tool을 사용하여 DB 구조 변경 작업이 손쉬운 만큼 실수로 인한 위험도 높다고 할 수 있습니다. 따라서 강력한 Tool을 사용하는 사람은 그 Tool의 사용법을 잘 익히고 사용해야 안전하게 목표한 바를 이룰 수 있다고 할 수 있지요


제가 이를 위하여 주로 사용하는 방법은 Complete Compare를 수행한 후 
Import와 Export한 변경항목을 신중히 결정하여 모델의 Import를 수행한 후 
DB 로 Export하여 반영할 항목은 일단은 ERwin에서 제공하는 변경작업용 sql을 복사하여 editor로 복사한 후 다시 한번 면밀히 검토하여 데이터를 날려먹는 불상사가 발생할 부분이 있는지를 잘 확인한 후 해당 sql을 실행하며 실행 시에도 error발생 시 정지하는 옵션을 유지하여 데이터 이행이 실패하고 RENAME된 테이블까지 날려버리는 불상사를 방지합니다. 
이런 오류가 발생하는 주된 경우는 새로 추가한 컬럼이 NOT NULL이거나 하여 
기존 데이터 이행 시 오류로 인해 이행이 되지 않는 경우가 대표적이라 할 수 있겠죠.

이 경우 CASE Tool이 만들어준 Insert문장에서 해당 컬럼 부분을 유효한 상수값으로(default)값이 들어갈 수 있도록 Insert 문장을 수정하여 실행하면 됩니다.  

그리고 reverse로는 논리 모델은 둘째하고라도 한글로 된 속성명과 실체명을 가진 논리 모델은 만들어 낼 수 없으므로 반드시 모델 수정 후 DB로 반영되는 프로세스를 유지하시는 것이 좋습니다. 
또 한 현행화 작업이 초반에는 피곤한 작업이나 DB가 안정된 이후에는 변경 항목이 줄어들어 더욱 쉽게 현행화를 할 수 있습니다. 이는 제가 수백개의 테이블을 모델링해야 하는 통신사와 금융업계의 프로젝트를 수행하며 모델링 초기시점부터 프로젝트 종료시점의 안정화 단계까지 진행하며 수년에 걸쳐 확인한 사항이니 ERwin의 기능을 충분히 숙지하고 DB 변경 SQL을 좀더 신중히 검토하며 작업을 수행하면 충분히 가능한 일입니다. 그리고 제대로된 CASE Tool이라면 분명히 지원되어야 할 기능이고 이런 CASE Tool의 기능의 지원이 있어야 대규모 프로젝트에서 모델링 초반에서 안정화 단계에 이르는 변화관리를 제대로 수행할 수 있는 것입니다.

김현(nixor)  04/07/07

저는 항상 이렇게 작업합니다. <br />1. 논리적모델링 확정(산출물 : 논리 ERD) <br />2. 물리적DB설계(산출물 : 물리적 ERD) <br />3. 전체DB스키마 제너레이트하여 스크립트 파일로 보관(트리거,스토어드 등 모두 포함) <br />4. 테스트 데이타입력모듈 작성/보관 <br />5. ERWin의 포워드 엔지니어링후, 테스트 데이터입력. <br />   -------------------------------> 여기까지가 개발준비과정으로 보통 1주일정도 소요된다.. <br />데이터이행등까지 합하면, 아주 늦으면, 2주정도.. <br />6. 물리ERD보면서, 개발진행(ERD프린트는 하지 않는다..문서관리 하기 힘드니까..ERWin그대로 열어놓고 작업한다..) <br />7. DB스키마 변경발생시, 변경부분을 작업중인 팀원들에게 일단 "변경후에" 작업하라고 지시한후, 산출물인 논리ERD수정/물리ERD수정 후, 팀원들에게 "지금 DB 다 날리고 새로 생성합니다" 라고 한후, 길어야 3분만에 새로생성.. 새로이 ERWin의 포워드엔지니어링 실시후, 테스트 대이터 입력 <br />8. 필요시 7번항목 반복 <br />9. 개발완료시, 테스트용 데이터 모두 삭제, 오픈준비 즉, 개발중에 관리할 산출물은 논리/물리 ERD, 테스트데이터입력모듈, 테스트데이터 4가지 입니다.. <br />몇 번 해보면, 일의 순서가 몸에 익을것입니다...즉 항상 개발중인 DB는 날릴 각오를 하고, 언제든지 변경이 반영된 스크립트로 순식간에 새로 생성할 준비를 해두면서 개발하면 정말 깔끔한 개발이 됩니다.. 요즘은 논리적 ERD는 엔코아의 DA# 모델러로 작업합니다...정말 논리적으로 정리가 잘되거든요(특히 서브타입같은경우..). DA# 디자이너는 SQL Server가 지원되지 않는것 같아서, 아직 사용하지 못하고 있습니다..

안희정(anheejung)  04/04/20

안녕하세요? 엔코아정보컨설팅의 안희정입니다. <br />ERD와 실제 DB의 동기화에대한 자동화에는 근본적인 한계점이 있다고봅니다. <br />테 이블은 개체로 변환하더라도 테이블들간에 Referential integrity Rule을 적용해놓지 않으면 데이터베이스 딕셔너리로부터 그 테이블들간에 릴레이션쉽까지 자동화해서 표현할 수 는 없을 것 입니다. 하지만 꼭 필요한 일부 경우에만 RI rule을 적용하여 운영하는 경우가 많은것이 현실 입니다. <br />또한 ERWin 의 경우는 물리적인 테이블하나가 곧 엔터티 하나와 대응되는 논리모델과 물리모델이 같은 구조로 되어있으면서 논리모델은 속성명으로 물리모델은 컬럼명과 데이터타입을 볼수 있는 형태로 되어있지만 엄밀히 말해 논리모델 = 물리모델은 아니므로 논리모델에서 하나로 통합된 엔터티가 물리적인 측면을 고려하여 n개의 테이블로 생성될수 도 있으므로 논리모델과 물리모델을 각기 표현해주는 저희 회사의 DA# Modler와 Designer에서는 데이터베이스의 구조만으로 자동으로 완벽한 논리모델을 표현하는데는 한계점이 있다는 것입니다. <br />물론 DB 스키마와 물리ERD를 compare해서 차이점을 notify하는 기능은 지원해야하지만 오로지 툴에의존해서 논리모델을 얻어낸다는것은 무리가 있다고 봅니다. <br />또 한 서브타입의 표현등 인간의 판단이 들어가는것까지를 수작업이라고 보신것인지는 모르겠습니다만, 제가 컨설팅한 사이트의 예를 들어보면 DB에 오브젝트를 생성할 수 있는 권한을 가진 user와 개발자들이 사용할 user를 분리하여 개발자들에게는 그 오브젝트에대한 DML만 사용할 수 있는 권한을 부여하고 데이터모델은 한명의 책임자를 통해 관리하므로써 요구사항변경등에 따른 모델의 변경이 있을때는 논리모델 ERD에 먼저 반영을 한후 Designer를 통해 변경된 컬럼명과 데이터타입정보만 maintenance 하므로써 오브젝트생성권한의 user로 Forward Engineering을 통해 오브젝트를 생성하도록 하여 실제DB와 ERD를 동기화하도록 하였습니다. <br />변경사항이 발생했을때 DB 오브젝트부터 변경하는것이 아니라 우선적으로 ERD에 반영을 한후 오브젝트를 생성하는것이 괴리를 최대한 줄일 수 있는 방법이라고 봅니다.

 

 

 

ERWin에서 관계선 위치 직접 변경하기

[개요]

ERWin을 쓰다보면, 관계선(Relation Line)의 위치를 변경해야할 경우가 발생한다.

그럴때 직접 마우스로 드래그해서 위치를 변경하려고 하면 변경되지 않을 경우가 있는데, 그건 옵션에서 수동으로 변경되지 않도록 설정이 되어 있기 때문이다.

수동으로 위치를 직접 변경하고 싶으면 아래와 같은 절차에 따라서 옵션을 변경하면 된다.

1. 메뉴 > Format > Preferences...로 이동

2. Layout 탭 > Relationship Line Layout 에서 Allow menual layout 를 체크

3. OK 클릭

<출처: http://blog.naver.com/PostView.nhn?blogId=hushath&logNo=100019067680 >

 

 

 

 

 

 

 

 

 

 

 

 

대부분 디비 스크마 설계시에 ERWIN을 사용하는데요...

설계만 ERWIN에서 하고 설계 내용을 적용할시에는 직접 오라클에 접속을 해서

하더라구요. 그러니까 예를 들어 설명을 하면 ERWIN에서 새테이블을 생성하고

이것을 다시 오라클에 접속을 해서 테이블을 생성하는 개발자로 많이 보았습니다.

하지만 ERWIN에는 자신의 로컬피씨에 있는 ER1파일과 오라클 디비 서버와 접속을 해서

바로 반영할수 있는 기능이 있습니다.

메뉴에 Tools 아래에 다음과 같은 메뉴가 있습니다.

Forward Engineering/Schema Generation

Reverse Engineering

Complete Compare

설명을 하자면~

Forward Engineering/Schema Generation   

자신의 피씨에 있는 er1 파일을 오라클 디비서버에 반영합니다.  주로 처음 데이터베이스 생성해서

테이블을 만들때 사용합나디.

Reverse Engineering

오라클 디비서버에 있는 내용을(테이블, 프로시저등등...) 자신의 로컬피씨 er1으로  내려 받아 생성합니다.

Complete Compare

로 컬피씨에 있는 er1파일과 오라클 디비서버와 객체를(테이블, 컬럼, 프로시저 등등...) 비교합니다.로컬피씨에 er1파일을 오라클 디비서버로 반영할수 있고 반대로 오라클 디비서버에서 로컬피씨의 er1파일로 반영할수 있습니다.이 글을 읽는분이 대부분 개발자 이므로 자세한 옵션 기능은 생략하겠습니다.몇번 시행 착오를 겪고 하다보면은 바로 할수 있으리가 생각합니다.

   

참조: 
http://www.okjsp.pe.kr/seq/99380 
http://chez.egloos.com/1719907 
http://www.genesis.co.kr/php/technote6/board.php?board=freeboard


728x90
반응형

'Tools > ER-WIN' 카테고리의 다른 글

erwin schema generation option  (0) 2014.04.01
ERwin 설정  (0) 2014.04.01
Comment 로 Logical 만들기  (0) 2014.04.01
erwin index 명 설정  (0) 2014.04.01


erwin index 명 설정

* Menu > Tools > Names > Model Naming Options

 

* Name Mapping Tab에서

ObjectType 가  Key Group to Index 인 MacroName (%KeyName)부분을 변경

 

* 스크립트 변경

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

 

적용 예)

tablename : SELF_TEST

CREATE UNIQUE INDEX IDX_SELF_TEST_PK ON SELF_TEST
(SELF_TEST_SEQ);

ALTER TABLE SELF_TEST_DVC_MNG

ADD CONSTRAINT  IDX_SELF_TEST_PK PRIMARY KEY (SELF_TEST_SEQ);

 

%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)}

 

적용 예)

CREATE UNIQUE INDEX PK_SELF_TEST ON SELF_TEST
(SELF_TEST_SEQ);

 

ALTER TABLE SELF_TEST
ADD CONSTRAINT  PK_SELF_TEST PRIMARY KEY (SELF_TEST_SEQ)

[출처] erwin index 명 설정|작성자 쩡동


728x90
반응형

'Tools > ER-WIN' 카테고리의 다른 글

erwin schema generation option  (0) 2014.04.01
ERwin 설정  (0) 2014.04.01
Comment 로 Logical 만들기  (0) 2014.04.01
ERWIN TIP  (0) 2014.04.01

+ Recent posts