ERWin 4.0 사용방법 현대정보기술 김연홍 (k3701@hitel.net) 1
7. ERWin 사용방법 이장에서는 ERWin 의사용방법과기능에대해서설명할것이며단순한 ERWin 의기능적인접근이아닌실제예제를모델링하면서관련된 ERWin 의기능에대해서설명하고자한다. 그리고이책은 ERwin 의매뉴얼이아니므로 ERwin 의모든기능이아닌실제프로젝트를하면서자주사용하게되는기능을중심으로설명하도록하겠다. 여기서사용하는 ERWin의버전은 4.0 으로최신버전이며 ERWin4.0 파일은 www.xlution.com사이트의데이터모델링자료실에올려놓았으니참조하기바란다. [ERWin4.0 Time Version 설치와라이센스설치방법설명 ] [ 제니시스와협의 ] 위방법에따라 ERWin 을설치했으면시작 -> 프로그램 -> Computer Associates ERWin 4.0 -> ERWin4.0 을선택하여 ERwin 을실행한다. 그러면위같이 ERwin 초기화면이나타나는데 Create a new model 옵션버튼을선택하고 OK 버튼을누르면다음과같이 Create Model 대화상자가나타나게되고여기서세번째옵션버튼인 Logical/Physical 옵션버튼을선택한다. 기존 ERwin 파일을열고자한다면 Open an existing file 옵션버튼을선택한다. 그런다음 Create Model 대화상자에서모델의유형으로 Logical/Physical 옵션버튼을선택한뒤폼아래부분에개발대상데이터베이스를선택해야하는데여기서는 SQL Server 2000 2
로설명할것이므로 DB 는 SQL Server 를선택하고버전은 2000 을선택한다. ( 참고로 이전버전인 ERwin3.5.2 는 SQL Server 7.0 까지지원했다.) 그런다음 OK 버튼을누르면다음과같이 ERWin 메인화면이나타나게된다. 3
메인화면은도구메뉴와 Model Explorer 그리고다이어그램등크게세가지부분으로구성되어있으며 Model Explorer 는 ERwin 4.0 에새롭게추가된부분이다. 마치 SQL Server 의쿼리분석기와비슷한모습이며하는역할도다이어그램에서정의된개체들의정보를계층적으로보여주고있어서기능적으로도비슷한역할을하고있다. -. ERwin 표기방식 메인화면이열리면가장먼저정의해야할내용은어떠한표기방법을사용할것이냐하는것이다. ERWin 은크게두가지표기법을지원하는데하나는 IE ( Information Engineering ) 방식과 Idef1x (Integration DEFinition for Information Modeling ) 방식이다. IE 표기방식은정보공학표기방식으로우리가일반적으로모델링을할때가장많이사용하는유형이며 Idef1x 방식은미국방성에서프로젝트표준안으로개발한표기방식이다. 이책에서는일반적으로널리사용되는 IE 표기방식을이용하여모델링을사용도록하겠다. 기본적으로 ERWin 을설치하게되면 Idef1x 방식이선택되어지며이설정을 IE 표기방식으로바꾸려면 ERWin 초기화면의메뉴에서 Model / Model Properties.. 를선택하면다음과같은 Model Properties 대화상자가나타나게되는데세번째 Notation 탭에서 Logical Notation Physical Notation 영역모두 IE 옵션버튼을선택하면된다. 이렇게하면 ERWin Toolbox 의모습이아래와같이바뀌게된다. 4
-. Logical Nation 과 Physical Nation ERWin 은기본적으로개념적데이터모델링은지원하지않으며논리적데이터모델링과물리적데이터모델링을지원한다. 그러므로 ERWin 을사용하기위해서는먼저업무적인분석과기본적인엔티티와 Attribute 등이정의된양식이있어야하며이를 ERWin 으로옮기면서관계형데이터베이스모델링이론에입각해서 ERD 를작성하게된다. ERWin 에서논리적데이터모델링과물리적데이터모델링을선택하기위해서는아래그림에나와있는것처럼 ERwin Toolbar 오른쪽의콤보박스를선택하면된다. -. 엔티티생성 엔티티의생성은 ERWin Tool Box 의두번째버튼이며두번째버튼을선택한뒤화면상에클릭하면엔티티가만들어진다. 엔티티는다음과같이세영역으로구성된다. 엔티티명기본키영역일반속성 (Attribute) 영역 세영역을이동하기위해서는엔티티를선택한뒤텝키를이용하여영역을이동할수있으며기본키와일반속성영역에속성을추가하고자한다면엔터키를치면새로운속성을기술할공간이만들어진다. 5
그러면다음과같이사원엔티티를만들어보자 -. 식별관계, 비식별관계 위에서관계란두엔티티간의업무적인연관성이라정의한바있다. 그리고관계의유형에는부모테이블의기본키혹은복합키가자식테이블의기본키혹은복합키의구성원으로전이되는식별관계와자식테이블의일반속성 (Attribute) 그룹의구성원으로전이되는비식별관계가있다. 식별관계와비식별관계의관계선을정의하기위해서는 ERwin Toolbox 에서네번째버튼이식별관계의관계선이고여섯번째버튼이비식별관계의관계선이다. Identifying Relationship Non Identifying Relationship 그러면다음과같이사원의신체조건과부서를정의하기위한부서테이블을추가해보도록하자. 6
위테이블에서부서테이블과사원테이블간의관계는부서에사원이소속됨으로부서테이블이부모테이블이되고사원들의부가적인신체정보를저장하기위한것이니만큼사원테이블이신체정보테이블과의관계에서는부모테이블이된다. 그러면관계의유형은어떻게되는가? 부서테이블과사원테이블에서부서는사원의부분적인정보를표현함으로비식별관계이며사원테이블과신체정보테이블에서는사원들개개인의신체정보를저장하게됨으로식별관계가된다. 식별관계나비식별관계모두관계를형성하기위해서는 ERwin Toolbox 에서관계유형에맞는관계선을선택하고부모테이블을선택한뒤에자식테이블을선택한다. 이처럼관계를형성하게되면부모테이블의기본키가자식테이블에자동으로전이되어지게되는데 SQL Server 의엔터프라이즈관리자의다이어그램에서는관계를통해부모테이블의기본키가자식테이블의외래키 (Foreign Key) 로자동으로전이되어지지않는다. SQL Server 에서관계를형성하기위해서는자식테이블에부모테이블의기본키와대응하는컬럼을만들어주고부모테이블의기본키를드레그해서자식테이블에드롭하면아래와같이관계만들기대화상자가나타나게되는데여기서자식테이블 ( 외래키테이블 ) 에서부서필드를선택해주어야관계가만들어지게된다. 7
( SQL Server 의엔터프라이즈관리자는 SQL Server 의관리도구이지 CASE Tool 은아니다. ) 관계를형성한뒤에는관계에관한옵션을설정해야하는데부서테이블과사원테이블간의관계선을선택한후오른쪽버튼을눌러나타나는팝업메뉴에서 Relationship Properties 메뉴를선택하면다음과같이 Relationships 대화상자가나타난다. 이대화상자에서는 Cardinality 와 Relationship Type 이주요한옵션이며 Cardinality 는 두테이블에서레코드들의메칭정보를보여주게되는데옵션을바꾸어가면서실제 다이어그램에서의바뀌는모습을확인해보도록하자. 위의예에서는하나의부서에사원이없을수도, 한명만있을수도아니면여러명있을수도있으므로첫번째 Zero, One or More 옵션이올바르다. 그리고위의화면에서 Verb Phrase 는부모와자식 (Parent-to-Child) 그리고자식과부모 (Child-to-Parent) 와의관계에대한설명적인문구를입력하는곳이다. 해서아래의그림과같이두테이블간적당한내용을정의해두면된다. 8
Verb Phrase 는실제모델링에서중요한옵션이라기보다는관계에관한가독성을높이기위한주석정도로이해하면될것이다. 그다음은 Relationship Type 인데부서테이블과사원테이블의관계유형이비식별관계이므로 Non-Identifying 옵션이선택되어있다. 그리고 Null 에대한옵션을선택할수있는며기본적으로비식별관계에서는부모테이블에서널을허용할수있게끔옵션이선택되어있는데이는대부분의경우에올바른옵션이아니다. Null 에대한옵션을 No Nulls 로선택하도록하자. 그러면아래와같은모습이될것이다. 이번에는사원테이블과신체정보테이블사이의관계선을살펴보도록하자. 9
사원과신체정보테이블의관계선에대한 Relationships 대화상자를보면식별관계로 정의되어있으며식별관계로관계가형성되었을때는널에대한옵션설정이비활 성화된다. 그리고 Cardinality 옵션은사원테이블에하나의레코드는반드시신체정보테이블에도대응되는하나의레코드가존재해야하므로아래의그림처럼 Exactly 1 관계로정의해야한다. Exactly 을선택하고임의의숫자를입력하면자식테이블쪽의관계선끝이직선으로표시되는데이를정확하게보기위해서는 ERwin 다이어그램빈공간에서오른쪽버튼을누른뒤팝업메뉴에서 Relationship Display / Cardinality 를선택하면된다. 10
-. 다대다해소방법 앞에서도설명했지만다대다관계는논리적으로는존재할수있지만물리적으로는존재할수없다. ERwin 에서도역시 ERwin Toolbox 의관계선을이용하여다대다관계를표현할수있다. Many-to-Many Relationship 그러면다대다관계선을이용하여아래의그림처럼다이어그램을만들어보자. ( 다대다관계에있는엔티티들은부모와자식의관계가아니므로다대다관계선을선택한후순서에상관없이두엔티티를차례로선택하면관계가형성된다. ) 하나의공급업체는여러개의상품을납품할수있고하나의상품은여러공급업체에서납품받을수있기때문에공급업체와상품엔티티간은다대다관계이며하나의상품은여러회원에게판매할수있고한명의회원은여러상품을구매할수있으므로이역시다대다관계이다. 그러나대부분의경우에논리적모델링에서도다대다관계를풀어서교차실체 ( 행위실체 ) 를정의해야한다. 왜냐하면대부분의업무적프로세스와상세정보가바로이교차실체에서정의되기때문이다. 해서다대다관계를해소하려면위의다대다관계선에서오른쪽버튼을누른뒤팝업메뉴에서 Create Association Entity 메뉴를선택하면다음과같이마법사가나타나는데여기서는새롭게추가될교차실체의실체명을정의하고다음버튼을눌러작업을완료한다. 11
공급업체와상품엔티티간에정의될수있는프로세스는납품이고회원과상품엔티티간에정의될수있는프로세스는판매이므로각각납품과판매를교차실체명으로정의하여다대다관계를해소하면다음과같은모습이된다. 12
마지막으로납품과판매엔티티에속성 (Attribute) 를추가해보도록하겠다. 일반적으로납품엔티티는납품번호로그리고판매엔티티는판매번호로관리되어지기때문에납품번호와판매번호를기본키로정의하고필요한속성을추가해보도록하자. ( 납품번호와판매번호를기본키로정의하려면관계선이비식별관계로정의되어야한다. ) -. Domains 설정 납품엔티티와판매엔티티의속성들을보면일자, 수량, 단가, 금액등의컬럼이같이쓰여지고있는모습을볼수가있는데이렇게여러엔티티에서공통적으로적용되는속성이존재하면그것을하나의개체로만들어적용시키는것이훨씬더편리할수있다. SQL Server 에서사용자정의데이터타입을정의해서필요한컬럼에바인딩하는것과같은내용이다. 이러한내용을정의하기위해서는 Model Explorer 의 Domain 텝에서정의한다. 13
일자는문자열로정의할것이며수량, 단가, 금액은숫자형속성들이다. 아직은논리적 (Logical) 모델링단계이므로정확한 Data Type 과 Size 를정의할단계는아니지만그레도문자형인지숫자형인지는구분을해서만들어주어야한다. 우선일자를정의해보도록하자. 일자는문자형으로정의할것이므로 String 에서오른쪽버튼 New 를선택한뒤폴더모습의아이콘이만들어지면일자라고정의한다. 그런다음수량, 단가, 금액등은 Number 에서오른쪽버튼 New 를선택한뒤차례로만들어나간다. 그러면아래와같은모습이될것이다. 그러면납품엔티티와판매엔티티에있는납품일자, 단가, 수량, 금액속성과판매일자, 단가, 수량, 금액속성들을제거한뒤 Model Explorer 에있는금액과단가수량, 일자등을선택해서드래그한다음납품엔티티와판매엔티티에차례로드롭하면다음과같은모습이된다. 14
여기서속성 (Attribute) 의의미를좀더명확하게하기위해서속성 (Attribute) 명앞에해당엔티티명을추가할수있는데이렇게하려면 Model Explorer 의 Domains 하위폴더중하나를선택한후오른쪽버튼을누른뒤 Properties 메뉴를선택하면 Domain Directory 대화상자가나타나게되는데여기서 Hierarchically 옵션버튼을선택하면아래와같은모습이된다. 그리고오른쪽에 Name Inherited by 입력상자의내용이기본적으로 %AttDomain 으로정의되어있는데이앞에 %EntityName 을붙여서 %EntityName%AttDomain 이라고정의하면적용되는모든속성명앞에엔티티명이함께붙어서정의되어진다. 15
-. Subject Area 일반적으로업무분석을해서엔티티 (Entity) 를추출하게되면적게는 10 개미만부터많게는 100 개이상의엔티티가정의되는모습을보게되는데이러한많은엔티티를한화면에서모두관리한다면너무나복잡할것이다. 이럴경우 Subject Area 를활용하면편리한점이많이있다. Subject Area 는업무적으로관련이있거나혹은개발자가보고자하는내용만을가지고새로운화면을구성한다. 그러므로좀더편리하게엔티티와관계를확인할수있으며 Subject Area 에서어떠한내용을변경한다하더라도이변경사항이전체 ERD 에반영됨으로보다편리하게작업할수있다. 그리고또한가지특징은나중에데이터베이스스키마를생성할때 Subject Area 별로스키마를데이터베이스에생성할수있다는점이다. ( 새로운엔티티를데이터베이스에추가하고자하는경우편리하게사용할수있다.) Subject Area 를생성하거나관리하려면 ERwin Toolbar 의 Create Subject Area 버튼과 Model Explorer 의 Subject Areas 텝그리고 Model 메뉴 / Subject Areas 메뉴에서작업할수있다. ERwin Toolbar 에서 Create Subject Area 버튼을누르면다음과같이 Subject Areas 대화상자가나타나게되는데현재 <Main Subject Area> 가리스트에등록되어진모습을볼수있다. Subject Areas 대화상자에서 Members 텝을누르면여태까지작성한엔티티들이모두포함되어있는모습을볼수있다. 이번예제에서는부서, 사원, 신체정보엔티티를포함하는 사원정보 Subject Area 와공급업체, 상품, 회원, 납품, 판매엔티티를포함하는 상품정보 Subject Area 를만들어보도록하겠다. 16
위 Subject Areas 대화상자에서 New 버튼을누른후새로운 Subject Area 의이름을 사 원정보 라고입력한후 Members 텝을선택한다. 그런다음 Available Objects 리스트상자에서원하는엔티티를선택해서화살표버튼을이용하여 Included Objects 리스트상자로옮길수있는데가운데밑에서두번째버튼을활용하면좀더편리하게관계를맺고있는엔티티들을추가할수있다. 위의화면처럼사원엔티티를선택하면밑에서두번째버튼이활성화되어지는데그버튼을누르면다음과같이 Spanning Neighborhood 대화상자가나타나는데여기서선택한엔티티를중심으로관계를맺고있는부모와자식엔티티를단계별로추가할수있다. 여기서는사원엔티티를중심으로부서와신체정보엔티티가 1 단계걸쳐서정의되어있으므로 Level 1 로선택한후확인버튼을누르면아래의그림처럼사원을중심으로부서와신체정보엔티티가 사원정보 Subject Area 에포함되어있는것을확인할수있다. 17
그런다음 OK 버튼을누르면부서, 사원, 신체정보엔티티들만화면에보여지게된 다. 상품정보 Subjcect Area 는독자스스로만들어보도록하자. Subject Area 는편하게원하는엔티티들만보여주지만정말중요한기능은 Physical Modeling 단계에서 Subject Area 별로 DB 스키마를생성할수있다는점이다. 예를들어기존에만들어진데이터베이스스키마에새로운테이블만생성하려고할때생성하고자하는엔티티들만 Subject Area 로구성한후 Generate 할수있다. 18
-. Physical 모델링 ( 이전에보기옵션 ) ERwin 에서물리적모델링으로전환하려면앞에서설명했던것처럼 ERwin Toolbar 의 오른쪽콤포박스를 Physical 로선택하면된다. ERwin 을처음실행할때 Target Database 를 SQL Server 2000 으로선택했으므로다시데이터베이스를선택할필요는없다. 만약처음에선택하지않고지나쳤다면 Database 메뉴에서 Choose Database.. 메뉴를선택하면다음과같이개발 DBMS 를선택하는 Target Server 대화상자가나오게되는데여기서원하는 RDBMS 와 Version 을선택하면된다. ( Database 메뉴는 Physical 에서만나타난다. ) 물리적모델링으로전환할경우용어가엔티티 (Entity) 에서테이블 (Table) 로속성 (Attribute) 에서컬럼 ( Column ) 으로바뀌게된다. Logical 모델링에서 Physical 모델링으로전환하면기본적으로다음과같이컬럼 Data Type 과 Size 가함께보여지게된다. 19
-. Column Data Type 과 Size 기본적으로 char(18) 로모든 Data Type 과 Size 가정의되어있는데이를각컬럼에입력될데이터의성격에따라적절하게변경해주어야한다. 컬럼의 Data Type 과 Size 를정의하려면테이블을선택한뒤오른쪽버튼을누르고팝업메뉴에서 Columns.. 메뉴를선택하면다음과같이 Columns 대화상자가나타나게된다. 위 Columns 대화상자왼쪽에서컬럼을선택하고오른쪽에서 Data Type 과 Size 를정의하면되고이대화상자에서컬럼의 Null 허용여부, IDENTITY 속성설정, Rule 과 Check, Default 등을정의할수있으며인덱스도정의할수있다. 20
그러면다음과같이컬럼의 Data Type 과 Size 를정의해보도록하자. ( 임의적인상황을가정해서정의했으므로모든유형에서위의데이터형식이항상올바르다고할수는없다. ) -. Identity, Null Option 위의예에서납품테이블의납품번호컬럼과판매테이블의판매번호컬럼은 Identity 컬럼이다. ( Identity 컬럼을정의하기위해서는컬럼의 Data Type 이정수형 Data Type 이어야만한다. ) ERwin 에서 Identity 컬럼을정의하기위해서는 Columns 대화상자에서정의하는데납품테이블을더블클릭하던지아니면납품테이블에서오른쪽버튼을눌러팝업메뉴에서 Columns 메뉴를선택해서 Columns 대화상자를연다음납품번호를선택한후 Identity 옵션버튼을선택하면된다. 21
이렇게 Identity 컬럼을정의할경우기본값과증가값은 1 이다. 만일 Identity 컬럼의초기값과증가값을임의로정의하고자한다면 Identity 옵션버튼의뒤쪽입력상자에초기값과증가값을컴마로구분해서정의해주어야한다. ( 초기값이 1 이고증가값이 10 일경우입력상자에 1, 10 으로정의한다. ) Identity 컬럼에는널값이입력될수없으므로 Null 옵션이의미가없으며사용자가임의로값을입력할수도없다. 참고 : 판매테이블의판매번호는 Data Type 이 Bigint 형이다. Bigint 는정수형 Data Type 으로 9,223,372,036,854,775,808 부터 9,223,372,036,854,775,807 까지의엄청나게큰정수형 Data Type 이다. 실제로 SQL Server 에서는 Bigint Data Type 도 Identity 컬럼으로정의할수있으나 ERwin 4.0 에서는 Int 까지만 Identity 컬럼을지원하고 Bigint Data Type 은 Identity 속성을정의할수없도록비활성화되어있다. 아마도패치버전에서는이를지원하지않을까생각한다. -. Check( Rule ), Default Check 제약조건은테이블을만들거나수정하면서정의하는제약조건이고 Rule 은데이터베이스내의 Object 로우선데이터베이스내에 Rule 이라는 Object 를만든후에이를필요한테이블의컬럼에바인딩해서사용하게된다. 둘다데이터가컬럼에들어올수있는경우의수를제한해서데이터베이스의무결성을강화하기위한방법으로사용한다. Default 또한마찬가지로사용자가특정컬럼에데이터를입력하지않았을때기본적으로그컬럼에들어가지는값을정의하는데사용되는옵션이다. 이들도마찬가지로 Columns 대화상자에서관리한다. 22
우선 Check(Rule) 제약조건부터정리해보도록하자. 이번예에서는위의판매테이블에판매수량과판매단가그리고판매금액컬럼에 0 이상의값이입력되어야한다는내용을정의해보도록하겠다. 그리고다른예로값의범위를정하는예와특정한몇개의데이터만입력할수있도록정의하는내용에대해서다루어보도록하겠다. Check(Rule) 제약조건을정의하려면위의그림에서 Valid 뒤쪽의버튼을클릭하면다음과같이 Validation Rules 대화상자가나타나게된다. 우선테이블에판매수량과판매단가그리고판매금액컬럼에 0 이상의값이입력되어야한다는내용을정의하기위해 New 버튼을누른뒤 New Validation Rule 대화상자에서 Logical 과 Physical 입력상자에 판매수량 Check 이라고입력한다. 23
그러면아래의 Type 이활성화되어지는데여기서첫번째 User-Defined 옵션버튼을선택한후 Validation 입력상자에 판매수량 >= 0 이라고입력한다. 그런다음위의그림처럼 SQL Server 텝을선택하고 Generate As 영역에서 CHECK Constraint 옵션을선택한다. Sp_bindrule 옵션은 Rule 을만들때적용하는옵션이며위의예는판매수량컬럼에적용되는제약조건을정의하는것이므로 CHECK Constraint 옵션을선택해야한다. 24
위와같은요령으로 판매단가 Check, 판매금액 Check 를만든다. 그런다음 OK 버튼을눌러서 Columns 대화상자로돌아간뒤아래의그림처럼판매수량컬럼을선택한후 Valid 콤보상자에서 판매수량 Check 를선택하고판매단가컬럼을선택한후 판매단가 Check 를판매금액컬럼을선택한후 판매금액 Check 를선택해서각각의필드에적합한 Check 제약조건을매칭시킨다. 이번에는값의범위를제한하거나특정한몇개의데이터만이입력되어야하는내용을정의하는유형에대해알아보도록하자. 우선다음과같은성적테이블이있다고하자. 국어, 영어, 수학컬럼의경우입력될수있는데이터의범위는 0 ~ 100 사이의정수이다. 그리고총점과평균은국어, 영어, 수학의합과평균이므로계산하면될것이고학점은평균에따라 A, B, C, D 그리고 F 만이입력될수있다고하자. 이를정의하기위해서다시 Validation Rules 대화상자를띄운후에국어, 영어, 수학컬럼에입력될수있는값의범위를정의하기위해 New 버튼을누른후 점수 Rule 이라 25
고입력한뒤두번째옵션버튼인 Min/Max 를선택한다. 그러면아래그림처럼 Min 값과 Max 값을입력할수있는입력상자가나타나는데여 기에 0 과 100 을입력하도록하자. 여기서는숫자형데이터의입력범위를지정하고있으므로 Quote 체크박스는선택하지않으며더군다나 NOT 체크박스도선택할필요가없다. 점수 Rule 은국어, 영어, 수학컬럼에모두적용될제약조건이므로 Rule 로만들어서필요한컬럼에바인딩해야하므로 SQL Server 텝에서 sp_bindrule 옵션을선택하면된다. 이렇게정의하고 OK 버튼을누른뒤 Columns 대화상자에서국어, 영어, 수학컬럼의 Valid 콤보상자에서점수를선택하면된다. 26
그다음학점필드에입력될수있는데이터를정의해보도록하자. 다시 Validation Rules 대화상자를열고 New 버튼을누른후 학점 Check 라고이름을입력한후이번에는마지막옵션버튼인 Valid Value List 버튼을선택하면다음과같이값을입력할수있는그리드가나타나게된다. 여기의 Valid Value 컬럼에값의리스트를아래와같이정의하면된다. 이는문자열이기때문에 Quote 체크박스를선택하도록한다. NOT 이라는옵션을사용하면특정데이터이외의값만을받아들일수있도록정의할수도있을것이다. 27
학점 Check 역시학점컬럼에적용되는 Check 제약조건이기때문에 SQL Server 텝에서 CHECK Constraint 옵션을선택한다. 그런다음 OK 버튼을누른뒤 Columns 대화상자에서학점컬럼을선택하고 Valid 콤보상자에서 학점 Check 제약조건을선택하면된다. 이제 Default 값을정의해보도록하자. 위의성적테이블에서국어, 영어, 수학컬럼에데이터가입력되지않을때기본적으로 0 값이입력될수있도록해야한다. 이를정의하기위해서이번에는 Columns 대화상자에서 Default 뒤쪽의버튼을클릭한다. 그러면이번에는 Default / initial Values 대화상자가나타난다. 그런데 Default / initial Values 대화상자는 Validation Rules 대화상자와는달리기본적으로 Default 값을정의할수있도록 TIMESTAMP 나 USER 등이미리정의되어있다. 이들을사용하려면원하는컬럼에바로 Default 값을지정하면될것이다. 28
여기서는기본적으로국어, 영어, 수학컬럼에적용될 Default 값을새로정의할것이 므로 New 버튼을누른뒤 Default 이름을 기본점수 라고입력하고확인버튼을눌러 새로운 Default 값을정의하도록하자. Default 를적용시키는방법도두가지가있는데하나는 Default 를데이터베이스안에개체 ( Object ) 로생성한뒤여러컬럼에바인딩 ( Binding ) 하는방법이고다른한가지는일반적으로사용하는방법으로테이블을만들거나수정할때직접컬럼에 Default 속성을정의하는방법이다. ( 전자를절차적방법이라고하고후자를서술적방법이라고한다.) 이러한내용을구현하기위해서는 Default / initial Values 대화상자에서 Generate As 내에옵션을선택해서구현할수있다. 전자가 sp_bindefault 옵션이고후자가 Default 옵션이다. 여기서는어떠한방법으로정의한다해도무방하지만여러테이블의여러컬럼에동일한 Default 속성을적용시키고자한다면절차적방법을통해정의하는것이바람직하므로절차적방법의 Default 를정의해보도록하겠다. 우선 New 버튼을누른뒤 Default 이름에 기본점수 를입력하고확인버튼을누른뒤아래처럼값은 0 을입력하고 sp_bindfault 를선택한다. 29
그런다음국어, 영어, 수학필드에 Default 를기본점수로선택해주면된다. -. 인덱스정의방법 인덱스에대한개념과이론은위 ( 몇장 ) 에서설명했으므로여기서는부가적인설명은제외하고기능적인부분에대해서적용해보도록하겠다. ERwin 에서인덱스를정의하려면 Physical 모델링에서테이블을선택한뒤오른쪽버튼을누른후팝업메뉴에서 Indexes 메뉴를선택하면된다. ( 물론 Columns 대화상자의 Index 텝에서정의할수도있고 Model 메뉴의 Indexes 메뉴를선택해도된다. ) 이번예제는성적테이블을가지고인덱스를적용시켜보도록하겠다. 우선성적테이블을선택한후오른쪽버튼을누른후팝업메뉴에서 Indexes 를선택하면다음과같이 SQL Server Index 대화상자가나타나게된다. 30
앞장에서설명했듯이현재우리는성적테이블에서어떠한인덱스도정의한적이없 지만이미하나의인덱스가만들어져있는모습을볼수가있다. 이인덱스는기본키에의해자동으로만들어진인덱스이다. 그의미는인덱스의이름은 X 성적 이고인덱스의유형은 PK ( 기본키 ) 인덱스이며인덱스에포함된컬럼은 번호 컬럼이라는뜻이다. 그런데여기서한가지주의해야할내용이있는데 ERwin 에서인덱스를정의할때기본키컬럼에기본적으로넌클러스터드인덱스가적용된다는점이다. 물론클러스터드인덱스로만들수도있는데그옵션은아래와같이 SQL Server Indexes 대화상자의 SQL Server 텝에서확인해볼수있다. ( 기본적으로기본키인덱스는 Unique 속성에선택된상태에서바꿀수없게끔비활성화되어있다. ) 성적테이블에서만약번호컬럼이클러스터드인덱스로적용된다면어떻겠는가? 클러스터드인덱스는범위쿼리 (Range Query) 할때에뛰어난성능을나타낸다고했다. 그렇다면번호를기준으로범위쿼리를할경우가얼마나되는가? 1 번부터 10 번까지의성적을조회한다던가아니면 20 번부터 35 번까지의성적을조회하는일이아마도별로많지는않을것이다. 31
오히려총점이나평균혹은학점을기준으로범위쿼리를하는경우가많을것이다. 그러므로번호컬럼에는넌클러스터드인덱스가적합하며총점과평균, 학점컬럼중에는업무적인프로세서를살펴본후클러스터드인덱스를정의해야할것이다. 여기서는학점컬럼에클러스터드인덱스를적용해보도록하겠다. 새로운인덱스를만들려면 SQL Server Indexes 대화상자에서 New 버튼을누른다. 그러면아래의그림처럼 New Index 대화상자가나타나게되는데여기서중요한옵션이바로 Unique 옵션이다. 기본적으로이옵션은선택되어있으며인덱스로정의할컬럼의데이터가 Unique 하다면선택을해주어야할것이다. 만일 Unique 옵션을선택하지않으면 Key Group 의이름이 Invension Entry 로바뀌는것을확인할수있는데이는데이터가 Unique 하지는않지만자주액세스되는컬럼에인덱스를정의할때사용하는용어이다. 우리가지금인덱스를정의할학점컬럼은데이터가 Unique 하지않으므로두번째그림처럼 Unique 옵션을해제한후 OK 버튼을누른다. 32
그러면위의그림처럼새로운인덱스가만들어지게되는데 Members 텝에서학점컬 럼을선택한후추가화살표버튼을눌러오른쪽 Index 리스트상자로옮긴후에 SQL Server 텝에서 Clustered 체크박스를선택하면될것이다. 이렇게만들어진인덱스는 Columns 대화상자의 Index 텝에서도확인할수있다. 33
-. 트리거 (Trigger) 정의방법 트리거에대한개념과이론은위 ( 몇장 ) 에서설명했으므로여기서는부가적인설 명은제외하고기능적인부분에대해서적용해보도록하겠다. ERwin 에서트리거를정의하려면 Physical 모델링에서테이블을선택한뒤오른쪽버튼을누른후팝업메뉴에서 Triggers 메뉴를선택하면된다. 이번트리거에대한예제는앞에서다대다관계를해소하기위해서사용했던예제를통해트리거를정의해보도록하겠다. 34
기본적인로직은앞서트리거를설명할때했던내용이므로설명을하지않아도될 것이다. 여기서는납품테이블에데이터가입력되어질때상품테이블의재고수 량에더해지는트리거만만들어보도록하겠다. 납품테이블에서오른쪽버튼을누른뒤팝업메뉴에서 Triggers 메뉴를선택하면다음과같이 Triggers 대화상자가나타나게된다. 지금현재납품테이블은공급업체테이블, 상품테이블과관계를맺고있으며참조무결성과관련한내용이기본적으로적용되어있는모습을볼수있다. 여기서 New 버튼을누른뒤트리거의이름을 납품 INS 로정의하고확인버튼을누른다. 그런다음 Code 텝으로전환한후다음과같이트리거를정의하는코딩을 Trigger Code 입력상자의마지막부분 Return 문장바로위에다음코트를에추가로삽입한다. DECLARE @CODE CHAR(6), @QTY INT 35
SET @CODE = (SELECT 상품코드 FROM INSERTED) SET @QTY = (SELECT 납품수량 FROM INSERTED) UPDATE 상품 SET 재고수량 = 재고수량 + @QTY WHERE 상품코드 = @CODE 그런다음 Expanded 텝으로전환한해보면실제로만들어질트리거에대한내용들정의되어있는모습을확인할수있다. 코딩을점검해보고이상이없는지확인하자. 이이후의업데이트트리거와삭제트리거는같은요령으로적용을하면될것이다. 36
ο 뷰 (View) 정의방법 : ERwin 에서뷰 (View) 를만들려면물리적 (Physical) 모델링단계에서 ERwin Toolbox 에있는 ViewTable 을선택해서만들수있다. View Table 엔티티를만들때처럼 View Table 을선택한후다이어그램에클릭하면다음과같은모습으로뷰가만들어지게되는데이뷰에포함하고자하는컬럼을드레그엔드롭하게되면뷰필드가구성이되어진다. 우리는여기서판매테이블의데이터를조회하는뷰를만들것이며이름을 판매 View 로정의할것이다. ( 뷰의이름을바꾸려면엔티티이름을바꿀때처럼바꾸어주면된다.) 뷰의이름을 판매 View 로바꾼뒤뷰로구성할필드 ( 판매. 판매번호, 회원. 회원이름, 상품. 상품명, 판매. 판매일자, 판매. 판매수량, 판매. 판매단가, 판매. 판매금액 ) 들을 판매 View 에끌어다놓으면다음과같은아래와같은모습이될것이다. 37
이렇게뷰를생성하게되면현재생성된뷰는조인의조건이정의되지않은뷰 ( Cross Join 상태의뷰 ) 가만들어지게되며조인의조건과정열조건등을따로지정해주어야하는데이렇게하기위해서는뷰에서오른쪽버튼을누른후 Database View Properties 메뉴를선택하면다음과같은 Views 대화상자가나타나게된다. Views 대화상자의 Select 텝을보면뷰에사용된테이블의나머지컬럼들과뷰로구성된컬럼들의모습이보여지게된다. From 텝에는뷰에사용된테이블들이보여지게되며조인의조건을포함한조회의조건등을지정하기위해서는 Where 텝에서관련된내용을정의해주어야한다. 정상적으로조회가이루어질수있도록 Where 텝의 Where 절에다음과같은구문을추가해보도록하자. 판매. 회원번호 = 회원. 회원번호 AND 판매. 상품코드 = 상품. 상품코드 38
그런다음 SQL 텝에서완성된뷰문장을확인해보도록하자. ο 스토어드프로시저 ( Stored Procedure ) 정의방법 : ERwin 에서스토어드프로시저 (Stored Procedure) 를만들려면물리적 (Physical) 모델링단계에서 DataBase 메뉴 / Stored Procedure 메뉴를선택하면 Model-Level 메뉴와 Table-Level 의두가지메뉴를만나게되는데테이블 (Table) 이나뷰 (View) 에기반한스토어드프로시저를만들고자한다면 Table 레벨을선택하면되고값의계산이나부가적인프로세스를처리하기위한스토어드프로시저를정의하고자한다면 Model-Level 을선택하면된다. 하지만이둘의차이는궁극적으로없으며 SQL Server 에서스도어드프로시저를만들경우예를들어판매현황을조회하는스토어드프로시저를만들고자하는데지금당장판매테이블이데이터베이스에없더라도만들수있는기능즉이름지연이가능하기때문이다. ( 중요한내용이아니므로중략하기로한다. ) 위에서뷰를만들때판매테이블의데이터를조회하는뷰를만들었으므로여기서는납품테이블의납품현황을날짜별로조회할수있는스토어드프로시저를만들어보도록하겠다. 39
Table-Level 의스토어드프로시저는위의방법으로도만들수있지만해당테이블의오른쪽버튼을누른뒤팝업메뉴에서 Stored Procedure 를선택해도만들수있다. 여기서는납품테이블을기반으로한스토어드프로시저를만들것이므로납품테이블을선택하고오른쪽버튼을누른뒤 Stored Procedure 메뉴를선택하면다음과같이 Stored Procedure 대화상자가나타나게된다. 여기서 New 버튼을누른뒤 S_ 일일납품현황 이라는이름을입력한뒤확인버튼을 누르면다음그림과같이 Code 입력상자가사용할수있게끔활성화되어지게되 는데여기에다음과같은코드를입력해서스토어드프로시저를정의해보도록하자. CREATE PROCEDURE S_ 일일납품현황 @SDATE CHAR(8) AS SELECT 납품. 납품번호, 상품. 상품명, 공급업체. 업체명, 납품. 납품일자, 납품. 납품수량, 납품. 납품단가, 40
납품. 납품금액 FROM 납품, 상품, 공급업체 WHERE 납품. 상품코드 = 상품. 상품코드 AND 납품. 업체코드 = 공급업체. 업체코드 AND 납품. 납품일자 = @SDATE 그러면다음과같은모습이되며이렇게하면 S_ 일일납품현황 이라고하는스토어드프로시저가만들어지게된다. 여기서간단하게스토어드프로시저를하나만들어봤는데실제로스토어드프로시저의사용은속도향상, 유지보수의편의성, 네트워크트레픽의감소등등단점보다는장점이월등하게많은아주훌륭한데이터베이스개체 (Object) 이다. 여태껏직접애플리케이션에서 SQL 문장을정의해서사용했다면앞으로는스토어드프로시저를사용해서코딩을해야할것이다. 업무와관련한모든 SQL 문장을스토어드프로시저로작성했다면당연히스토어드프로시저의숫자는한데이터베이스안에아주많은수의스토어드프로시저가만 41
들어지게될것이다. 그러한스토어드프로시저를모두모아서관리하려면 DataBase 메뉴 / Stored Procedure / Model-Level 을선택하면된다. 그러면위와비슷한 Stored Procedure 대화상자가나타나게되는데위와다른게없어보이지만위에는없는 Display 콤보상자가있으며이다이어그램안에서정의된모든스토어드프로시저목록과함께코드도나와있으며물론이대화상자에서새로운스토어드프로시저도만들수있다. * 참고 : 여태까지의예를보면테이블이나컬럼의이름등을모두한글로정의해서사용했다. 그러나실제로현업에서데이터베이스내의개체 (Object) 명을한글로정의해서사용하는경우는그리많지는않다. 물론한글을사용해서반드시문제가되는것은아니지만과거한글지원이부족했던시절부터내려온하나의관습이라고볼수있다. 해서 ERwin 을사용할때도논리적 (Logical) 모델링에서는한글로엔티티 (Entity) 나어트리뷰트 (Attribute) 를정의하고물리적 (Physical) 모델링에서는 42
그이름들을영문으로전환해서사용하는경우가많은데이렇게물리적 모델링단계에서 Object 명을영문으로바꾼다하더라도아래의그림처럼 논리적모델링단계에서정의된한글명은그데로유지되어진다. Logical Model Physical Model ο 파일그룹정의 : 하나의데이터베이스는최소한하나이상의데이터파일과최소한하나이상의로그파일로구성되어진다. DataBase (30Mb) 10Mb 10M 10M 10M Data File Log File SQL Server 는위의그림처럼하나의데이터베이스에여러개의데이터파일을구성할수있으며이때데이터파일의확장자는.mdf 나.ndf 이고로그파일의확장자는.ldf 이다..mdf 확장자를갖는데이터파일은데이터베이스를생성할때가장먼저정의된데이터파일에기본적으로적용되는디폴트확장자이며추가적으로데이터파일이만들어지는데이터파일들은.ndf 라는확장자를갖게된다. 43
그리고이러한파일들은그룹으로관리되어지는데기본적으로 SQL Server 에서만들어지는모든데이터파일들은주 (Primary) 파일그룹의구성원이되며새로운파일그룹을만들어서데이터파일들을관리자임의로파일그룹에포함시킬수있다. * 참고 : 기본적으로주 (Primary) 파일그룹에데이터베이스시스템테이블이존재하게되며새로운테이블이나뷰등을만들때기본적으로만들어지는파일그룹역시주 (Primary) 파일그룹이다. SQL Server 에서는개별적인파일이나파일그룹별로백업이나복구를할수있으며저장될위치들을개별적으로정의할수있다. 이는각각의하드디스크에파일들의위치를분산시킴으로해서디스크에서데이터를읽고쓰는데에있어서의경쟁을피할수있음으로시스템의성능을극대화시킬수있는방법으로사용된다. 그리고더군다나데이터베이스의테이블이나인덱스가저장되는파일그룹을관리자가임의로지정할수있는데예를들어아래의그림처럼파일그룹 A 는 D: 드라이브에파일그룹 B 는 E: 드라이브에만든다음판매테이블은파일그룹 A 에저장하고판매테이블의인덱스들은파일그룹 B 에저장할수있다. 판매테이블 판매테이블의 INDEX 저장 저장 File Group A File Group B D: E: 이렇게저장하게되면판매테이블에데이터가입력되었을경우실제데이터의변경사항은 D: 드라이브가인덱스의변경사항은 E: 드라이브가담당하게되므로 44
보다낳은성능향상을기대할수있다. 다음예는 SQL Server 에서데이터베이스를만들면서파일그룹을정의한후에 ERwin 에서테이블과인덱스를메칭시키는예제이다. 아래의그림과같이엔터프라이즈관리자에서 연습 DB 라는이름의데이터베이스를만들어보자. 파일이름 위치 처음크기 파일그룹 연습 DB_Data C:\Data\ 연습 DB_Data.MDF 10 PRIMARY 연습 DB_Data1 D:\Data\ 연습 DB_Data1.NDF 20 FGA 연습 DB_Data2 E:\Data\ 연습 DB_Data2.NDF 20 FGB PRIMARY 파일그룹의이름은변경할수없으며두번째파일그룹은 FGA 세번째파일그룹은 FGB 명으로정의했다. 이제다음으로 ERwin 에서파일그룹을정의해보도록하자. 45
ERwin 에서파일그룹은 Model Explorer 의 Filegroup 에서오른쪽버튼을누른뒤 New 메뉴를눌러정의할수있다. 그럼다음그림처럼차례로 FGA, FGB 라는파일그룹두개를만들어보자. 그런다음각각판매테이블은 FGA 그리고판매테이블의인덱스는 FGB 파일그룹에저장될수있도록정의해보도록하겠다. 우선판매테이블을정의하려면판매테이블에서오른쪽버튼을누른뒤팝업메뉴에서 Table Properties / Physical Property 메뉴를선택하면다음과같이 SQL Server Tables 대화상자가나타나게되는데 Filegroup 콤보상자에서 FGA 목록을선택하면된다. 46
그런다음인덱스를정의해야하는데현재판매테이블에는기본키에기본적으로적 용되는인덱스만이존재하고있고여기에추가로아래의표에나와있는것처럼판 매일자에넌클러스터드인덱스를만들어보자. 인덱스 유형 유니크 컬럼 종류 파일그룹 X 판매 기본키 Unique 판매번호 Non Clustered Index FGB XIE1 판매 Inversion Entry Non Unique 판매날짜 Clustered Index FGB 그런다음아래의그림처럼 X 판매 인덱스와 XIE1 판매 인덱스모두 Filegroup 콤보상자에서 FGB 를선택하여인덱스의파일그룹을정의한다. 이상으로파일그룹의의미와파일그룹을정의하는방법에대해서살펴보았다. 그런데위의예에는한가지크게잘못된내용이있다. 그내용은다음에소개할데이터베이스스키마생성에서설명하도록하겠다. 만일 RAID 장비를사용한다면구지복잡하게파일그룹등을정의해서사용해야할필요는없을것이다. 47
하지만 RAID 장비는비교적고가이고일반적으로소규모기업에서는 RAID 장비를이용하기가쉽지않으므로위와같이여러개의물리적인하드디스크에파일그룹을위치하는방법으로추가적인비용부담없이보다나은성능향상을기대할수있을것이다. ο 데이터베이스스키마생성 : 물리적데이터모델링단계를거치면서데이터베이스의스키마를디자인했다면이제이렇게정의된내용을실제데이터베이스객체로만들어질수있도록해야하는데이를데이터베이스스키마생성이라고한다. 우선디자인된스키마를데이터베이스스키마로만들기위해서는우선목적데이터베이스에연결해야한다. 데이터베이스에연결하기전에우선 SQL Server 에서 연습 DB 라는이름의데이터베이스를만든후 ERwin 에 Database 메뉴 / Database Connection 메뉴를선택하면아래와같이 SQL Server Connection 대화상자가나오게되는데여기서 User Name 은데이터베이스내에스키마를생성할수있는권한이있는사용자계정을정의하면되는데여기서는 sa 로사용자계정을사용하도록하겠다. sa 는 SQL Server 에서최고관리자계정이며 SQL Server 를설치할때비밀번호를정의했다면 Password 입력상자에도비밀번호를입력해야한다. sa 계정에아무런비밀번호도정의하지않았다면입력하지않는다. 그런다음 Database 입력상자에는스키마를생성할데이터베이스이름을정의하며 Server Name 은데이터베이스서버시스템의컴퓨터이름을정의한다. 48
그런다음 Connect 버튼을누르면연결을시도하게되는데연결이정상적으로이 루어지면 SQL Server Connection 대화상자가사라지게된다. 아니면에러메시지가나타난다. 정상적으로연결이됐다면이제데이터베이스스키마를생성해야한다. 데이터베이스스키마를생성하려면 Tools 메뉴 / Forward Engineer / Schema generation 메뉴를선택하면다음과같이 SQL Server Schema Generation 대화상자가나타나게된다. 여기서 Generatie 버튼을누르면스크립트가실행되면서 연습 DB 데이터베이스에 ERwin 에서정의한스키마가만들어지게되는데한가지주의할점은이상태에서는파일그룹이적용되지않는다는점이다. 앞에서정의한파일그룹의설정내용이실제데이터베이스에적용되도록하려면아래의그림처럼 Table 과 Index 에있는 Schema 옵션중에서 Physical Storage 옵션을선택해야만한다. 49
만약중간에에러가나면어떤종류의에러메시지인지잘확인해보도록하자. 그런다음해당내용을다시 ERwin 에서수정해주어야하며위의 Generate Database Schema 대화상자에서저장버튼을눌러위의스크립트를저장해두도록하자. 저장파일의확장자는 ere 이며메모장으로열어서내용을확인할수있다. 50
모두정상적으로작업을마쳤다면이제실제데이터베이스스키마가정상적으로생성되었는지를 SQL Server 에서확인해보도록하자. 만일 SQL Server 에서아래와같이개체 (Object) 들이보이지않는다면 F5 키를눌러서 REFRESH 한다음다시한번확인해보자. 테이블 (Table), 뷰 (View), 저장프로시저 ( Stored Procedure), 규칙 ( Rule), 기본값 ( Default ), 트리거 (Trigger) 등등모든내용들을살펴보자. * 참고 : 앞에서파일그룹을정의해서사용했는데실제로판매테이블과판매테이블의인덱스가원하는파일그룹에저장되었는지를확인하려면쿼리분석기에서 SP_HELP 판매 를실행하면아래와같이테이블과인덱스들의파일그룹에대한정보를확인할수있다. 51
위의화면에서 Data_located_on_filegroup 은판매테이블이위치해있는파일그룹에대한정보를보여주고있으며그밑에인덱스와인덱스유형그리고인덱스가위치해있는파일그룹에대한정보를보여주고있다. 그런데판매테이블의위치가 FGB 로정의되어있다. 이전실습에서분명히판매테이블의파일그룹을 FGA 로정의했었다. ERwin 으로가서다시한번확인해보도록하자. 그런데이게왠일인가? 혹시버그? 그렇다면데이터베이스스키마를생성할때저장했던스크립트를열어서판매테이블과관련한내용을확인해보자. CREATE TABLE 판매 ( 판매번호판매날짜판매단가판매수량판매금액회원번호상품코드 ) ON "FGA" bigint NOT NULL, char(8), int, int, int, char(8) NOT NULL, char(6) NOT NULL Execution Successful 52
CREATE CLUSTERED INDEX XIE1 판매 ON 판매 ( 판매날짜 ) ON "FGB" Execution Successful ALTER TABLE 판매 ADD PRIMARY KEY NONCLUSTERED ( 판매번호 ) ON "FGB" Execution Successful 아마도인덱스에대해서제대로공부하신분들이라면위상황에대한대답을할수있을것이다. 클러스터드인덱스는인덱스의리프레벨 (Leaf Level) 이데이터페이지 (Data Page) 이다. 해서위의소스코드에서테이블을만들때는 FGA 파일그룹에만들어지지만판매날짜컬럼에클러스터드인덱스를만들면서인덱스의리프레벨 (Leaf Level) 즉데이터페이지 ( Data Page ) 가 FGB 파일그룹으로재정의되어졌다. 해서판매테이블이최종적으로위치하게되는파일그룹은 FGB 인것이다. 그렇기때문에아무리테이블의파일그룹과인덱스의파일그룹을구분한다하더라도클러스터드인덱스가만들어지면클러스터드인덱스가정의된파일그룹에테이블이위치하게되기때문에클러스터드인덱스는테이블을저장하고자하는파일그룹에정의해야하며넌클러스터드인덱스를테이블과다른파일그룹에저장해야한다. 위의파일그룹에대한예는다음도표처럼판매테이블에인덱스를정의해야한다. 인덱스 유형 유니크 컬럼 종류 파일그룹 X 판매 기본키 Unique 판매번호 Non Clustered Index FGB XIE1 판매 Inversion Entry Non Unique 판매날짜 Clustered Index FGA 53
그런다음다시한번쿼리분석기에서 SP_HELP 판매 문을실행하면다음과같이 테이블과판매날짜컬럼의인덱스는 FGA 파일그룹에그리고판매테이블의 기본키인덱스는 FGB 파일그룹에있는것을확인할수있다. ο 프린트하기 : 이제어느정도 ERwin 의기능에대해서살펴보았다. ERwin 은이러한기능외에도아주많은다양한기능을가지고있으며그러한기능들의사용방법이나내용들은 ERwin 정식매뉴얼을참조하도록하자. 이제마지막으로프린트출력물에관해서정리해보도록하겠다. 출력을하려면우선가로방향으로출력할것인지아니면세로방향으로출력할것인지에관해먼저선택을해주어야하는데이에대한설정은 File / Print Setup 메뉴에서설정할수있다. 여기서는가로방향을선택한다. 출력방향이정해진다음 File 메뉴 / Print 메뉴를누르면다음과같이 Print 대화상자가나타나는데출력용지의외곽선을선택해서출력물의위치와사이즈를정의할수있으며오른쪽밑에 Fit Model 버튼을누르면전체디자인했던스키마가모두보여질수있도록자동으로사이즈를최적화하게된다. 그런다음 Print 버튼을눌러출력하면된다. 54
55