제니시스기술 AllFusion ERwin Data Modeler r7 Allfusion ERwin Data Modeler r7 Tool Guide the best easy choice 1
1. 문서소개및작업환경... 3 1.1 AllFusion ERwin Data Modeler r7 실행... 3 1.2 작업창설명... 4 1.3 지원되는표기방식... 5 1.4 Tool Box 설명... 5 1.5 새로운모델생성... 6 1.6 ERwin Diagram 저장... 6 2. Logical Modeling... 14 2.1 Entity 생성... 14 2.2 Attribute 생성... 16 2.3 Relationship 생성... 20 2.4 Subject Area ( 주제영역 )... 29 2.5 Stored Displays... 31 3. Physical Modeling... 34 3.1 Physical / Logical Model의표현... 34 3.2 Table 관리... 36 3.3 Domain 관리... 37 3.4 Column 관리... 40 3.5 View Table 관리... 45 3.6 모델의표준화... 47 4. Transform... 52 4.1 Transform 정의... 52 4.2 Transform 기본원리... 56 5. Forward Engineer / Reverse Engineer / Complete Compare... 79 5.1 Forward Engineer... 79 5.2 Reverse Engineer... 82 5.3 Complete Compare... 85 2
1. 문서소개및작업환경 이문서는 ERwin의매뉴얼을기반으로하여모델링에과정에대하여다루고있다. 표기방식은정보공학표기 (IE; Information Engineering) 로설명되며자세한 ERwin의기능설명은물론, 모델링작업을하면서꼭필요한기술팀을가이드하도록하겠다. 하지만자세한 ERwin 사용방법은포함되어있지않으므로매뉴얼을찾고하도록한다. 1.1 AllFusion ERwin Data Modeler r7 실행 시작 > 프로그램 > CA > Allfusion > ERwin Data Modeler r7 에서 ERwin Data Modeler r7 을선택하 면 ERwin 이실행한다. 3
1.2 작업창설명 AllFusionERwin DM Menu and Toolbars Model Explorer Diagram Windows Action Log Advisories Pane 항목기능설명 Toolbars 모델링작업을빠르게진행할수있도록자주사용하는기능이있으며선택 여부및위치이동으로관리할수있다. Advisories Pane 사용자가현재진행한작업정보를보여준다. Model Explorer 모델내의탐색기역할을하며, 각 Object 는 Hierarchy 구조로 Drag and Drop 방식으로추가할수있다. Action Log 실시간으로사용자가작업한내용이기록되며. 선택지점에서 Undo/Redo 및반전 (reverse) 작업을할수있다. Diagram Windows 이곳에사용자는 Graphical 하게모델링작업을진행할수있다. 모델을생 성하면기본적으로창이름이 Display1 으로설정되며 Stored Display 를통해 동일모델을다양한관점의 View 로추가할수있다. 4
1.3 지원되는표기방식 ERwin 에서지원되는표기방식은두가지이다. 첫번째로정보공학표기방식으로서모델링할때일반적으로사용되는 IE(Information Engineering) 방식이고두번째로는미합중국공군에서개발한프로젝트표준안인 IDEF1X(Integration DEFinition or Information Modeling) 방식이다. ERwin 을설치한뒤, 사용자가설정을하지않는다면기본적으로 IDEF1X 방식의표기법으로보여지게된다. 우리는 IE 방식으로모델링작업을할것이므로변경해보자. 변경하는방법은 Model 메뉴에서 Model Properties 를클릭한뒤, Notation 탭에서 IE 를선택하면된다. 1.4 Tool Box 설명 ERwin Toolbox: 데이터모델을만들고편집할수있는기능이포함되어있다. 아이콘 Toolbar Name 설명 <Logical DM Toolbox> <Physical DM Toolbox> Select Entity / Table Exclusive sub-category View Table Relationship 모델의오브젝트선택엔티티 / 테이블생성일반화 ( 배타 / 포함 ) 관계를표현뷰, 물리뷰테이블생성관계선을그릴때사용 5
1.5 새로운모델생성 ERwin을실행하고 File메뉴에서 New버튼혹은 create model 아이콘 ( ) 을선택하면새로운모델을생성할수있으며나타나는화면은다음과같다. Logical, Physical, Logical/Physical 세가지가있다. 논리정보만으로구성되는모델생성하려고할때에는 Logical 타입을선택하고, 물리정보만으로구성되는모델을생성하려고할때에는 Physical 타입을선택하면된다. 우리는 ERwin 모델의전형적인타입으로, 하나의모델에하나의 Logical 타입과 Physical 타입으로구성된 Logical/Physical 복합타입을선택한다. Local 에저장된 Template 모델을이용하여모델링작업을하려고한다면 Browse File System 버튼을클릭하여새로운모델을생성할수있다. Browse AllFusion MM버튼을선택하여 Model Manager 에저장되어있는 Template 모델을이용하여새로운모델을생성할수도있다. Target Database를선택하여 OK 버튼을클릭한다. 1.6 ERwin Diagram 저장 File > Save 나 Save As를선택하면아래의대화상자가나타난다. 디폴트로 *.erwin(4.1이하버전은 *.er1이다.) 파일형식이제공되나 erwin_tmpl(4.1이하버전은 ert이다.), xml 형식도지원한다. ERwin Data Modeler r7에서는하위버전 ERwin 4.1버전의파일로저장과오픈이가능하다. 또한 Import 기능을이용하여 3.x 모델을오픈할수있다. 6
[Tip] Template 파일적용 ERwin Template 파일을사용함으로다른모델에 ERD 를생성, 설계하는과정에서재사용성을높일 수있고일관성있는모델을생성할수있다. 1. Template 파일의효용성 1) ERD생성이수행되기전 Template파일을이용하여모델표준관리 - Model Properties, 도메인, Display Setting, Font & Color Setting, UDP등 ERD모델의전반적인사항을설정하여 Template파일을생성한뒤, 해당 Template을공유하여일관성있는모델을설계하는최적의방법을제공한다. 2) ERD 생성이수행된후모델표준관리 - Template 파일을이용하여, 작성되어있는모델을 Add Model Source / Link Model Source, Complete Compare 등을이용하여 Template 파일에작성된 ERD 를가져와야한다. 3) AS-IS 모델을 Reverse 작업을할경우에도저장해둔 Template 를이용하여표준형식에맞게모델 을가져올수있다. 2. 작성된 ERD 에 Template 적용하는방법 7
1 적용할 Template 파일을생성하여저장해둔다. Model Properties, Domain 정보, Stored Display, Display Option, Font 및 Color 등전반적인 ERD 의 Template 를설정하고저장시에 erwin_tmpl 파일로저장한다. Domain 정보를가져올때에는기준이필요하다. 2 작성된 ERD의도메인을모델에가져올수있다. 표준에생성되어있는 Domain과작성된 ERD에있는 Domain의중복여부를확인해야한다. 중복명칭의 Domain이있으면 Domain_000 등의 object ID가붙어서 Domain이생성된다. 작업순서는 Tools메뉴의 Add Model Source를실행시킨다. 8
Load 를 Click 하여가져올 ERD 를선택하고 Add 버튼을클릭한다. 작성된 ERD 의도메인을모델에가져오지않을경우, 위스크린샷과동일하게 Source Model 을 Load 하여 Model 을 open 하는과정까지는같다. 단지다음단계에서아래와같이 Domain 부분을 제외시키면된다. Domain 을제외하고 Add 를실행시키면 Processing 후작업이완료된다. 3 Complete Compare 를통한 Template 표준파일에 ERD 모델을통합한다. Template 형식의 Model 을 Open 하고 Tools 메뉴에서 Complete Compare 를실행한다. 9
위스크린샷의 Load 를통해가져올 ERD 를선택한다. 다음으로넘어가면아래와같이 Type 을선택한다. Option Set 을 Setting 해줄때, 우선 Domain 을 Check 를해제한다. 아래로스크롤을이동하면 Subject Area 가있는데, 이는 Check 해주어야 ERD 의 Subject Area 를가져온다. 나머지는 Next 진행하여 Compare 를실행한다. 10
4 화면구성은총 3개의 Pane으로되어있는데가장왼쪽은비교항목이다. 가운데는 Template파일을 Left Model Source에두었기때문에가운데정보이고, 마지막오른쪽은 Right모델로생성된 ERD를가져온정보다. 최상위의 Model Level에서화살표를왼쪽으로이동시키면작성되어있던 ERD의내용들이 Subject 를포함하여모두 Template파일로이동하게되며, 해당파일을다시저장하면 ERwin파일로저장하여관리할수있다. 3. Template 형식을적용하여 Reverse 작업 전제조건으로 Template 파일이생성되어있는상태여야한다. 1 Tools 메뉴에서 Reverse Engineer 를실행시킨다. 11
New Model Type 을선택하고, Reverse 받을 Target Database 를선택한뒤위에표시된 Browse File System 을클릭하여 Template 파일을가져온다. 12
2 열기를수행하는순간바로 Reverse Engineer 의 Option Set 을설정하는다음화면으로이동한 다. Reverse Engineer 를진행하는방식과동일하다. 이때주의해야할사항은 Template 파일이 Logical / Physical 복합모델상태의 Template 라면 New Model Type 에서 Physical 을선택하고 Browse File System 을선택하면아래와같은메시지가나타 나고다음단계로진행되지않는다. 즉, Reverse 받아생성할 Model Type 과 Template 파일의 Model Type 이일치해야한다. 3 마지막으로사용했던 Template 파일은 Reverse Engineer 실행시킬때보여진다. 이를이용하여다른 DB 의 AS-IS 모델을분석할수있다. Template 파일은아래쪽에 Remove 를이용 하여제거할수있다. 13
2. Logical Modeling 2.1 Entity 생성 엔티티는아래와같이엔티티명, 기본키 (Primary Key) 속성, 기본키가아닌 Non-Key 속성영역으로 나뉘게된다. 영역간의이동은 Tab 키를통해움직일수있다. 기본키 (Primary Key) 속성 기본키가아닌 Non-Key 속성 툴박스의엔티티툴을마우스왼쪽버튼을클릭한후 Window Diagram 의원하는위치에클릭을 하면엔티티가나타난다. 한번의클릭으로다수의엔티티를생성하기위해서는 Ctrl + Entity 를선 택하면된다. Entity를선택하고마우스오른쪽을클릭 하여 Entity Properties를선택하여 Entity 의 Editor 를관리할수있다.. 항목 설 명 Definition 엔티티의정의사항을기술한다. Note 엔티티세부정보를기술한다. UDP 사용자가정의한속성을기술한다. Icon 아이콘을설정한다. History 엔티티의 History를확인한다. 14
UDP 는 Definition, Note 이외에항목을추가하고자할때이용할수있으며, 단순히 Text 를입력하 는 Editor 외에여러타입을지원한다. 한번아래와같이 UDP 를생성해보자. UDP 탭페이지에서 버튼을클릭하면 UDP 항목을만들수있는창이나타난다. 항목설명 Name UDP 항목명을입력한다. Type UDP Type 을선택한다. - Data : 날짜입력 - Int : 정수입력 - Real : 실수를입력 - Text : ASCII 텍스트입력 - List : 리스트박스를사용 - Command : 첨부문서연결 Default 기본값을입력한다. Descript.. Description 을입력한다. List Type 사용시콤마 (,) 로구분하며설 정한 UDP 항목은모든엔티티에동일하 고, 각각의값을입력하면된다. 15
2.2 Attribute 생성 Entity 를선택하여 Tab 키를눌러 Attribute 이름을입력한다. PK 가여러개인경우 Enter 키를눌러추가할수있다. 일반속성을입력하기위해 Tab 키를눌러 Non Key 영역으로이동한후 Attribute 이름을작성한다. 추가 Attribute 를작성해야할경우, PK 추가와동일하게 Enter 키를이용하여추가할수있다. 1 2 3 4 Attribute Editor 에서는 Attribute 를생성, 도메인할당, Definition, Note, UDP 를입력할수있다. 또한 Key Group 을등록할수있다. 엔티티를선택후오른쪽버튼을클릭하고 Attributes를선택하면 Attribute Editor가나타난다. 속성추가, 속성명변경, 속성삭제를할수있으며, Reset 버튼을통해속성에대한초기화작업을할수있다. 1 General 탭페이지에서는각 Attribute마다 Logical Domain을할당하고, Primary Key 체크박스를이용하여 Attribute에 PK를할당할수있으며, Logical Only 체크박스를선택하면 Physical Model에서해당속성이보이지않도록한다. 2 Datatype 탭페이지에서는속성의데이터타입을지정해줄수있다. 3Constraint 탭페이지에서는 Validation Rule, Default Value를생성할수있다. (Validation Rule, Default Value 에대한자세한설명은 Physical 쪽에서할것이다.) 16
4 Key를등록하려면 Key Group 탭페이지를선택하고버튼을클릭하여 Key Group Editor로이동한다. (Key Group은 PK, AK, IE와같은 Key 들의집합을의미한다.) 5 New 버튼을클릭하여 Key Group 타입을선택 하면 Default 이름이생성되며, Key Group 이름은 수정할수있다. 6 생성된 Key Group에포함시킬 Attribute를선택하고 Key Group Members로이동시킨다. 생성한 Key Group에대해서이름을변경하거나키를지울수있다. 또한 Definition, Note, UDP를활용하여 Key에대한자세한정보입력할수있도록지원한다. Key Group 을수정하려면 Key Group Membership 에서옵션을선택 / 해제를통해등록및변경, 삭 제가가능하다. 17
[Tip] 속성 / 컬럼순서맞추기 ERwin r7은속성 / 컬럼순서가따로나뉘어관리된다. 실질적으로 ERwin r7에서관리하는순서는속성 / 컬럼 / Physical 순서이다. (Physical Order 는 ERwin에서속성이실제로추가된순서를말한다.) 속성순서와컬럼순서를동일하게관리하기위해서는아래와같은방법으로작업해보도록하자. 1) 컬럼순서 (Physical) 기준으로속성순서 (Logial) 를맞추기위해 Logical 영역의 Attribute Editor 를선택하여 Reset 버튼을클릭한다. <Logical> <Physical> 2) Reset Attribute Property 창에들어와서 Reset Order 버튼을클릭한다. 18
3) Reset Option 창이뜬다. 첫번째옵션은현재선택한엔티티만컬럼기준으로속성순서를업데이트하는것이고, 두번째 옵션은전체모델의엔티티를컬럼기준으로속성순서를업데이트하는것이므로원하는옵션을 선택한다. <Logical> <Physical> 속성을기준으로컬럼순서를맞추려면 Physical 영역에서위와동일한방법으로진행하면된 다. 19
2.3 Relationship 생성 1) 식별관계, 비식별관계 관계란두 Entity 사이의업무규칙, 제약조건등을표현하는것이라고정의내릴수있으며아래 와같은유형으로분류할수있다. Relationship 타입 Parent Entity 에대한 Child Entity 의의존성 Identity Existence Identifying Yes Yes Non-Identifying Mandatory No Yes Non-Identifying Optional No No Many-to-Many N/A N/A 식별관계란부모엔티티의 PK들이자식엔티티의식별자일부로형상되어있기때문에자식엔티티의식별이부모엔티티에게종속된다. 일반적으로반드시부모엔티티가존재해야자식엔티티가존재할경우. 자식엔티티로부터상속받은다른엔티티에주식별자가상속되어야할경우혹은업무적으로엔티티간에강한종속관계로연결되어야할때식별관계를맺게된다. 반면비식별관계는부모엔티티의 PK가자식엔티티의기본키의일부가아니기때문에부모엔티티에의해식별되지않는비종속관계이다. 부모엔티티의주식별자가여러개고주식별자속성모두가자식엔티티에주식별자그대로상속이필요하지않고부분적으로만참여되길원할때비식별관계를맺으면된다. ERwin ToolBox 에서네번째버튼인실선아이콘이식별관계선이고, 여섯번째버튼인점선아이 콘이비식별관계선이다. Non Identifying Relationship Identifying Relationship 20
관계선을생성하기위해서는 Toolbox 에서원하는 Relationship 을선택한뒤, Parent Entity 와 Child Entity 를차례대로클릭한다. 마우스로관계선을 dragging 하여재배치할수있다. 2 2 1 3 이예에서회원에등록되지않은비회원이주문하는것이가능한경우, 회원이라는부모엔티티가존재하지않아도자식엔티티가존재할수있다. 관계선에서마우스오른쪽버튼을클릭하여 Relationship 를선택하면아래와같은화면이나타난다. General 탭에서는 Verb Phrase, Cardinality, Relationship 타입을변경 (Identifying/Non-Identifying, Nulls Allowed/No Nulls) 등을할수있다. 이대화상자에서는대부분 Cardinality와 Relationship Type을설정한다. Cardinality는두테이블에서레코드들의메칭정보를보여주게되는데옵션을바꾸어가면서실제다이어그램에서의바뀌는모습을확인해보도록한다. 위의예에서회원이주문을한번, 혹은여러번을할수도있고, 하지않을수도있기때문에첫번째 Zero, One or More 옵션을선택하면된다. 그리고 Verb Phrase 에서부모와자식간의관계, 자식과부모와의관계에대한설명을작성함으 로써, 관계에대한가독성을높일수있다. 21
Relationship Type 에서는회원테이블과주문테이블은한명혹은여러명의회원이주문을할수도있고, 비회원이주문할수도있으므로부모엔티티가존재하지않아도자식엔티티가존재할수있는비식별관게에 Null을허용할수있는관계를형성을할수있다. 식별관계 (Identifying Relationship) 에서는외부키가키영역 (PK) 으로이동한다. 부모엔티티의 PK 들이자식엔티티식별자의일부를형성하기때문에이관계를식별관계라고한다. 즉, 엔티티의식별은부모엔티티에종속된다. 비식별관계 (Non-Identifying Relationship) 는점선으로표시되며역시부모엔티티를자식엔티티와연결하게되면외부키가자식엔티티 Non-Key 영역에놓이게된다. 22
2) RoleName ( 역할이름 ) RoleName( 역할이름 ) 은엔티티내에서속상 (Attribute)dl 하는역할을정의하는외부키속성의새로운이 름이다. RoleName 은새속성을선언하는데, 이속성의이름은외부키를부여하는관계에의해구현된 업무에관한서술문을설명하기위해붙여진이름이다. 1) 관계선에서마우스오른쪽버튼클릭하여 Relationship Properties 메뉴를선택한다. 2) Rolename 탭페이지에서 사원번호 속성 Rolename 을 주문자사번 이라고입력한다 3) 또다른 Relationship Editor 에서 사번 속성의 Rolename 을 수정자사번 으로입력한뒤 OK 버튼 을클릭한다. 23
3) M:M 관계 아래의예처럼 M:M 의관계선을이용하여주문테이블과목록테이블을만들어보자. Many-to-Many Relationship 이관계는업무적으로발생할수있으므로 Logical Modeling 에서는 M: M 관계를완전히허용하고있으나, 이를관계형데이터베이스에구현할수없기때문에 1: M의관계를풀어서 Associate Entity 를생성해야한다. 왜냐하면대부분의업무프로세스와상세정보가이 Associate Entity에서정의되기때문이다. M: M 관계를해소하는방법은다음과같다. M: M 관계선을선택하여마우스우측버튼 클릭후, Show Association Entity 를선택한 다. 24
Wizard Guide 화면이나타나면 다음 버튼을클릭한다 Transform Name 과 Definition 을입력 한다. 새롭게생성될 Association Entity의이름을입력한다. 기본적으로두엔티티명이합쳐진이름이보여진다. 계속나타나는화면에서 다음 버튼을클릭하고 마침 버튼을클릭한다. 옆의화면처럼주문엔티티와목록엔티티의 M: M 관계가각각 1: M 의관계로나뉘어지는것을볼수 있다. 25
4) 재귀관계 재귀관계란같은엔티티가부모엔티티와자식엔티티인경우이다. 재귀관계는모두비식별관계 여야한다. 아래의예를보면목록이라는테이블에재귀관계를형성한것이다. 이때, 목록번호라는속성에게단일화현상이발생한것을볼수있다. ( 단일화현상이란한 Attribute 가 Foreign Key 로서다른 Entity 로이동할때이미동일한이름의 Attribute 가 Entity내에존재한다면, 두개는하나의 Attribute 로합쳐진다.) 이렇게단일화된속성의뜻을명확하게하기위해 RoleName( 역할이름 ) 을부여할수있다. RoleName( 역할이름 ) 을부여하는방법은 Relationship Properties 를클릭하면 RoleName 이라는탭이있다. RoleName 에주식별자를참조하는속성인 상위목록 을기술한다. 5) 일반화관계 (Supertype/Subtype 관계 ) 26
일반화구조 (Generalization Hierarchy) 는공통 Attribute를공유하는 Entity의계층그룹이다. Generic Parent(Supertype Entity) 는공통 Attribute와 Primary Key를포함한다. Category(Subtype Entity) 는개별적인 Attribute와 Foreign Key를포함한다. 일반화구조는 Entity의 종류 개념이존재할때생성할수있다. 일반화관계의특징을보면 Supertype Entity 와Subtype Entity 는 1:1 관계고, Subtype Entity 를구분할수있는구분속성은반드시존재해야한다. 또한 Subtype Entity에대한 Subtype 을지정할수도있지만복잡성이증가하므로한레벨로제한하는것이좋다. Exclusive Sub Category 1 3 Toolbox 에서 Sub Category Relationship 아이콘 2 4 을선택한뒤, Supertype Entity 인계좌엔티티를클릭한다. 그리고 Subtype Entity 인수표계좌엔티티를클릭하면 Symbol 이생긴다. 또다른엔티티 들간의 관계를 맺기 위해, Toolbox 의 Sub Category Relationship 아이콘을클릭하고, Symbol 을클릭한뒤, Subtype Entity 인저축계좌엔티티를클릭한다. 이와같은방법으로다른 Subtype Entity 와도관계를맺어보자. 일반화관계에는 Exclusive 와 Inclusive 두개의종류로나뉜다. Exclusive: Supertype 인스턴스가단하나의 Subtype 엔트리와관계를가지고있을때이 용한다. Inclusive(Non-exclusive): Supertype 인스턴스가하나또는그이상의 Subtype 엔트리와 관계를가지고있을때이용한다. 하나의계정은반드시저축계정이거나당좌계정이어야한다. 두가지이상일수없다면 Exclusive 관계로맺으면된다. 하나의계정은저축계정일수도있고당좌계정일수도있다. 아니면두가지모두일수도있다면 Inclusive 관계로맺으면된다. 27
[Exclusive 관계 ] [Inclusive 관계 ] 일반화관계에서구분자표시및 Exclusive, Inclusive 종류의선택은 Symbol 을클릭한후마우스 오른쪽버튼을클릭하여 Subtype Relationships 를선택하면아래와같은 Subtype Properties 가나 타난다. 이를통해 Exclusive / Inclusive 타입을선택할수있고, 구분자속성을지정할수있다. 28
2.4 Subject Area ( 주제영역 ) Subject Area 란, 하나의모델에는엔티티가수십개, 수백개가존재하는데이를비즈니스단위혹은프로세스로분류하는것이다. Subject Area를통해업무적으로관련되어있는 Entity, Relationship 등의정보들만확인하고작업할수있기때문에편리하다. 각 Subject Area에서 Object 의추가, 수정, 삭제등의작업한내용이전체 ERD에반영되기때문에편리하고데이터베이스스키마를생성할때 Subject Area 별로스키마를데이터베이스에생성할수있으므로유용하다. 이때, object의추가, 수정, 삭제는실시간으로 Main Subject Area와 Subject Area에반영되지만위치정보의변경은반영이되지않는다. 일반적으로 Main Subject Area에는수백개, 수천개의 object 가있어서관리하는것이쉽지않으므로 Subject Area 별로관리가이루어진다. 그러므로 Subject Area 에서만위치정보를관리하면되므로편리하다. 디폴트로서데이터모델은 <Main Subject Areas> 가된다. Subject area 를생성해보자. 1) Model 메뉴에서 Subject Areas 메뉴를선택하거나아이콘을선택한뒤, new 버튼을클릭한다. 새롭게생성할주제영역이름 공급관리 를작 성한다. 29
Members 탭페이지에서각주제영역에해당 하는 Entity 를 Included Objects 쪽으로이동시 킨다. 특정 Entity를클릭하고버튼을클릭하면해당 Entity와관계된 Entity들을한꺼번에옮길수있다. 이때관계맺고있는레벨을선택할수있기때문에유용하다. Subject Area 를삭제할때는메뉴 Edit 에서 Subject Area 를선택하고삭제하려는 Subject Area 를선 택하고 Delete 버튼을클릭한다. 하나의 Diagram 에여러개의 Subject Area 를만들었다면 Subject Area 리스트박스에서이동하고 자하는 Subject Area 를클릭하거나 Model Explorer 창의 Subject Area 탭을통해서원하는 Subject Area 로이동할수있다. 30
2.5 Stored Displays Stored Display를통해모델을다양한배열로저장할수있다. 이것은서로다른배경지식이나요구사항을가지고있는사용자들에게다양한모델의형태를보여주는데효과가있다. Stored Display는각 Subject Area마다분리하여작성할수있으며, 각 Subject Area는자신만의 Stored Display 를가질수있다. 이것은화면아래부분의탭페이지로보여진다. Stored Display 생성해보자. Format 메뉴의 Stored Display Settings 을선택하면 Default 로 Display1 이라고적혀있을것이다. Rename 버튼을클릭후 Attribute 라고입력하고 New 버튼클릭후 Entity 라고입력한다. Entity Display 탭선택하고바탕화면에서마우스오른쪽버튼을클릭하여 Display Level 을 Entity로한후, 화면에서 Entity와 Relationship을재배치하여모델을정리한다. 사용자가보고자하는 Display Level 과 Display Option 을선택하여 Logical 과 Physical 각각구분하여관리할수있다. 31
그렇다면 Display Level 과 Display Option 에대해알아보도록하자. 바탕화면에서마우스오른쪽버튼클릭하여 Display Level 메뉴의 5 가지 Level 중원하는메뉴를선 택하여원하는형태로화면을구성할수있다. Display Level을통해보여줄수있는정보의 Level을정할수있다. Entity Level은전체모델의개괄적인형태를제공하여프로젝트의범위를설정할수있도록한다. Attribute Level은 Logical 모델을분석하고검사하는데기본적인작업환경을제공한다. Primary Level은모델러가업무간의관계를살펴보는데도움을준다. Entity마다충분한 Definition을정의한경우에는, Definition Level 로보는것이의미가있다. Icon Level은프리젠테이션용으로유용하게활용된다. 바탕화면에서마우스오른쪽버튼클릭하여 Entity Display 를선택한다. 각항목의선택여부에따라 Entity 에보여지는내용이달라진다 Entity: Rolename, Logical Datatype/Domain, FK Designator, AK Designator, Show Migrated Attribute 등을선택 Relationship: Verb Phrase, Cardinality, Referential Integrity 등을선택 32
[Tip] Default Fonts & Colors 옵션을이용하여 Foreign Key 에대하여색을다르게줄수있다. 1 Attribute 탭을선택한다. 2 Inherit Color From PK 체크를풀어준다. 3 원하는색을선택한다. 4 적용대상을선택한다. 5 확인버튼을클릭한다. 33
3. Physical Modeling 3.1 Physical / Logical Model의표현 Physical 모델에서는 Target Server의물리적특성을지원하며물리적인데이터모델과 Target Server의시스템카탈로그를동기화한다. ERwin Data Modeler는선택된타겟서버 DBMS에기초한물리모델을관리한다. 즉선택한 DBMS 에유용한 Column 옵션과 Physical storage properties를제공하는것이다. 또한인덱스옵션도타겟서버에맞게정의할수있다. 물리모델로의변환은메뉴에서 Physical 모드를선택함으로써쉽게변환이가능하다. Tip Layer 전환단축키 : Ctrl +, 34
만약 Target Database 를변경하고자하거나, 확인하려고한다면 Database 메뉴에서 choose database 메뉴를선택하도록한다.. 35
3.2 Table 관리 논리모델에서만든테이블의 Editor 를확인해보자. 여기서테이블생성 / 삭제 / 수정이가능하며, DB와의 Sync 작업및순서도변경할수있다. 각테이블에대한 schema 선택및 Physical Only 를지정해줄수있다. 논리모델에서관리하지않을테이블에대해서는 Physical Only 에체크해주면된다. 일반적으로 Forward Engineer 작업시, 모든테이블들이생성되도록 Generate 부분에체크가되어있으나생성하지않을테이블에는체크를해지해주도록한다. 36
3.3 Domain 관리 모델링작업을할때, 속성에대한데이터타입과크기, 제약사항을지정하는도메인작업은굉장히중요하다. 도메인을정의하여사용하면속성이아무리많아도일관된규칙에따라데이터타입과크기가부여되며프로젝트도중도메인이변경되었을때일관성있게관리할수있으므로모델의관리가용이하다. 유사한속성이많이쓰이고엔티티의개수가많거나다수의모델러들이작업하는경우에는반드시도메인이사용되어야한다. ERwin에서는이러한도메인을지원하기위해 Blob, Datetime, Number, String 의네가지기본도메인을정의하고있다. 일반적으로코드, 이름, 날짜, 전화번호등과같은도메인은공통속성이존재한다. ERwin 을통해 한번만들어보도록하자. 1) New 버튼을클릭하여도메인명 전화번호 를입력한다. 2) 우측 General 탭에서생성하려는 Domain Parent 를 String 으로지정해준다. 37
[User-Datatype] 에체크를하면해당도메인의데이터타입을통해서만데이터타입과크기를변경할수있다. 체크를하지않는다면, 각속성들의데이터타입과크기를 Column Editor 에서변경할수있다. 3) SQL Server 탭에서도메인의데이터타입과길이를지정한다. 3) 회원이라는엔티티의전화번호속성을전화번호도메인과매핑하는작업을해보자. 회원테이블을선택하고마우스우측버튼을클릭하여 Column.. 을선택하면 Column Editor 가오픈된다. 전화번호속성을선택한뒤, General 탭에서전화번호도메인을선택하면전화번호속성은전화번호도메인의데이터타입과길이를상속받는다. 38
도메인을수정하면해당도메인을매핑하고있는속성의데이터타입도같이변경된다. < 주의사항 > 하지만도메인을수정하지않고직접속성에디터창에서데이터타입에대한수정을가하면도메인 과속성의연관관계가끊어진다. 아래는회원이라는테이블에각도메인을매핑한것이다. 만일도메인을지정하지않으면 <Default> 도메인이지정된다. <Default> 도메인은특뵬히도메인을지정하지않는속성들을뜻하며, 도메인이설정되지않았으므로속성에맞는데이터타입을지정하면된다. 도메인이매핑되지않은속성들의데이터타입지정과관련된설명은아래 3.4 Column 관리 를참고하도록한다. 39
3.4 Column 관리 1) Column 의 Datatype 관리도메인이매핑되지않은속성들의데이터타입은기본적으로 Char(18) 로매핑되어있고이는각속성의성격에맞게데이터타입과크기를정의할수있다. 정의하는방법은다음과같다. 1 해당테이블을선택하고마우스우측버튼을클릭하여 Column Editor 를오픈한다. 2 해당속성에맞는데이터타입과사이즈를정의해준다. 40
3) Column 의 Validation Constraint / Default Validation Constraint란값이올바른지, 혹은올바른범위의값들이입력되었는지의체크제약조건이다. 테이블혹은컬럼에대해갖게되는값의범위를지정해줄수있다. ERwin 에서도 Table과 Column에 Validation Constraint 를설정할수있다. 이를통해특정 Table / Column에제한된데이터값을지정하기위한규칙 (Rule) 을생성하여이를 Schema 생성시생성한규칙에대해서자동으로 DDL 문을생성할수있다. 예를들어회원테이블의성별이란컬럼에업무규칙에따라 m 혹은 f 의값만갖도록제한해보자. 1 Model < Validation Rules 를클릭한다 2 성별 _Check 라고입력한다 3 Valid Value List 항목을선택한다. * User-Defined: 사용자가직접코드를입력한다. * Min/Max: 값의범위를정의한다. * Valid Value List: 허용되는값의목록을정의한다. 41
4 Valid Value List 에옆의그림과같이 입력한다. * Valid Values List 정의시 Valid Value에직접유효값을입력한다. 만약 Value 값이문자형값이라면 Quote를체크하고, 지정한 Value 값을포함하지않도록하려면스크립트에 NOT을체크한다. 5 SQL Server 탭으로가서 Generate As 영역에서 CHECK Constraint 을선택한다위의예는성별컬럼에적용되는제약조건을정의하는것이므로 CHECK Constraint 옵션을선택해야한다. Sp_bindrule 옵션은 Rule을만들때적용하는옵션이다. 6 Columns Editor 를오픈한뒤, 성별컬럼을선택한뒤, Valid 콤보상자에서 성별 _Check 를선택하여 Check제약조건을매칭시킨다. 42
Default 값에대해정의해보도록하자. 위에서성별이라는컬럼에 남자 라는기본값을생성해둔다면, 우리가인서트절에서성별컬럼을 특별히지정하지않거나, Default 를명시했을때남자라는기본값이사용될것이다. 1 Model < Default Value 를클릭한다. Default / initial Values 대화상자는기본적으로 Default 값을정의할수있도록 TIMESTAMP나 USER등의 Default Value가미리정의되어있다. 이들을사용하려면원하는컬럼에바로 Default 값을지정하면될것이다. 2 New 버튼을클릭하여 Default_Value_gender 라는이름의 Default Value 를생성한다. 3 SQL Server 탭에 m 이라고작성한다. Generate as 의옵션에서 DEFAULT 옵션을선택한다. Generate As에 sp_bindefault 옵션과 Default 옵션두가지가있다. Sp_Bidefault 방식은 Defaut 를데이터베이스안에 Object로써생성한뒤, 여러개의컬럼에바인딩시키는방법이다. 이는여러개의컬럼을대상으로동일한 Default 속성을정의하려고할때 sp_bindefault 옵션을선택하면된다. Default 옵션은일반적으로사용되는컬럼에 Default 속성을정의하고수정하는방법이다. 43
4 Columns Editor 를오픈하여컬럼을선택한뒤, Default 콤보상자에서 Default_Value_gender 를선택한다 44
3.5 View Table 관리 View 란데이터베이스사용자들이접근하도록테이블을이용하여가상테이블을구성하는데이터베이스오브젝트라는것을알고있을것이다. View Table 을생성하는방법은 Table 생성하는방법과동일하다. 부서와사원이라는테이블로부터 사원주소록 이라는 View Table 을만들어보도록하자. 1View 아이콘을선택하여새로운 View 를생성한후 View Table 을더블클릭한다. 2 View Table의이름을변경한다. FROM 절에가져올 TABLE 을 Attach 한다. FROM 절에가져올 Table을 Attach 한다. (FROM 탭에서뷰에사용된테이블들이보여지게된다.) 3SELECT 절에가져올 Column을 Attach 한다. (SELECT 탭에서뷰에사용된테이블의컬럼들이보여진다. 여기서뷰로구성될컬럼을선택한다.) 45
4 WHERE 절에조건을입력한다. WHERE 탭에서조회의조건을지정할수있다. 아래와같은구문을작성해보자. 부서. 부서코드 = 사원. 부서코드 5 SQL 탭에서 DDL문을확인 / 수정할수있다 SQL 탭에서완성된뷰의문장을볼수있다. User-Defined SQL 옵션에체크를하여사용자가직접 SQL 문장을수정할수있도록지원된다. 46
3.6 모델의표준화 Names(NSM) 기능은 Data Modeling의명명규칙에따라사용자가작성한용어사전을이용하여모델에씌여진단어를검사하고, 사전에정의된단어나약어등을모델에적용할수있도록제공되는기능이다. 따라서모델에사용되는 Object Name의정확성과일관성을제공한다. Data Modeler의용어사전은.nsm 파일로저장되며,.nsm 파일을모델에매핑하여사용하게된다. Naming Standards 기능은 Logical 모델에서 Physical 모델로변환시물리명을영문명으로자동변환할경우사용할수있다. 1) Names 명칭관리 1) Model Naming Option General 탭에서사용자가작성한용어사전 (.nsm) 파일을매핑할수있다. * General 옵션설명 * 항 목 기 능 설 명 Do not User Naming Standards File nsm 파일을사용하지않는다. Use File nsm 파일을모델과매핑한다. (Browser을통해 nsm 파일경로지정 ) Use Allfusion MM File Model Manager에저장되어있는 nsm 파일과매핑한다. Reload nsm 파일을다시읽어들인다. Edit Naming Standards Editor를실행한다. ( 용어사전편집 ) 47
Logical / Physical 탭에서는 Logical 모델에사용된 Object 명의대소문자표현방법과최대길이를지정할수있다. [Case Option] 항목설명 UPPER lower Initial 대문자로설정 소문자로설정 첫글자만대문자로설정 Logical 의 Maximum Length 는 254byte 까지가능하며, Physical 의경우는 Target DBMS 가받아들일 수있는최대길이와동일하다. (Oracle: 30byte, MS SQL: 128byte) Name Mapping 탭에서는 Object 들의 Name Rule 을지정한다. 항목설명 Macro Name Use G.. Abb.. Prefix Suffix 해당 Object 들에대한 Macro 를지정한다. NSM 을매핑한경우 Object 들에대해서적용여부를체크한다. Abbreviation( 영문풀네임 ) 인지 Alter Abb..( 영문약어 ) 로적용할지선택 접두어설정접미어설정 모델에사용되는이름이중복될경우 처리옵션을선택한다. 항목설명 Allow 중복을허용한다. Auto... 중복되면일련번호를붙여자동으로 Rename 한다. Ask 사용자가 Rename 한다. Disallow 중복을허용하지않으며중복되면 E_2 와같이 Default 로이름이부여된다. 48
2) Edit Naming Standards (.NSM 파일의생성 ) NSM 기능을통해용어사전 (.nsm) 을생성하고, 모델과매핑하여물리명을영문으로변환해보자. 1 Tools > Names > Edit naming Standards.. 를선택한다. 2 Logical / Physical 탭에서는 Object Name의명명규칙을설정한다. 그러나특별한경우를제외하고는사용하지않는다. 항목설명 Part 1, 2, 3, 4 단어의나열순서를나타낸다. Prime Modifier 1, 2 Class 중심어, 주제어 ( 예 : account, employee) 형용사, 부사혹은 Prime 과 Calss 를구분할수있는특정단어 데이터타입이나 Editor 의주요종류를묶어지칭하는단어 (date, code, name) 49
3 Glossary 탭에서용어사전을등록 한다. 항목설명 Word.. Abb.. Alterna.. 한글명입력 영문 Full Name 을입력 영문약어를입력 4 File > Save 나아이콘을통해 용어사전을저장한다. 5 Export 를통해 NSM 정보를 CSV 파일로생성할수있으며, Import 도 지원한다. 6 Use File 에서적용할 Nsm 파일을 선택하고 OK 를버튼을클릭한다. 50
7 용어사전에정의한대로물리명이영문으로자동변환된다. 8 만약 NSM 파일을매핑하였는데도영문명이변환되지않는경우에는 Model Naming Option 에서 Use Glossary를다음과같이설정한다. 선택한 Object에대해용어사전을 (Use Glossary) 을사용하겠다는의미이다. 51
4. Transform 4.1 Transform 정의모델내의 Object들은또다른구조의 Object Set으로변환시킬수있다. 그러한변환은모델내에서구조화되고저장된다. 일반적으로 Layer를설계할때이러한결정을내릴수가있는데예를들어비정규화시사용된다. ERwin에서는 DBMS의분산형태를고해해서 Entity, Table에대해자동으로변환할수있는다양한형태 (9가지) 의변환기능을제공한다. [ 지원되는 Transforms] Many to Many Transform Supertype Subtype Identity Supertype Subtype Roll Up Supertype Subtype Roll Down Vertical Partition Horizontatl Partition Roll Down Denormalization Roll Up Denormalization Column Denormalization 1) Many to Many Transform: M 대 M 관계를자동으로변환한다. 52
2) Supertype Subtype Identity: 일반화관계를부모 자식관계로자동변환한다. 3) Supertype Subtype Roll Up: 일반화관계에참여하는자식엔티티의컬럼을부모로올린다. Before (source Object) After (Target Object) Tip Source Object: : Transform 기능으로변환되기전의 Object Set 을의미한다. Target Object: : Transform 기능으로변환된후의 Object Set 을의미한다. 53
4) Supertype Subtype Roll Down: 일반화관계에참여한부모엔티티의컬럼을자식으로내린다. Before (source Object) After (Target Object) 5) Vertical Partition: 해당 Table 을수직분할한다. Before (source Object) After (Target Object) 6) Horizontal Partition: 해당 Table 을수평분할한다. Before (source Object) After (Target Object) 54
7) Roll Down Denormalization: 부모테이블의 Column 이자식 Table 로이동한다. ( 역정규화 ) Before (source Object) After (Target Object) 8) Roll Up Denormalization: 자식테이블의 Column 이부모 Table 로이동한다. ( 역정규화 ) Before (source Object) After (Target Object) 9) Column Denormalization : 한테이블이소유한특정컬럼이다른테이블로복사된다. Tip Column Denormalization에의해복사된컬럼은원본컬럼과연결되어있다. 원본컬럼을수정하면복사된컬럼에도수정사항이반영된다. 하지만복사된컬럼을수정하게되면원본과의연결이끊어지게된다. 이렇게되면원본을수정하여도수정사항이반영되지않는다는것을주의하자. 55
4.2 Transform 기본원리 Transform 작업을하려면반드시변환시킬 Source Object를선택해야한다. 그리고나서원하는 Transform Tool을선택해야한다. 그러면 Wizard가실행되며절차에따라진행하면된다. 변환이완료되면 Source Object는모델내에숨겨지며 Target object로대체된다. Target Object가 Source Object와거의똑같이보이지만, 그것은실제로 Transform 기능에의해새롭게생성된 Object이다. (Column Copy Transform은제외 ) Object의변환정보는 ERD상에서는확인할수없다. 그러나 Model Explorer를통해서 Transform 작업리스트및상세정보를확인할수있으며, 모델러는작업을되돌리거나고정시킬수있다. 1) Many to Many Transform 을이용한 M : M 관계의자동변환 1 M : M 관계선을선택하면 Many to Many Transform 아이콘을활성화된다. 이를클릭하거나관 계선을선택하고마우스오른쪽버튼을클릭하여메뉴에서 Create Association Table 을선택한다. 56
2 Many to Many Transform Wizard 가실행된다. 여기서다음버튼을클 릭힌다. 3 Transform 의이름과 Definition 을 입력한다.(Model Explorer 에서확인 가능한정보 ) 4 Many to Many 을해결할때자동 으로생성되는연관엔티티이름및 Definition 을입력한다. 57
5 변환정보를확인할수있으며, 마침을클릭해작업을종료한다. 6 Model Explorer 에서리스트를확인할수있으며 Properties 에서세부정보를수정할수있다. Tip : 변환전의 Source Object 보기 : 변환후 Target Object 보기 : 변환작업을취소한다. : 변환내용으로모델을고정시킨다. (Source Object를확인할수없다.) 58
2) Supertype Subtype Identity 을이용한일반화관계의자동변환 1 일반환관계 Symbol 을선택하고 Supertype Subtype Identity 아이 콘을선택한다. 2 Supertype / Subtype Identity Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 3 Transform의이름과 Definition을입력한다. Reflect Changes back to source objects Check옵션은 Target Entity / Table에서변환되는내용이 Source Object에반영되게하는옵션이다. 59
4 변환정보를확인할수있으며, 마침을클릭해작업을종료한다. 5 일반화관계가부모 자식관계 로변환된것을확인할수있다. 60
3) Supertype Subtype Roll Up 을이용한일반화관계의자동변환 1 일반환관계 Symbol 을선택하고 Supertype Subtype Roll UP 아이 콘을선택한다. 2 Supertype / Subtype Roll UP Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 3Transform 의이름과 Definition 을 입력한다. 61
4 변환정보를확인할수있으며, 마침을클릭해작업을종료한다. 5 일반환관계의하위 ( 자식 ) 엔티티 의속성들이상위 ( 부모 ) 엔티티의속 성으로포함된다. 62
4) Supertype Subtype Roll Down 을이용한일반화관계의자동변환 1 일반환관계 Symbol 을선택하고 Supertype Subtype Roll Down 아 이콘을선택한다. 2 Supertype / Subtype Roll Down Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 3Transform 의이름과 Definition 을 입력한다. 63
4 변환정보를확인할수있으며, 마침을클릭해작업을종료한다. 5 일반환관계의상위 ( 부모 ) 엔티티 의속성들이하위 ( 자식 ) 엔티티의속 성으로포함된다. 64
5) Vertical Partition을이용한엔티티의수직적분할 Target Table의컬럼형태는 Source Table에서분리된컬럼의 Set 이다. 한테이블의속성이많이존재하고이중자주조회하는컬럼들이있을경우, 자주조회하는컬럼들만또다른테이블로분리하려고할때많이사용된다. 테이블이름은디폴트로설정했을때 Source table 명 + 일련번호가붙는형태이다. 1 엔티티를선택하고 Vertical Partition 아이콘을선택한다. 2 Vertical Partition Transform Wizard 가실행된다 여기서다음버튼을클릭한다. 65
3 Transform 의이름과분할할테이 블개수, Definition 을입력한다. 4 Partition Name 이기본적으로생 성되며더블클릭을통해수정이가 능하다. 5 Partition Table 에포함될속성을 Attach 한다. (Partition Table 모두 ) 66
6 변환정보를확인할수있으며, 마침을클릭해작업을종료한다. 7 테이블이분할된것을확인할 수있다. 67
6) Horizontal Partition을이용한엔티티의수평적분할테이블의한세트로테이블의개수는원하는대로생성할수있다. 테이블이름은디폴트로설정했을때 Source Table 명 + 일련번호가붙는형태이다. Target Table의컬럼형태는 Source Table 과동일한컬럼 Set이며, 나뉘어진테이블에 Row의분리규칙을입력할수있다. 1 엔티티를선택하고 Horizontal Partition 아이콘을선택한다. 2 Horizontal Partition Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 68
3 Transform 의이름과분할할테이 블개수, Definition 을입력한다. 4 Partition Name 이기본적으로생 성되며더블클릭을통해수정이가 능하다. 5 변환정보를확인할수있으며, 마침을클릭해작업을종료한다. 69
6 테이블이분할된것을확인할수 있다. 70
7) Column Denormalization 을이용한 Column 복사 하나의컬럼으로 Source Column 에서복사해온것이다. 이름과속성은 Source Column 과동일하다. 1 복사할컬럼을선택하고 Column Denormalization 아이콘을선택한다. 71
2 Column Denormalization Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 3 Transform의이름과 Definition을입력한다. (Reflect Changes back to source objects Check 옵션을 check하면 Target Attribute가수정될때 Source Attribute가같이변경되며, 옵션이 Check되지않으면 Source Attribute가수정될때에만 Target Attribute를동기화해준다.) 4 Attribute 이름은자동입력된다. Definition 을입력한다. 72
5 Target Entity 를선택한다. 6 변환정보를확인할수있으며, 마 침을클릭해작업을종료한다. 7 Attribute가복사된것을확인할수있다. 이렇게컬럼을복사한경우원본컬럼을변경하면변경내용이복사된컬럼에동일하게적용된다. 73
8) Roll Up Denormalization을이용한 Table 역정규화관계를맺고있는두테이블이정규화되었을때데이터검색속도가느린현상이발생하는경우가발생한다. 이는테이블간에서로조인을걸어야하기때문에발생하는것으로이를방지하기위해테이블을역정규화할수있다. Roll Up Denormalization 은자식엔티티의속성들을부모엔티티로포함시켜역정규화를진행한다. 1 관계가있는두테이블을선택하고 Roll Up Denormalization 아이콘을선 택한다. 2 Roll Up Denormalization Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 74
3 Transform 의이름과 Definition 을 입력한다. 4 Target 테이블에반복되는레코드의 수를입력한다. 5 변환정보를확인할수있으며, 마 침을클릭해작업을종료한다. 75
6 주문품목의컬럼들이구매주문으로 포함된것을확인할수있다. ( 부모 테이블로이동 ) 76
9) Roll Down Denormalization을이용한 Table 역정규화관계를맺고있는두테이블이정규화되었을때데이터검색속도가느린현상이발생하는경우가발생한다. 이는테이블간에서로조인을걸어야하기때문에발생하는것으로이를방지하기위해테이블을역정규화할수있다. Roll Down Denormalization은부모엔티티의속성들을자식엔티티로포함시켜역정규화를진행한다. 1 관계가있는두테이블을선택하고 Roll Down Denormalization 아이콘을 선택한다. 2 Roll Down Denormalization Transform Wizard 가실행된다. 여기서다음버튼을클릭한다. 77
3 Transform 의이름과 Definition 을 입력한다. 4 정보를확인할수있으며, 마침을 클릭해작업을종료한다. 5 구매주문의컬럼들이주문품목으로 포함된것을확인할수있다. ( 자식 테이블로이동 ) 78
5. Forward Engineer / Reverse Engineer / Complete Compare 5.1 Forward Engineer ERwin Data Modeler는생성한모델의 Object(Table, Column, Index, Validation Rule, Default 등 ) 에대해서사용자가정의한옵션에따라 DDL 문장을생성할수있으며, DBMS로직접스키마를생성할수있도록지원한다. Forward Engineer 에서는 DDL을생성하고스키마를생성해주는 Schema Generation과모델에대해서검사를하는 Check Model 기능을제공한다. 1) Schema Generation Schema Generation 기능은모델의 Object들을사용자가정의한옵션에따라 DDL 문장을생성한다. DDL 문장은모델내입력된정보와사용자가정의한 Generation Option에의존하여생성된다. 따라서 ERwin에서스키마를생성할때는모든항목이 Option 이라는사실을주의해야한다. 2) Generation Option 설명 (MS SQL) Schema Table Column View 항목기능설명 모델전체즉스키마레벨의옵션으로사용자가정의한 Rule, Default Value, 스크립트와프로시저생성에관한옵션 Table 레벨의 Validation, DBMS가지원하는 Physical Storage와 Table 에대한스크립트와프로시저생성옵션이다 Column 생성옵션으로 Validation, Default Value, User Datatype 그리고 Physical order 가있다. ERwin은 Column에대한오더 ( 순서 ) 를두가지로관리하고있다. Column Order는 Logical 모델에서의속성순서를의미하며, Physical Order는 PK구분없이물리적인 Column Order를의미한다. 따라서 Logical 모델에서의속성순서대로테이블을생성하려면 Default로되어있는 Physical order 체크옵션을뺀다. View table 생성에관한옵션 Index 인덱스생성옵션으로 PK, FK, AK, IE, Physical Storage, Clustered 등을지원한다. 여기서한가지유의할점은 PK는자동인덱스생성으로옵션에서중복하여체크할필요는없다. Referential Integrity Primary Key와 Foreign Key를생성하는옵션이다. 즉관계선에따른제한조건을부여하는것이다. DDL문장은 CREATE 문과 ALTER문중선택할수있다. Foreign Key에대한옵션은 ALTER 문으로하는것을권장하고있다. ERwin의 ALTER문은테이블이모두생성된후문장이나오기때문에앞서생성되지않은테이블을참조하는오류를피할수있다. Trigger 관계선에의한트리거와사용자가정의한트리거를생성한다. 단 RI에서부여한 FK 제한조건이트리거보다우선한다. Other Option Constraint Name은 ERwin Data Modeler의이름규칙에따를경우사용하며 Quote Name은모든이름에큰따옴표가추가된다. Owner는 Table 각각에부여한 Owner 명이삽입된 DDL 문장을만든다. 79
3) Schema Generation 실행 1 Tools > Forward Engineer > Schema Generation 을선택한다. 2 Option 탭에서스키마생성옵션을선택할수있다. Target DBMS별로다양한옵션을제공한다. 항목설명 Filter Owner... Preview Print Report Generate 테이블선택가능 Owner 일괄생성 DDL문미리보기 DDL Script 출력 DDL Script 저장스키마생성 Summary 탭에서는옵션설정내용을확인할수있다. 이렇게설정한옵션은 Save를통해서해당모델의 Option Set으로저장할수있고, Save As 를통해.xml 형태로옵션을저장하여다른모델에서 Option Set을재사용할수있다. 또한특정테이블에대해서 DDL 문장을생성하고자할때는 Filter 기능을사용한다. 80
3 Preview를통해 DDL문을확인할수있다. DDL 문장은.SQL 파일로저장가능하며프린트와찾기 Option을통해문장을검색할수있다. 또한특정부분을선택하여복사, 붙여넣기도가능하다. 단이곳에서수정된사항은모델에반영되지않는다. Generate Button을선택하면 Connect 대화상자가나타난다. 4 DBMS 접속권한및 Object 생성권한이있는 User의이름과암호를입력하고해당 Database Name과 Server Name을입력한다. Database가있는서버가원격에위치하고사용자는 Client 라면 DBMS의 Client 버전이 Client PC에설치되어있어야한다. 그리고해당 DBMS 서버는물론 Client Network Utility(SQL 2000인경우 ) 에등록이되어야 ERwin Data Modeler를통해원격 DBMS에접속할수있다. 이와같은연결정보를입력하고 Connect 하면해당 DBMS에자동으로연결이되고스키마를생성하게되는데 Generation 중에러가발생하면해당스크립트에서멈추게하는 Stop If Failure가디폴트로설정되어있다. 이때나타나는에러메시지는 Erwin의에러가아니고해당 DBMS가보여주는에러이다. 81
5.2 Reverse Engineer 운영시스템의 Database 정보를분석하여모델 (ERD) 을생성한다. 이기능은운영 DBMS 또는 Platform에서새로운 DBMS, Platform, Client/Server로변환작업을할때이용될수있다. Reverse 대상은 Target DB 혹은 SQL DDL 스크립트파일이다. 이러한 Database 정보는 Table, Column, Relationship, Triggers, Index, Stored Procedure 등을포함한다. 1) Reverse Engineer Option 설명 항 목 기 능 설 명 Database DBMS로부터 Reverse 한다. Script File Script File로부터 Reverse 한다. System Object Reverse 대상을전체시스템객체로설정한다. 이옵션을체크하면사 용자가오너인 Table 뿐만아니라전체시스템 Object를가져온다. Table/Views Owned By [All] 오너에관계없이 Database 내의모든 Table, View를검색한다. [Current User] Database Connect Dialog에서접속하는사용자가오너인 Table, View를검색한다. [Owners (Comma Separated)] 정의한사용자가오너인 Table, View 를검색한다. 콤마로구분하여여러사람을정의할수있다. Infer 인덱스를기초로 Table의 PK와 Relationship을추론하는옵션이다. Case Conversion of Physical name / Logical Name Conversion 시대 / 소문자유형선택에관한옵션이다. [lower] 소문자 [UPPER] 대문자 [Mixed] 혼합 82
2) Reverse Engineer 실행 DDL Script 파일로부터리버스를해보자. 1 Tools > Reverse Engineer 메뉴를선택한다. 2 생성할모델의타입을선택한다. 3 Database Schema 정보를가져올 Target Database를선택한다. 4 Reverse 대상을 Script File 을선택 하고 Browser 를통해 File 을선택한다. 항목설명 System Object System Object까지리버스한다. All 모든 User의 Object를전부리버스한다. Current User 현재접속 User의 Object를리버스한다. Owner 해당 Owner의 Object만리버스한다. Infer Index와 Name을기준으로기본키와관계를추론한다. lower 소문자로리버스한다. Upper 대문자로리버스한다. Mixed 대 / 소문자혼합 5 Option 은사용자가정의할수있으나 Default 로두고 Next 를선택한다. 83
6 Script File 로부터정보를읽어들인 다. 7 Script File 을읽어모델이자동생성된것을확인할수있다. Tip Reverse Engineering 중다음과같은에러가발생할수있다. 1) SQL Script Parse Error : SQL DDL 문장이사용자가선택한 DBMS와맞지않을때발생한다. 2) Parsing Error : DDL 문장상의에러이다. 84
5.3 Complete Compare Complete Compare는모델간의비교및 DBMS, DDL Script와의비교를통해현재의모델과 Database를관리하는데매운강력한기능을제공한다. R7에서는 4.1 제품의 Complete Compare 기능에서한단계업그레이드되었다. 모델의세밀한정보까지도비교가가능하다. 예로예전제품에서는인덱스의 Sort Type (Ascending, Descending) 의비교가되지않았다. 모델과실스키마의 Sort Type이다름에도이러한부분을찾아주지못하였다. 하지만 R7 에서는이러한부분까지세밀하게비교가가능하다. 사용자가정의한비교옵션에따라각항목을비교하여차이점을그래픽하게보여준다. 이러한 Object 간의차이점은선택적으로 Synchronization( 동기화 ) 할수있다. ERwin에서는 Database Level 그리고 Model Level의비교가가능하다. 1) Physical Model Database / DDL Script 2) Logical / Physical Model Logical / Physical Model Complete Compare 기능은 Database 에이미데이터가있는경우도 Table 구조변경이가능하다. 이기능은내부적으로 Table 을갱신할때 Temp Table 을생성하고데이터를백업한다음원래의 Table 갱신한후에데이터를로딩하는과정으로진행된다. 85
3) Complete Compare 의실행 Physical 모델과 DDL Script File 간의비교를해보자. 먼저아래와같이 ERD 에수정이있다고가정하도록하겠다. (ERD 에서붉은색으로표시 ) 컬럼명변경 EMPNM EMP_NM GEN 컬럼 Length 변경 CHAR(2) CHAR(1) Compare 화면의각단계별로살펴보면, 1 Tools > Complete Compare > Compare 메뉴를선택한다. 2 Left Model은 Default로현재 Open 되어있는모델을선택하게된다. ( 최종 Resolve Differences Dialog 화면왼쪽에서나타난다.) 3 Right Model 선택단계에서비교대상을 Database / Script로선택한다. Load를통해 DDL Script File을선택한후다음을클릭한다. (Reverse Engineer를통하여 ERD를생성하게됨 ) 86
4 비교옵션을 Table로선택한다. 옵션셋을저장할수있으며재사용이가능하다. 비교항목에따라사용자가다양한옵션을선택할수있다. 현재모델은 Table만선택해도변경사항에대한비교가가능하다. 5 전단계에서선택된 Option Set에대하여 Left Model의 Object를 Filter할수있는단계이다. 오른쪽 Tree를확장하여보면 Table목록이나오는데, 변경된 Table만선택한다. Table 목록에서비교할 Table을선택할때에는아래와같은순서로 Table 을 Click해준다. 6 최상위에서모델을 Click 하면모든 Check 가사라진다 7 작업대상 Table 을 Click 한다 87
8 Right Model의대상 Object를 Filter 할수있으며, 위에서설명한바와같이동일하게선택한다선택이종료되었으면다음으로이동한다. 9 마지막단계인 Advanced Option단계이며, 비교시반영되는옵션을선택한다. 선택이종료되었으면, Compare 버튼을클릭한다. * 옵션설명 Options 옵션설명 Auto dispose Database/Script Models Case-sensitive compare Exclude unaligned objects in the left model Exclude unaligned objects in the right model Include Only Generated Objects Prefix Owner Using Name Matching check되어있으면 Compare완료후 Reverse하여가져온모델을자동으로저장하지않고모델을 Closed check되어있으면대 / 소문자를구분하여 Compare를수행왼쪽모델을기준으로선택한 Object와비교대상이없으면왼쪽모델의 object는보여주지않음오른쪽모델을기준으로선택한 Object와비교대상이없으면오른쪽모델의 object는보여주지않음 Check되어있으면 Table Editor에서 Generate에 Check가되어있지않은항목은비교대상에서제외하는옵션 check되어있으면모델의 Owner정보를테이블명앞에붙여서비교 check되어있으면명칭을기준으로비교 88
그림과같이모델과 DBMS간차이점을분석하여찾아준다. 화면은크게 3가지로구분할수있다. 첫번째, Complete Compare를수행할때사용되는 Toolbar Icon으로구성된다. 두번째, 상위그리드에서상이한 Object List를보여준다. 가운데부분은다시 3부분으로나뉘는데, Object view부분은 Type Selection단계에서선택한 Object 를구분하고, Object View옆으로 Left / Right Model의실제 object를비교하여정렬한화면이다. 세번째, 상위그리드에서선택한 Object List의자세한차이점을하위그리드에서확인할수있다. Tip Property View에는다음과같은정보를포함하고있다. Calculate : Calculate는그값이 model의다른값으로부터계산되어나왔음을의미한다. 예를들자면, object view에서child Entity를선택하셨다면, Foreign Key 같은 property는parent entity에서상속받은대로계산된다. 다른예는 domain에서상속받은 property들인데, 이런것들은 calculated로보여진다. Filtered : 이것은달라진점이존재함을보여주며, 그차이는Complete Compare로부터필터되어나온특정한 object이기때문에보여지는것이다. 바꿔말하자면, Complete Compare에서 filtering options을선택하였기때문에차이가생긴것이다. 89
또한사용자는다양한비교옵션을통해차이점을분석하고, 차이점을모델과 DBMS 에반영할수 있다. * 아이콘설명항목기능설명비교모델간같은항목을보여준다. 비교모델간서로같지않은항목을보여준다. Left 모델에없는항목을보여준다. Right 모델에없는항목을보여준다. Right 모델의내용을 Left 모델로반영한다. Left 모델의내용을 Right 모델로반영한다. 모델간의 Object가같으나간혹매치가되지않은경우가발생한다. 이런경우 Match를이용해일치시켜준다. 사용자가반영한 Action Log / Message Log를확인할수있다. Known Differences에대한비교항목을 snapshot 으로저장한다. 저장한 Snapshot 을불러온다. Resolve Difference 창에서특정 row( 속성항목 ) 를비교하지않을수있다. 아이콘을클릭함으로써 Resolve Difference 창에서특정 Row를비교대상에서제외했을때, 해당아이콘을클릭하여비교제외된속성을확인할수있다. 비교내용 (Eqal, Not Eqal) 을 Reporting 한다. (Internet Browser, *.doc, *.xls) Left(Right) Alter Script / Sehema Generation - DBMS에반영할 DDL문을생성 / 실행한다. 90
DB 의정보를변경하고자하는작업이기때문에이경우아래와같이작업한다. 우선변경된정보를찾는다. ( 변경예제는 page. 118 참고 ) 첫번째 EMPNM과 EMP_NM은명칭이다르기때문에두대상이각기다른 Object로인식하여결과를나타낸다. 상단에버튼을이용하여두 Object가같은항목임을인식하게한다. 순서에상관없이 EMPNM을선택하고, 를누르고나머지 EMP_NM을선택한다. EMPNM 은모델에서 EMP_NM 으로변경된상태로, 모델의변경사항을 DB 에반영하시기위해서아 래쪽 Property view 를확인한다. Property view 에나타난정보는두건이다. Comment 정보는모델에만있는정보로, DB 에반영할사항이아니므로, skip 한다. 91
아래의 Physical Name 부분은모델의내용을 DB 에반영하므로화살표를오른쪽으로선택한다. 화살표를선택하는 Physical Name은 DB에반영될항목으로포함되었고, Resolve Differences에서는사라지게된다. DB에변경된내용을반영하기위해서는 Alter Script를생성하여작업해야하기때문에현재상태에서 Finish를하시게되면 DB에변경은수행되지않는것을유의한다. 나머지변경작업까지모두끝났으면상단의 업내용을확인할수있다. 를이용하여 Complete Compare 상에서반영한작 92
다음으로 Right Alter Script/Schema Generation icon 을이용하여 Alter 문장을생성하여 DB 변경 작업을수행한다. 버튼을클릭하면 Forward Engineer 와동일한창이나타난다. 해당 Dialog 에서는별도의 Option 선택없이바로 Preview 를통하여결과를확인할수있다. 그이 유는 Complete Compare 를통하여 DB 방향으로반영한 Object 를 ERwin 에서기억하고있기때문에 별도의 Action 없이 Alter 문장을생성해주게된다. 아래 Generate를이용하여바로 DB에변경을적용할수있고, 이를복사하여 Script를이용할수있다. 작업결과는 Schema 가정상 변경되었는지확인하면쉽게 알수있다. 93
Genesis Technologies Corp. the best easy choice 94 서울시영등포구양평동 3가 46번지이앤씨드림타워 601호 / Tel : (02)2628-0700 / Fax : (02)2628-0701 / www.genesis.co.kr Copyright 2007 Genesis.ALL rights reversed