태그 보관물: DB

[DB Modeling] ERwin Data Modeler 사용법

1. ERwin 사용하기

1. 새 파일 만들기

2. 특성 바꾸기

1) 파일 이름 설정하기

 

2)Notation에서 표기방식 IE로 설정하기

3. 엔티티 만들기

– Enter: 이름/기본키/속성에서 빠져나가기

-Tab : 다음으로 넘어가기

– 더블클릭: 편집

– F2 : 속성 이름 바꾸기

4. 각 속성의 자료형 설정하기(도메인)

– 아래 예시에서는 이미 모든 속성을 만들었지만 오른쪽 클릭->Attribute에서 새로운 속성을 만들 수 도 있다.

– 이렇게 새로운 속성을 만들면서 자료형을 지정할 수 도 있고, tab키를 이용해 엔티티를 만들 때 속성명을 모두 지정한 뒤

   attribute 창에서 Domain을 지정할 수 도 있다.

– 도메인(Domain) : 속성의 값, 타입, 제약사항등에 대한 값의 범위

 -모든 속성에 그 특성에 맞게 자료형을 지정해준다.

5. 식별관계, 비식별 관계

– 식별 관계(Identifying Relationship): 부모 테이블의 기본키가 자식 테이블의 기본키 혹은 후보키 그룹의 구성원으로 전이되는 것 -> (부모테이블) 사원 엔티티, (자식테이블) 신체정보 엔티티

– 비식별 관계(Not Identifying Relationship): 부모 테이브릥 기본키가 자식 테이블의 일반 칼럼으로 전이되는 것

-> (부모테이블) 부서 엔티티, (자식테이블) 사원 엔티티

 

  • 관계에 대한 옵션 설정: 부서 테이블과 사원 테이블 간의 관계선을 선택한 후 오른쪽 클릭해서 Relationship Properties 메뉴 선택
  • Verb Phrase에서 각 관계에 대한 설명을 입력한다
  • Relationship Type은 부서 테이블과 사원 테이블의 관계 유형이 비식별 관계이므로 Non-Identifying이 선택되었다.

  • 관계 옵션을 설정한 뒤 바탕화면에서 오른쪽 버튼을 누르면 뜨는 팝업 메뉴의 Relationship Display로 설정

6. 다 대 다 관계 정의

1) 다 대 다 관계는 부모자식 관계가 아니므로 순서에 상관없이 ER-Win Toolbox에서 다 대 다 관계선을 선택하여 연결

2) 다대다 관계를 1 대 다 관계로 바꾸기 위해서는 관계선에서 오른쪽 클릭 후  팝업 메뉴에서 ‘Create Association Entity’를 선택하거나 다 대 다 관계선을 선택한 후 ‘ERWin Transform Toolbar’에서 ‘Many to Many Transform’버튼을 클릭하면 마법사가 나타난다.

3) 다음 버튼을 누르면 새롭게 추가될 교차 실체의 실 체명을 정의하는 대화상자가 나온다. 여기서 Entity Name에 ‘입고’라고 정의한후 다음 버튼을 선택한다.

 

4) Transform Name을 정의하는 대화상자가 나타나면 기본값으로 설정한 뒤 다음 버튼을 누른다

5) 현재 작업에 대한 정보가 나오면 마침 버튼 을 누르고 작업을 완료한다.

  • 공급업체/상품 테이블의 다대다 관계가 해소되어 교차 실체가 정의(입고)된 모습

 

  • 상품/회원 테이블간의 다 대 다 관계가 해소되어 판매엔티티를 정의한 모습

  • 모든 관계선을 차례대로 선택한 후 오른쪽 버튼의 ‘Relationship Properties..’메뉴를 선택한 후 Relationships대화상자에서 ‘Non-Indentifying’옵션 과 ‘No Nulls’옵션을 선택한다.

  • 입고/판매 테이블의 속성들을 추가하여 다이어그램을 완성한다

7. 재귀적 관계 정의(순환관계, Recursive Relationship)

– 비식별 관계선을 이용하여 자기 자신과 관계를 맺는 재귀적 관계를 정의한다.

