반응형

1. 제약조건
1) 제약 조건 활성화
 (1) ENABLE NOVALIDATE
  - 테이블에 Lock이 설정되지 않음
  - Primary 및 Unique Key는 Non-unique 인덱스를 사용해야 함
  - ALTER TABLE hr.departments ENABLE NOVALIDATE CONSTRAINT dept_pk;

 (2) ENABLE VALIDATE
  - 테이블에 Lock 설정
  - Unique 또는 Non-unique 인덱스를 사용할 수 있음
  - 적합한 테이블 Data가 필요함
  - ALTER TABLE hr.department ENABLE VALIDATE CONSTRAINT dept_pk;

2)  제약 조건 이름 바꾸기
 - ALTER TABLE employees RENAME CONSTRAINT emp_dept_fk TO employee_dept_fk;

3)  제약 조건 정보 얻기
 - DBA_CONSTRAINTS
 - DBA_CONS_COLUMNS
 - select constraint_name, constraint_type, deferrable, deferred, validated from dba_constraints where   owner='exp_xosl2_d_p'
 AND table_name='p_pi_cpp';

2. 제약 조건 정의 지침
1) Primary 및 Unique 제약 조건
 (1) 별도의 Tablespace에 인덱스 배치
  - Primary Key 및 Unique 제약 조건 시행에 사용하는 인덱스는 테이블과 다른 Tablespae에 두는데, 이렇게 하려면 USING INDEX 절을 지정하거나 테이블 및 인덱스를 생성하고 테이블을 변경하여 제약 조건을 추가 또는 활성화한다.

 (2) 대량 로드가 자주 발생하는 경우 Non-unique 인덱스 사용
  - 대량의 Data를 테이블 하나에 자주 로드하는 경우에는 제약 조건을 비활성화하고 로드를 수행한 다음 제약 조건을 다시 활성화하는 것이 바람직하며 Primary Key 또는 Unique 제약 조건 시행에 Unique 인덱스를 사용하는 경우에는 제약 조건을 비활성화할 때 인덱스를 삭제해야 한다.이러한 상황에서 Non-unique 인덱스를 사용하면 성능을 향상시킬수 있는데, 이렇게 하려면 키를 deferrable로 생성하거나 키를 정의 또는 활성화하기 전에 인덱스를 생성한다.


2) 자체 참조(Self-referencing) Foreign Key
 (1)테이블에 자체 참조 Foreign Key가 포함되어 있는 경우에는 다음 방식 중 하나를 사용하여 Data를 로드한다.
  - 초기 로드 후 Foreign Key를 정의 또는 활성화한다.
  - 제약 조건을 deferrable 제약 조건으로 정의한다.

반응형