chapter 04. 모델링 실습
ERWin 실행하기 1. [시작] → [프로그램] → [Computer Associates] → [All Fusion] → [ERwin Data Modeller] → [ERwin] 선택 2. ERwin 초기 대화상자에서 항목을 선택 처음 ERwin 파일을 작성하는 경우 기존 ERwin 파일을 여는 경우 1 항목 선택 2 OK 버튼 클릭 ERWin 대화상자
3. 'Create Model' 대화상자 표시 모델의 유형 선택('Logical/Physical' 옵션 버튼 선택) 'Target Database' 항목에서 사용할 데이터베이스 선택. 3 OK 버튼 클릭 1 모델 유형 선택 2 데이터베이스 종류 선택
4. ERwin 메인 화면 표시 모델탐색기 (Model Explorer) 다이어그램 윈도우 (Diagram Window)
4.1 ERWin 표기 방식 선택 IE(Information Engineering) 방식 정보 공학 표기 방식 모델링할 때 가장 많이 사용하는 유형 Ideflx(Integration DEFinition for Information Modeling) 방식 미국방성에서 프로젝트 표준안으로 개발한 표기 방식 ERwin을 설치하면 Ideflx 방식이 선택 IE 표기방식으로 변경 이용 1 [Model] → [Model Properties...] 메뉴 선택 => 모델 속성(Model Properties) 대화상자 표시
엔티티를 생성하고 관계를 정의하는데 사용하는 도구모음 2 IE 관련 항목 선택 모델 속성(Model Properties) 대화상자 3 OK 버튼 클릭 => ERWin Toolbox 변경 ERWin Toolbox 엔티티를 생성하고 관계를 정의하는데 사용하는 도구모음
4.2 모델링 방법 선택 논리적 데이터 모 델링과 물리적 데이터 모델링 지원. ERWin 도구 모음의 오른쪽의 콤보상자에서 선택 모델링 방법 선택
개체(Entity) 생성하기 논리적 모델에서 개체는 데이터베이스에서의 테이블 의미 개체 생성 방법 1. ERwin Toolbox에서 버튼을 클릭 2. 모델 탐색기(Model Explorer) ‘Entities’ 폴더에서 마우스 오른쪽 버튼을 클릭하고 New 메뉴 선택
개체의 영역 개체 영역 이동 탭(Tab) 키 또는 방향키(↓)를 이용 영역에 속성 추가 엔터(Enter)키 이용 생성된 개체 개체 이름 개체 영역 이동 탭(Tab) 키 또는 방향키(↓)를 이용 영역에 속성 추가 엔터(Enter)키 이용 기본키 영역 속성 영역 속성의 복사/이동 속성을 다른 개체에 복사하려면 CTRL+ALT+마우스 왼쪽 버튼 클릭하고, 속성을 다른 개체에 이동하려면 Shift+Alt+마우스 왼쪽 버튼 클릭 생성된 고객 개체
관계 설정하기 관계 관계의 유형 두 개체 사이의 업무적인 연관성 식별 관계(Identifying Relationship) 부모 테이블의 기본키나 복합키가 자식 테이블의 기본키나 복합키의 구성원으로 전이되는 관계 비식별 관계(Non-Identifying Relationship) 자식 테이블의 일반 속성(Attribute) 그룹의 구성원으로 전이되는 관계 ERwin Toolbox 도구를 사용하여 관계 설정 식별관계 비식별관계 고객 개체로부터 상품 개체로 끌어준다.
관계의 속성 설정하기 개체 사이의 관계선을 선택한 후, 마우스 오른쪽 버튼을 눌러 팝업 메뉴에서 [Relationship Properties] 메뉴를 선택하여 ‘Relationships’ 대화상자 표시 관계에 대한 설명 입력 관계 타입과 NULL 속성 설정 카디널리티 설정
카디날리티(Cardinality) 두 개체 사이에 레코드의 연결 정보 ‘One or More’ 항목 ‘Exactly’를 선택하고 임의의 숫자를 입력
상세한 정보는 ERwin 다이어그램 빈 공간에서 오른쪽 버튼을 누른 뒤 팝업 메뉴에서 [Relationship Display] → [Cardinality] 메뉴 선택 카디날리티 보기 설정 변경
다대다 관계 다대다 관계는 논리적으로 존재할 수 있지만 물리적으로는 존재할 수 없다. ERwin Toolbox의 관계선을 이용하여 다대다 관계 표현 가능. 다대다 관계에 있는 개체들은 부모와 자식의 관계가 아니므로 다대다 관계선을 선택한 후 순서에 상관없이 두 엔티티를 차례로 선택하면 관계가 설정됨. 다대다관계 설정된 다대다 관계
다대다 관계 변환 다대다 관계선에서 오른쪽 버튼을 누른 뒤 팝업 메뉴에서 [Create Association Entity] 메뉴를 선택하거나 다대다 관계선을 선택한 후 'ERWin Transform Toolbar'에서 'Many to Many Transform'버튼 클릭 Create Association Entity 메뉴 ERWin Transform Toolbar
연관 개체 (상품공급)를 사용하여 다대다 관계 해소
도메인(Domain) 설정하기 모델 탐색기(Model Explorer) 대화상자의 [Domain] 탭에서 정의 논리적 모델링 단계이므로 단순히 문자형인지, 숫자형인지, 날짜형인지만 구분
도메인에 대한 속성은 도메인 사전(Domain Dictionary) 대화상자를 사용하여 변경 속성이름에 객체의 이름 추가하기 ‘Name Inherited by Attribute’ 입력상자의 내용이 기본적으로 %AttDomain으로 정의되어 있는데 이 앞에 %EntityName을 붙여서 %EntityName%AttDomain이라고 정의하면 적용되는 모든 속성 이름 앞에 개체이름이 함께 붙게 된다.
개체 이름이 추가된 속성
Subject Area 사용하기 Subject Area 업무적으로 관련이 있거나 개발자가 보려고 하는 내용만으로 새로운 화면 구성 개체와의 관계를 쉽게 확인 가능 Subject Area에서 변경된 내용은 ERD에 반영되어 편리한 작업 가능 데이터베이스 스키마를 생성할 때 Subject Area별 로 스키마를 데이터베이스에 생성 가능 ERwin Toolbar의 Create Subject Area 버튼( )이나 Model Explorer의 Subject Areas 탭 또는 [Model] → [Subject Areas] 메뉴를 사용하여 작업 Create Subject Area 버튼
Subject Area 대화상자 Model Explorer의 Subject Areas 탭
'상품정보' Subject Area 생성하기 1. Subject Areas 대화상자를 표시한 다음 ‘New’ 버튼을 누르고 대화상자에 ‘상품정보’ 입력 ‘OK’ 버튼을 눌러 ‘상품정보’를 Subject Area 항목에 등록
2. ‘Available Objects’ 리스트 상자에서 원하는 개체를 하고 ‘Included Objects’ 리스트 상자에 개체 추가 추가된 개체 새 Subject Area(상품 정보)에 추가된 개체
물리적 모델링 모델링 방법 선택 데이터베이스 선택 ERwin을 처음 실행할 때 Target Database를 선택하지 않은 경우 [Database] → [Choose Database..] 메뉴를 이용하여 데이터베이스 종류와 버전을 선택
논리적 모델링에서 물리적 모델링으로 전환하면 데이터 형식(Data Type)과 데이터의 크기(Size)가 표시 물리적 모델링에서 다이어그램 윈도우의 표시 방법
컬럼의 데이터 타입과 크기 설정 기본값 컬럼의 데이터 형식과 크기 정의하기 모든 컬럼은 기본적으로 사용한 도메인이 문자형(String)인 경우는 char(18)로, Datetime인 경우는 Date로 데이터 형식과 크기가 설정됨 컬럼의 데이터 형식과 크기 정의하기 테이블을 선택한 뒤 팝업 메뉴에서 [Columns..] 메뉴 선택
데이터 형식과 크기 설정 대화상자 오른쪽의 두 번째 탭(데이터베이스가 오라클이므로 ORACLE로 표시됨)을 눌러 데이터 형식과 크기를 설정하고, 컬럼의 Null 허용 여부, IDENTITY 속성 설정, Rule과 Check, Default, 인덱스등 정의.
Check 제약조건과 Default(기본값) 설정하기 테이블을 만들거나 수정하면서 정의하는 제약조건 데이터가 컬럼에 들어올 수 있는 경우의 수를 제한해서 데이터베이스의 무결성을 보장하기 위한 방법으로 사용 Check 조건 설정 방법 1. ‘Valid’ 오른쪽의 버튼( )을 클릭하여 Validation Rules 대화상자 표시
2. [New Validation Rule] 대화상자에서 ‘Logical’과 ‘Physical’ 입력상자에 '주문수량Check' 입력 -> Ok 버튼 클릭 3. 대화상자에서 [General] 탭의 Type 항목의 ‘User-Defined’ 항목 옵션을 선택한 후 ‘Validation’ 입력상자에 '주문수량 >= 0'이라고 입력 Min/Max 값의 범위를 제한하는 경우 사용 Valid 값의 목록을 제한하는 경우 사용
4. ‘OK’ 버튼을 눌러서 Columns 대화상자로 돌아간 뒤 ‘주문수량’ 컬럼을 선택한 후 Valid 콤보 상자에서 '주문수량Check'를 선택하고 각 필드에 적합한 Check 제약 조건을 연결 ‘주문수량 ‘ 컬럼의 Check 제약 조건 설정
Default 값 정의 1. [Columns] 대화상자에서 Default 오른쪽의 버튼( )을 클릭 -> [Default/initial Values] 대화상자 표시 -> ‘NEW’ 버튼을 눌러 Default 이름 입력
2. 컬럼에 사용할 Default 값 지정
인덱스(Index) 생성하기 인덱스 생성 방법 테이블을 선택한 뒤 팝업 메뉴에서 [Indexes] 메뉴 선택 [Columns] 대화 상자의 [Index] 탭에서 정의 [Model] → [Indexes] 메뉴 이용 인덱스(Index) 대화상자
자동으로 생성되는 인덱스 기본키에 의해 자동으로 만들어진 인덱스 추가. 자동으로 생성된 인덱스 : 'XPK고객‘ 인덱스의 유형(Type)은 'PK' 즉, 기본키 인덱스 인덱스에 포함된 컬럼은 '고객번호' 컬럼 의미. 자동으로 생성되는 기본키 인덱스 인덱스 확인 인덱스는 Columns 대화상자의 Index 탭에서도 확인
인덱스 추가하기 인덱스(Index) 대화상자에서 ‘New’ 버튼을 눌러 [New Index] 대화상자에 인덱스 이름 추가 모델 탐색기(Model Explorer)를 사용하여 생성 인덱스 폴더에서 바로가기 메뉴에서 [New] → [Unique] 메뉴 또는 [New] → [Non-Unique] 메뉴를 선택하여 새 폴더를 인덱스 목록의 아래쪽에 추가
모델 팀색기에서 인덱스 생성
뷰(View) 정의하기 ERwin Toolbox에 있는 ViewTable 아이콘( )을 선택해서 생성. 뷰는 둥근 사각형의 점선으로 표시. 테이블 또는 뷰와 뷰 사이의 관계선은 뷰 테이블 쪽에 둥근 원을 포함해 그려짐. 뷰 테이블 뷰 관계
표기방법 뷰의 조건 설정 <뷰_컬럼_이름>: <기본테이블_이름>.<기본테이블_컬럼_이름> <뷰_컬럼_이름>: <수식> 뷰의 조건 설정 조인의 조건이 정의되지 않은 Cross Join 상태의 뷰가 만들어지므로 조인의 조건과 정열 조건 등을 따로 지정해 주어야 함. 뷰의 바로가기 메뉴에서 [Database View Properties]메뉴 선택 [Database View Properties] 메뉴
뷰(views) 대화상자 [Select] 탭 : 뷰에 사용된 테이블의 나머지 컬럼들과 뷰로 구성된 컬럼들 표시 [From] 탭 : 뷰에 사용된 테이블들이 표시 [Where] 탭 : 조인 조건을 포함한 조회 조건 등을 정의 [SQL] 탭 : 완성된 뷰 생성 문장 확인 생성된 SQL문
트리거(Triger) 정의하기 방법 1. 테이블의 바로가기 메뉴에서 [Triggers..] 메뉴 선택 -> [Trigers] 대화상자 표시
2. ‘New’ 버튼 클릭 -.> [New Triger] 대화상자에서 트리거의 이름을 정의하고 ‘OK’ 버튼 클릭 3. 트리거의 종류 선택
4. [Code] 탭을 선택하고 트리거를 정의하는 코드를 ‘Trigger Code’ 입력상자에 입력
5. [Expanded] 탭으로 전환하여 실제로 만들어질 트리거에 대해 정의된 내용 확인
저장 프로시저(Stored Procedure) 생성하기 1. [DataBase] → [Stored Procedure] 메뉴에서 [Model-Level] 메뉴와 [Table-Level] 메뉴 중 하나 선택 [Table-Level] 메뉴 테이블이나 뷰에 기반한 저장 프로시저를 만들고자 하는 경우 사용 [Model-Level] 값을 계산하거나 부수적인 프로세스를 처리하기 위한 저장 프로시저를 정의하는 경우 사용 2. 모델 탐색기 사용하여 생성 1.‘Stored Procedures’를 확장하고 ‘Table-Level Procedures’ 또는 ‘Model Level Procedure’를 선택 마우스 오른쪽 버튼을 눌러 바로가기 메뉴에서 [New] 메뉴를 선택한 다음 저장 프로시저의 이름 입력.
모델 탐색기를 사용한 저장 프로시저 생성
2. 프로시저 이름을 더블클릭하여 저장 프로시저 대화상자 표시 -> ‘New’ 버튼을 눌러 대화상자에 '주문_상황'이라는 저장 프로시저의 이름을 입력.
3. ‘Code’ 탭에 코드를 입력하여 스토어드 프로시저 정의
데이터베이스 스키마 생성 물리적 데이터 모델링 단계를 거치면서 정의된 데이터베이스의 스키마를 실제 데이터베이스 객체로 만드는 과정 디자인된 스키마를 데이터베이스 스키마로 만들려면 목적 데이터베이스(Target Database)에 연결해야 함. [Database] → [Database Connection] 메뉴 선택
[ORACLE Connection] 대화상자 항목 설정 ‘User Name’ : 데이터베이스 내에 스키마를 생성할 수 있는 권한이 있는 사용자 계정 ‘Password’ : 입력한 사용자의 암호 ‘Connect String’ : 데이터베이스의 이름 [CONNECT] 버튼 클릭 정상적으로 이루어지면 [Oracle Connection] 대화상자가 화면에서 사라지고, 정상적으로 연결되지 못한 경우 에러 메시지 표시
스키마 생성하기 1. [Tools] → [Forward Engineer / Schema generation] 메뉴 선택 -> [Oracle Schema Generation] 대화상자 표시.
2. ‘Generate’ 버튼 클릭 스크립트가 실행되면서 데이터베이스에 ERwin에서 정의한 스키마생성됨. 생성된 스크립트 저장 저장되는 파일의 확장자는 'ere‘ 메모장을 사용하여 내용 확인
3. 실제 데이터베이스 스키마가 정상적으로 생성되었는지 ORACLE Enterprise Manager에서 확인 생성된 데이터베이스 개체
Forward Engineering 데이터 모델로부터 데이터베이스 스키마를 생성한 과정(Process) 의미 CREATE TABLE이나 CREATE INDEX와 같은 SQL 명령문을 사용하지 않고 데이터베이스 객체들을 생성하거나 설계하기 위하여 사용 [Tools] → [Forward Engineer/Schema Generation] 메뉴 사용
Reverse Engineering ERwin을 사용하여 생성되어 있는 물리적 데이터베이스를 데이터 모델로 빠르게 생성할 수 있도록 제공하는 기능 데이터베이스 내에 있는 정보나 스크립트 파일, 그리고 테이블, 컬럼, 관계, 트리거, 저장 프로시저, 물리적 저장구조 속성 등을 캡쳐한 다음 이 정보를 기반으로 자동으로 물리적 모델을 생성
수행 방법 데이터베이스 카달로그로부터 reverse engineering을 수행하는 경우 [Tools] → [Reverse Engineer] 메뉴 사용 Reverse Engineer] 대화상자가 표시되고, 모델 유형(즉, 물리적 또는 물리적/논리적), 템플릿(Template), 타겟 서버 등을 설정
스크립트 파일(*.sql)로부터 reverse engineering을 수행하는 경우 [File] 메뉴로부터 스크립트 파일을 열어주면 된다.
Complete Compare 수행하기 Complete Compare 데이터 모델과 데이터베이스 또는 스크립트 파일을 비교하기 위해 사용하는 툴 모델, 스크립트 파일, 또는 데이터베이스에서 속성과 객체의 차이점을 찾아내고, 필요한 요구 조건을 기반으로 객체들을 동기화할 수 있도록 하는 등의 기능 수행
[Tools] → [Complete Compare] 메뉴 실행 4단계로 진행 Complete Compare Wizard 수행 과정
출력 방향 설정 [File] → [Print Setup] 메뉴 용지 여백과 출력 용지의 머리글과 꼬리글(Header/Footer)을 설정