– 동일한 PK를 가진 테이블을 별도로 분리하는 복합형(다중Entity)과 Entity타입 내에서 자기자신을 참조하는 통합형(단일 Entity)으로 나뉜다.

  • Rolename 정의 ⇒ Relationships 대화상자에서 Rolename 탭을 선택한 후 Rolename입력상자에 ‘직속상사번호’를    기술 (‘직속상사번호’라는 속성이 FK로 전이됨)

 

8. 슈퍼타입과 서브타입

  • 슈퍼타입 엔티티란 상호 배타적인 더 작은 그룹으로 분할되는 엔티티를 의미한다
  • 슈퍼타입 내의 분해된 그룹을 서브타입 엔티티라고 한다
  • 하나의 엔티티에서 배타적인 관계를 파악하고 이를 각각의 실체로 정의하고자 했을 때 각각의 실체에 공통되는 속성들을 모아놓은 엔티티를 슈퍼타입으로 개별적인 속성들을 따로 분리해서 각각의 서브타입으로 정의할 수 있다.
  • 예를 들어 아래 그림과 같이 사원 엔티티가 있다고 하면, 한 회사에는 정규직 사원과 임시직 사원이 있을 수 있다. 일반적으로 정규직 사원은 연봉으로 임시직 사원 은 월급이나 수당으로 급여내역이 정의되므로 하나의 레코드에 입력될 경우 정규직은 월급과 수당에, 임시직은 연봉에 Null 값이 입력될 것이다.

1) 우선 아래와 같이 사원, 정규직, 임시직 엔티티를 만든다.

2) 슈퍼타입과 서브타입에 관한 정의는 ERWin Roolbox의 ‘Exclusive sub-category’버튼을 이용 한다.

3) ‘Exclusive sub-category’ 버튼을 선택하고 슈퍼타입을 먼저 선택한 후 서브타입 중에 하나인 정규직 엔티티를 선택하면 다음과 같은 모습이 된다

4) 슈퍼타입과 서브타입의 관계 설정은 Exclusive-sub Category 버튼을 누른 상태로 중간에 있는 교차점을 선택한 후 임시직 엔티티를 선택하면 다음과 같이 슈퍼타입과 서브타입의 관계가 형성된다

 

Oracle export/import 유틸리티 – Oracle Data Pump(expdp/impdp)

Oracle Data Pump 유틸리티의 사용법을 알아보겠습니다.

Oracle Data Pump 유틸리티를 사용하기 위해서는 덤프 파일이 생성될 폴더를 지정하고, 그 폴더에 읽기, 쓰기 권한이 있어야 합니다.(데이터 import 를 위해 읽기, export를 위해 쓰기 권한이 필요합니다.)

이 예제에서는 Oracle Express Editon 11g r2를 사용해서 테스트 했습니다.

 

※ 디렉토리 생성 및 권한 주기

1. SYSTEM으로 로그인합니다.(일반 계정으로는 디렉토리를 추가할 권한이 없으므로 SYSTEM 계정으로 추가하고, 권한을 줍니다.)

 

2. 덤프 파일이 생성될 디렉토리를 생성합니다. 여기서는 ‘E:\export’ 를 만들었습니다.(이 폴더는 데이터베이스 서버에 만드는 것입니다.)

 

3. ‘E:\export’ 디렉토리를 TEST_DUMP 다른 이름으로 데이터베이스에 등록합니다.

CREATE OR REPLACE DIRECTORY TEST_DUMP AS 'E:\export';

 

4. 일반유저인 xeuser에게 이 디렉토리에 읽기, 쓰기 권한을 줍니다.

GRANT READ, WRITE ON DIRECTORY TEST_DUMP TO xeuser;

 

5. xeuser 계정으로 로그인하여 권한을 확인합니다.

– 디렉토리는 all_directories 뷰에서 확인할 수 있습니다.

SELECT * FROM all_directories;

결과)
OWNER  DIRECTORY_NAME  DIRECTORY_PATH
SYS    TEST_DUMP       E:\export

 

– 권한의 확인은 다음과 같이 할 수 있습니다.

SELECT * FROM all_tab_privs WHERE TABLE_NAME IN (
  SELECT DIRECTORY_NAME FROM all_directories
);

