ER-Win 4.0 Database Modeling Ⅰ. Logical Design 1.3 Logical 영역과 Physical 영역의 전환 · · · · · · · · · · · · · · · · · · · 3 1.4 엔티티(Entity) 생성 · · ·· · · · · · · · · · · · · · · · · · · · · · · · · · · · ·· · 3 1.5 식별 관계 & 비식별 관계 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 3 1.6 다 대 다 관계 정의 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 4 1.7 재귀적 관계 정의 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 5 1.8 슈퍼타입과 서브타입 · · · · ·· · · · · · · · · · · · · · · · · · · · · · · · · · · 5 1.9 Subject Area · · · · · · · · · · · · · · · · · · · · · · · ·· · · · · · · · · · · · · 6 Ⅱ. Physical Design 2.1 Physical 모델링 · · · · · · · · · · · · · · · · · · · · · · · ·· · · · · · · · · · · 7 2.2 Column Data Type과 Size · · · · · · · · · · ·· · · · · ·· · · · · · · · · · · 7 2.3 Check, Rule, Default 제약조건 · · · · · · · · · · · · ··· · · · · · · · · · ·8 Ⅲ. Physical Design 3.1 파일그룹의 정의 · · · · · · · · · · · · · · · · · · · · · · · ·· · · · · · · · · · · 9 3.2 데이타베이스 스키마 생성 · · · · · · · · · · · · · · · ·· · · · · · · · · · 10 Ⅳ. Print 4.1 Print(출력) · · · · · · · · · · · · · · · · · · · · · · · ·· · · ·· · · · · · · · · · 11
1.1 ER-Win 실행 1) 시작 →프로그램 →Computer Associates ERWin4.0 → ERWin4.0을 선택하여 ERWin 실행한다. 새로운 다이어그램 작성시 :"Create a new model" 선택 기존의 파일을 열어서 편집시 :"Open an existing file" 선택 (Erwin의 확장명은 xxx.er1이다.) 2) 그림 1-1의 Create Model 대화상자에서 원하는 New Model Type을 선택한다. "Logical/Physical"옵션 버튼 선택 : 논리적 / 물리적 모델링을 자유롭게 옮겨가며 모델링 가능 ( 특별히 논리적모델링이나 물리적 모델링만 하는게 아니면 항상 이 옵션을 선택 ) 3) Target Database에서는 원하는 Database와 Version을 선택한다. (여기선 SQL Server를 선택하고 Version은 2000으로 한다.) 4) "Logical/Physical" 옵션 버튼 선택 후 OK 버튼을 누르면 그림1-2와 같은 메인화면이 나타난다. 메인화면은 도구/메뉴와 Model Explorer 그리고 다이어그램 등 크게 세 부분으로 구성 1. 도구/메뉴 3. 다이어그램 영역 2. Model Explorer [그림1-1] CreateModel 대화상자 [그림1-2] 메인화면의 구성 1.2 ER-Win 표기방식 메뉴에서 Model / Model Properties를 선택한 후 Notation탭에서 두 방식중에 하나를 설정한다. IE(Information Engineering) - 일반적으로 사용하는 방식 Idef1x(Integration DEFinition for Information Modeling) 1) ER-Win 메뉴의 Model에서 Mode Properties를 선택한다. 2) Model Properties 대화상자에의 Notation 탭에 있는 Logical 과 Physical Notation 영역에서 IE 옵션 버튼을 선택한다. 3) 그림1-3과 같이 Toolbox가 변경되며, 각 버튼의 의미는 아래와 같다. Many to many Relationship (다대다 관계) Entity (엔티티) Exclusive Sub category (슈퍼타입과 서브타입) Non-Identifying Relationship (비식별관계) Identifying Relationship (식별관계) [그림1-3] ER-Win 표기방식 변경
1.3 Logical 영역과 Physical 영역의 전환 ER-Win에서 논리적 데이터 모델링과 물리적 데이터 모델링을 전환하기 위해서는 그림1-4처럼 ERWin Toolbar 오른쪽의 콤보박스를 선택하면 된다. [그림1-4] ERwin Toolbar에서의 모델링 전환 ※ ER-Win을 처음 열면서 "Logical/Phisical" 옵션을 선택하지 안으면 논리적 모델링과 물리적 모델링 사이를 전환할 수 없다. 1.4 엔티티(Entity) 생성 1) Erwin Toolbox의 Entity 버튼을 선택한 뒤 다이어그램 상의 바탕화면에 클릭하여 생성한다. 2) 그림 1-5의 세 영역을 이동하기 위해서는 Tab키를 사용하며, 기본키와 일반 속성 영역에 여러 속성을 입력하고 자 할 때는 엔터키를 치면 새로운 속성을 기술할 공간이 생성된다. E/1 엔티티(Entity)명 기본키(Primary Key) 영역 일반속성(Attribute) 영역 [그림1-5] Entity의 세 영역 [Example1] 사원 Entity 1.5 식별 관계 & 비식별 관계 관계의 유형에는 식별관계와 비식별관계가 있으며 Erwin Toolbox에서 네번째 버튼(식별관계선)과 여섯번째 버튼 (비식별관계)를 이용한다. (그림1-3 참조) 식별관계 (Identifying Relationship) : 부모 테이블의 기본키 혹은 복합키가 자식 테이블의 기본키 혹은 복합키의 구성원으로 전이된다. 비식별 관계 (Non-Identifying Relationship) : 부모 테이블의 기본키 혹은 복합키가 자식테이블의 일반속성그룹의 구성원으로 전이된다. 1) Erwin Toolbox에서 적절한 관계선 버튼을 선택한다. 2) 부모테이블을 먼저 선택한 뒤 자식테이블을 선택한다. 테이블의 기본키가 자식테이블에 자동으로 전이 된다. 3) Exampl2의 부서-사원테이블에서 부서는 사원의 부분적인 정보를 표현하므로 일반 속성 그룹의 구성원으로 전이 되어야 한다. 그러므로 비식별관계이다. 사원-신체정보 테이블에서는 사원들 개개인의 신체정보를 저장 하게 되므로 사원 테이블의 기본키가 신체정보 테이블의 기본키로 전이되어야 하므로 식별관계가 된다. 비식별관계 식별관계 Zero, One or More Exactly 1 [Example2] 부서-사원-신체정보 테이블간의 관계
3) 관계를 형성한 뒤에는 관계에 관한 옵션을 설정해야 하므로, 관계선을 선택한 후 오른쪽 버튼을 눌러 Popup 메뉴의 Relationship Properties 메뉴를 선택한 후 그림1-6과 같은 Relationships 대화상자에서 설정한다. Verb Phrase : 부모와 자식 그리고 자식과 부모와의 관계에 대한 설명적인 문구 Cardinality : 두 테이블간의 레코드들이 매칭되는 정보 Relationship Type : Non-Identifying(비식별)인 경우, Nulls을 허용하면 Nulls Allowed를 허용하지 않으면 No Nulls를 선택 [그림1-6] Relationships 대화상자 4) 그런 다음 OK 버튼을 누르고 사원 테이블과 신체 정보 테이블 사이의 관계선도 이와 마찬가지로 설정하면 Example2와 같다. Example2의 부서와 사원의 관계에서는 하나의 부서에 사원이 없을 수도, 한명만 있을 수도 아니면 여러명 있을 수도 있다고 가정하여 "Zero, One or More" 옵션을 선택했고, 사원과 신체정보 테이블은 정확히 1 대 1로 매치 되야 한다고 가정하여 Exactly 에 1을 입력하여 "Exactly1" 관계로 정의하였다. 1.6 다 대 다 관계 정의 1) 다대다 관계에 있는 엔티티들은 부모와 자식의 관계가 아니므로 ER-Win Toolbox에서 다대다 관계선을 선택한 후 순서에 상관없이 두 엔티티를 선택한다. 2) 관계 Entity를 정의하기 위해 다대다 관계선에서 오른쪽 버튼을 누른 후에 팝업 메뉴에서 "Create Association Entity" 메뉴를 선택하거나, Erwin Transform Toolbar에서 "Many to Many Transform" 버튼을 클릭하면 마법사가 나타난다. 3) Entity Name을 정의하고 Entity Comment와 Transform Name은 변경을 원할 경우만 입력하고 마침 버튼을 누른다. Example3 에서는 공급업체와 상품 엔티티 간에 관계 Entity Name을 "입고" 로 하였다. 5) 다음으로 입고와 판매 엔티티에 필요한 속성을 추가한다. ※ 대리키의 사용 Example3 에서 보듯이 관계 Entity를 생성하면 기본적으로 공급업체와 상품 테이블의 기본키가 입고 테이블의 PK로 형성된다. 여기서 두 개의 컬럼을 이용해서 각각의 레코드를 식별할 수 없는 경우 다른 속성을 PK로 추가해야 한다. 여기서는 입고번호를 "기본키" 로 정의해서 사용했는데, 이를 대리키라 한다. 대리키 사용을 위해서는 모든 관계선을 차례대로 선택하여 오른쪽 버튼의 Relationship Properties 메뉴를 선택한 후 Relationships 대화상자에서 Non-Identifying 옵션과 No Nulls 옵션을 선택한다. 그러면 업체코드와 상품코드 는 일반속성이 되고, 그 후에 새로운 속성(입고번호)를 PK영역에 생성한다.
[Example4] 사원 Entity의 재귀적 관계 다대다 관계선 생성 관계 Entity 생성 대리키 생성 [Example3 ] 다대다 관계 생성 1.7 재귀적 관계 정의 재귀적 관계란 자기 자신과 관계 맺는 것을 말한다. 1) 엔티티를 생성 후 관계선을 이용하여 생성한 엔티티를 두 번 선택하면 재귀적 관계를 형성할 수 있다. 2 ) 재귀적 관계를 정의 할 때는 Primary Key가 그 엔티티의 일반 속성이 되야 하므로 반드시 비식별 관계로 정의 해야 한다. 3) 하나의 엔티티에 같은 이름의 컬럼이 존재할 수 없으므로 Foreign Key의 이름을 바꿔줘야 한다. 관계선에서 오른쪽 버튼을 누른 후 Relationship Properties를 선택하여 Relationship 대화상자에서 Rolename탭의 Rolename칸에 적절한 속성명을 입력한 후 확인 버튼을 누른다. 그림 추가 [Example4] 사원 Entity의 재귀적 관계 1.8 슈퍼타입과 서브타입 1) Super와 Sub에 해당하는 Entity를 생성한다. 2) Erwin Toolbox의 "Exclusive sub-category" 버튼을 선택한 후, 슈퍼타입을 먼저 클릭하고 서브타입 중에 하나를 선택한다. 3) 중간의 교차점을 선택한 후 또 다른 서브타입 엔티티를 클릭한다. 4) 슈퍼타입과 서브타입의 관계를 Exclusive와 Inclusive 유형 중에 선택한다. 중간의 교차점을 선택한 후 오른쪽 버튼을 누르고 팝업메뉴에서 SubType Relationships… 메뉴를 클릭하여 Subtype Relationship 대화상자에서 Example5 에서 한 사원이 정규직이면서 동시에 임시직 일수 있다면 Inclusive 유형이다. 그러나 한 사원은 반드시 정규직 혹은 임시직 둘 중에 하나에만 속해야 하므로 Exclusive 유형이다.
[Example5 ] 슈퍼타입과 서브타입의 관계 설정 [Example5 ] 슈퍼타입과 서브타입의 관계 설정 1.9 Subject Area 1) Model Exploer에서 Subject Area를 클릭하면 Subject Areas 대화상자가 나타나게 되는데, 그림 1-7과 같이 Main Subject Area가 리스트에 등록되어진 모습을 볼 수 있으며, Subject Areas 대화상자에서 Members 탭을 누르면 작성한 엔티티들이 모두 포함되어 있는 모습을 볼 수 있다. 2) 새로운 Subject Area를 생성하기위해, 대화상자에서 New 버튼을 클릭한 후 ‘입고정보’라고 입력하고, Members 탭을 선택한다. 그런 다음 Available Objects 리스트 상자에서 원하는 엔티티를 선택한 후 화살표 버튼을 이용하여 Included Objects 리스트 상자로 옮긴다. 3) OK 버튼을 누르면 아래와 같이 선택된 엔티티만의 Subject Area가 보여지게 되며, 생성된 Subject Area 에서 변경된 사항은 Main Subject Area에도 반영된다. [그림1-7] Subject Area 생성 Main Subject Area 생성된 ‘입고정보’ Subject Area
datatype 및 size가 변경된 테이블 2.1 Physical 모델링 1) Erwin Toolbar의 오른쪽 콤보박스에서 Physical을 선택하면 된다. 논리적 모델링에서 물리적 모델링으로 전환할 경우 ER-Win에서는 용어가 엔티티(Entity)에서 테이블(Table)로 바뀌며 속성(Attribute) 또한 컬럼(Colume)으로 바뀌게 된다. 2) Erwin 실행시 DBMS를 선택하지 않았다면, 이 단계에서 선택해야 한다. 메뉴의 Database에서 Choose Databasse 를 선택하여 개발 DBMS를 선택하는 Target Server 대화상자에서 원하는 RDBMS와 Version을 선택한다. (앞으로의 예제는 Target SQL DBMS를 SQL Server 2000으로 하여 설명한다.) [그림2-1] ERwin Toolbox 전환 2.2 Column Data Type과 Size 1) Logical 모델링에서 Physical 모델링으로 전환하면 기본적으로 컬럼의 Data Type과 Size가 함께 보여지게 된다. 2) 테이블을 선택한 뒤 오른쪽 버튼을 누른 팝업 메뉴에서 Columns 메뉴를 선택하여 그림 2-2의 Columns 대화상자 에서 컬럼의 Data Type과 Size를 정의한다. 그 외에도 컬럼의 Null 허용여부, IDENTITY 속성 설정, Rule과 Check, Default 등을 정의할 수 있으며 인덱스도 정의할 수 있다. datatype 및 size가 변경된 테이블 바꿀것. [그림2-2] ERwin Toolbox 전환 2.3 Check, Rule, Default 제약조건 아래의 성적테이블에 대해 표에 나타난 제약조건을 부여해 보자. 제 약 조 건 적 용 컬 럼 내 용 CHECK 학점 학점 컬럼에 허용될 값(A,B,C,D,F) RULE 국어, 영어, 수학 0~100사이의 값의 입력 범위를 각 컬럼에 적용 DEFAULT 값을 입력하지 않은 경우 default로 0이 입력
[그림2-3] Check Constraint ① 성적 테이블의 Columns 대화상자에서 Valid의 뒤쪽 버튼을 클릭하면 Validation Rules 대화상자가 나타난다. ② New 버튼을 누른 뒤 Validation Rules 대화상자에서 Check Name을 정하여 입력한 후 OK 버튼을 누른다. ③ General 탭에서 3가지 Type 중에 하나를 선택해야 하는데, 학점 컬럼의 경우 데이터를 A,B,C,D,F로 한정해야 하기 때문에 Type에서 "Valid Values List" 옵션 버튼을 선택하고 그림2-3과 같이 Valid Value 컬럼에 값을 정의하면 된다. ④ 그런 다음 SQL Server 탭을 선택하고 Generate As 영역에서 "CHECK Constraint" 옵션을 선택한다. ⑤ OK 버튼을 누르고 Columns 대화상자로 돌아가서 학점 컬럼을 클릭한 후 Valid 콤보상자에서 생성한 Check 제약조건을 선택한다. [그림2-3] Check Constraint 2) Rule 제약조건 ① 컬럼에 입력될 수 있는 값의 범위를 정의하기 위해서 New 버튼을 누른 후 Rule Name(점수Rule) 을 입력한 뒤 두번째 옵션 버튼인 Min/Max를 선택한다. ② 각 점수는 0 부터 100점까지 이므로 min에 0을 입력하고, max에 100을 입력한다. 그리고 현재 숫자형 데이터의 범위를 지정하고 있으므로 ‘Quote’ 체크 박스는 선택하지 않는다. ③ ‘점수Rule’은 국어, 영어, 수학 컬럼에 모두 적용될 제약조건이다. 즉, Rule로 만들어서 필요한 여러 컬럼에 바인딩 해야 하므로 SQL Server탭에서 "sp_bindrule" 옵션을 선택한다. ④ OK버튼을 누른 뒤 Columns 대화상자에서 국어, 영어, 수학 컬럼의 Valid 콤보상자에서 각각 ‘점수Rule’를 선택한다. [그림2-4] Rule Constraint
3) Default 제약조건 ① 국어, 영어, 수학 컬럼에 데이터가 입력되지 않을 때 기본적으로 0값이 입력될 수 있도록 하기 위해서 Columns 대화상자에서 Default 뒤쪽의 버튼을 클릭한다. ② New 버튼을 누른 뒤 Default Name(점수Default)을 입력하고 확인 버튼을 누른 뒤 Default 값을 정의한다. ③ 생성한 Default항목인 ‘점수Default’를 선택한 후 값에 0을 입력하고 sp_bindfault를 선택한다, ④ OK버튼을 누르고 Coulmns 대화상자에서 국어, 영어, 수학컬럼에 Default 콤보상자를 ‘점수Default’로 선택한다. [그림2-5] Default 값 설정 3.1 파일그룹의 정의 데이터베이스는 최소한 하나 이상의 데이터 파일과 최소한 하나 이상의 로그 파일로 구성되어 진다. 1) 파일 : 데이터 파일은 실제 데이터베이스의 개체와 데이터가 저장되어지는 파일을 말한다. 주 파일 : DB 생성시 가장 처음으로 만들어지는 파일을 말하며 기본적으로 시스템 테이블들이 만들어 지는 파일 보조 파일 : 데이터베이스 생성시 추가적으로 만들어지는 파일 2) 파일 그룹 : 데이터 파일은 파일 그룹으로 관리되어 진다. PRIMARY 파일 그룹 : 데이터베이스에서 가장 처음 만들어지는 파일은 기본적으로 PRIMARY 파일 그룹에 포함되어지며 PRIMARY 파일 그룹의 이름은 바꿀 수 없다. 사용자 정의 파일 그룹 : PRIMARY 파일 그룹 외에 관리자가 관리상의 목적으로 추가로 파일그룹을 생성하고 관리할 수 있다. DEFAULT 파일 그룹 : DEFAULT 파일 그룹은 데이터베이스에 테이블이나 인덱스를 만들 때 기본적으로 위치하는 파일 그룹을 말한다. 데이터베이스를 만들 때 기본적으로 PRIMARY 파일 그룹이 DEFAULT 파일 그룹이 된다. 관리자는 관리상의 목적으로 DEFAULT 파일 그룹을 사용자 정의 파일그룹으로 변경할 수 있다. 1) 설정한 Target SQL DBMS에서 새로운 Database를 생성한다. 예를 들어 SQL Server2000에서 다음과 같이 datafile1,2를 포함하는 파일그룹 FGA와 datafile 3,4를 포함하는 파일그룹 FGB로 구성된 ‘연습DB’라는 데이터 베이스 생성 했다고 하자. eg) 연습DB FGA – datafile1, datafile2 FGB – datafile3, datafile4
[그림3-2] SQL Server 연결 대화상자 2) 실제 DB를 생성한 다음에는 ER-Win에서 생성한 파일 그룹을 Model Explorer의 ‘Filegroup’에서 정의한다. Filegroup의 팝업 메뉴에서 New메뉴를 선택하면 파일 그룹의 이름을 입력할 수 있다. 3) 생성되어 있는 중에 ‘성적’테이블을 파일그룹 FGA에 저장되도록 정의하려면 성적 테이블을 선택하고 팝업 메뉴에서 Table Properties → Physical Property 메뉴를 선택하면 SQL Server Tables 대화상자가 나타난다. 그 대화상자에서 Filegroup 콤보상자에는 정의해 놓은 파일그룹 들(FGA,FGB)이 나타나는데 그 중 FGA를 선택하면 된다. [그림3-1] Filegroup의 정의 4) 인덱스를 FGB 파일 그룹에 만들도록 정의하려면 우선 판매 테이블을 선택하고 팝업 메뉴에서 Indexes.. 메뉴를 선택한 뒤 Sql Server 탭에서 Filegroup 콤보박스에서 FGB를 선택하면 된다 5) 그런 다음 OK 버튼을 눌러 내용을 적용한다. 3.2 데이터베이스 스키마 생성 물리적 데이터 모델링 단계를 거치면서 데이터베이스의 스키마를 모두 정의 했다면 그 정의된 내용을 실제 데이터 베이스 객체로 만들어질 수 있도록 해야 하는데 이를 데이터 베이스 스키마 생성이라고 한다. 1) 데이터베이스 스키마를 만들기 위해서는 우선 데이타베이스에 연결해야 한다. 연결하기 위해서는 Database 메뉴에서 Database Conncetion 메뉴를 선택하면 그림 3-2와 같은 SQL Server Connection 대화상자가 나타난다. 2) User Name은 데이터베이스 내에 스키마를 생성할 수 있는 권한이 있는 사용자 계정을 정의하면 된다, [그림3-2] SQL Server 연결 대화상자 3) Conncetion 버튼을 누르면 연결을 시도하게 되는데 연결이 정상적으로 이루어지면 SQL Server Conncetion 대화상자가 사라지게 되며 아니면 에러 메시지가 나타난다. 4) 정상적으로 연결이 됐다면 데이터베이스 스키마를 생성하기 위해 Tools 메뉴의 "Forward Engineer/Schema generation" 메뉴를 선택하면 그림3-3의 SQL Server Schema Generation 대화상자가 나타나게 된다. 앞에서 정의한 파일그룹의 내용이 실제 데이터베이스에 적용되도록 하려면 아래의 그림처럼 Table과 Index에 있는 옵션 중에서 "Physical Storage" 옵션을 선택해야만 한다.
[그림3-3] Schema Generation 대화상자 5) 대화상자에서 Generate 버튼을 누르면 스크립트가 실행되면서 SQLServer 2000에서 생성한 DB에 ER-win에서 정 의한 스키마가 만들어 지게 된다. 6) 모두 정상적으로 작업을 마쳤다면 이제 실제 데이타베이스 스키마가 정상적으로 생성 되었는지를 확인해 본다. 4.1 Print(출력) 1) File / Print Setup 메뉴에서 가로로 출력할지 세로로 출력할 지를 선택한다. 2) 출력 방향이 정해진 다음 File 메뉴 / Print 메뉴를 누르면 Print 대화상자가 나타나는데 출력 용지의 외곽선을 선택해서 출력물의 위치와 사이즈를 정의할 수 있으며 오른쪽 밑에 Fit Model 버튼을 누르면 전체 디자인 했던 스키마가 모두 보여질수 있도록 자동으로 사이즈를 최적화하게 된다. 3) Print 버튼을 눌러 출력한다.