결과)
GRANTOR  GRANTEE  TABLE_SCHEMA  TABLE_NAME  PRIVILEGE  GRANTABLE  HIERARCHY
SYSTEM   XEUSER   SYS           TEST_DUMP   READ       NO         NO
SYSTEM   XEUSER   SYS           TEST_DUMP   WRITE      NO         NO

 

– Oracle 11g r2 이상이라면 다음 쿼리도 사용할 수 있습니다.

SELECT * FROM datapump_dir_objs;

결과)
NAME       PATH       READ  WRITE
TEST_DUMP  E:\export  TRUE  TRUE

 

※ 데이터 export/import 하기

Oracle Data Pump는 명령행 유틸리티 expdp/impdp를 사용해서 작업합니다.

 

1. 테이블 export/import(특정 테이블을 export/import 합니다.)

E:\>expdp xeuser/xeuser@xe tables=EMP,DEPT directory=TEST_DUMP dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log

E:\>impdp xeuser/xeuser@xe tables=EMP,DEPT directory=TEST_DUMP dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log

* xeuser/xeuser@xe – 로그인아이디/비밀번호@SID 입니다.

* tables=EMP, DEPT – 테이블을 콤마(,)로 분리해서 나열합니다.

* directory=TEST_DUMP – 덤프 파일이 생성될 디렉토리입니다. 위해서 만들것 입니다.

* dumpfile=EMP_DEPT.dmp – 생성될 덤프 파일의 이름 입니다.

* logfile=expdpEMP_DEPT.log – 로그 파일의 이름입니다. 덤프파일과 같은 위치에 만들어 집니다.

 

2. 스키마(Schema) export/import 하기

E:\>expdp xeuser/xeuser@xe schemas=XEUSER directory=TEST_DUMP dumpfile=XEUSER.dmp logfile=expdpXEUSER.log

E:\>impdp xeuser/xeuser@xe schemas=XEUSER directory=TEST_DUMP dumpfile=XEUSER.dmp logfile=impdpXEUSER.log

* schemas=XEUSER : 주어진 사용자(schema)가 가진 전체 객체를 export/import합니다.(이전 exp의 OWNER와 같은 기능의 옵션 입니다.)

 

3. 데이터베이스 전체 export/import 하기

E:\>expdp system/password@xe full=Y directory=TEST_DUMP dumpfile=XE.dmp logfile=expdpXE.log

E:\>impdp system/password@xe full=Y directory=TEST_DUMP dumpfile=XE.dmp logfile=impdpXE.log

* 전체 작업은 권한이 있는 system 계정으로 작업합니다.

* full=Y – 전체 데이터베이스를 대상으로 합니다.

 

4. 데이터베이스 Link를 export/import 하기

데이터베이스 Link를 통해서 export/import 하기 위해서는 로컬과 리모트 사용자 모두에게 EXP_FULL_DATABASE / IMP_FULL_DATABASE 롤이 부여되어 있어야 합니다.

다음 예는 로컬계정 은 xeuser이고, 리모트 서버가 REMOTE_SCOTT라는 이름으로 링크 되어 있다고 가정합니다.  리모트 계정은 scott 입니다.

E:\>expdp xeuser/xeuser@xe tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DUMP dumpfile=EMP.dmp logfile=expdpEMP.log

E:\>impdp xeuser/xeuser@xe tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DUMP logfile=impdpSCOTT.log remap_schema=SCOTT:XEUSER

* remap_schema=SCOTT:XEUSER – SCOTT계정의 객체들을 XEUSER계정으로 로드 합니다.

 

5. 버전을 지정하여 export 합니다.(버전은 9.2 이상만 지정할 수 있습니다.)

E:\>expdp xeuser/xeuser@xe schemas=XEUSER version=10.2 directory=TEST_DUMP dumpfile=XEUSER.dmp logfile=expdpXEUSER.log

이것으로 Oracle Data Pump 사용법에 대해 알아보았습니다.

 

자세한 옵션들에 대해서는 다음 URL을 참고 하세요.

출처 : https://oracle-base.com/articles/10g/oracle-data-pump-10g