면접 - 데이터베이스

DB Constraint(데이터베이스 제약 조건)

snow-line 2020. 7. 31. 18:25
반응형

1. 참조키 인덱스

 - 만약 부모테이블에 데이터가 1억건 있고 자식 테이블에 데이터를 1건 입력하려면 부모테이블에 1억건의 데이터를 전부를

검색합니다.

 - 부모 테이블 컬럼과 자식 테이블 컬럼 양쪽에 적절한 인덱스가 생성되어 있어야 참조키 제약 조건의 성능이 좋아집니다.

 

2. 제약 조건 생성

CREATE TABLE EMP3
(
    NO  NUMBER(4) CONSTRAINT  EMP3_NO_PK  PRIMARY KEY,
    NAME    VARCHAR2(10) CONSTRAINT  EMP3_NAME_NN    NOT NULL,
    JUMIN   VARCHAR2(13) CONSTRAINT  EMP3_JUMIN_NN   NOT NULL CONSTRAINT  EMP3_JUMIN_UK   UNIQUE,
    AREA    NUMBER(1) CONSTRAINT  EMP3_AREA_CK    CHECK(AREA < 5),
    DEPTNO  VARCHAR2(6) CONSTRAINT  EMP3_DEPTNO_FK  REFERENCES  DEPT2(DCODE)
);

 

 - 위와 같은 테이블 생성 쿼리, 위 쿼리처럼 제약 조건의 이름을 직접 지정하는 것을 권장합니다.

CREATE TABLE EMP4
(
    NO  NUMBER(4)   PRIMARY KEY,
    NAME    VARCHAR2(10)    NOT NULL,
    JUMIN   VARCHAR2(13)    NOT NULL    UNIQUE,
    AREA    NUMBER(1)   CHECK(AREA < 5),
    DEPTNO  VARCHAR2(6) REFERENCES  DEPT2(DCODE)
)

 

3. UNIQUE 제약 조건 추가하기

ALTER TABLE EMP4 ADD CONSTRAINT EMP4_NAME_UK UNIQUE(NAME);

 

4.  NOT NULL 제약 조건 추가하기

 - ADD가 아닌 MODIFY 키워드를 사용해야 합니다.

ALTER TABLE EMP4 MODIFY(AREA CONSTRAINT EMP4_AREA_NN NOT NULL);

 

5. 참조키 제약 조건 추가하기

 - 부모 테이블에 설정된 컬럼이 PRIMARY KEY이거나 UNIQUE KEY 설정이 되어 있어야 합니다.

ALTER TABLE EMP4 ADD CONSTRAINT EMP4_NO_FK FOREIGN KEY(NO) REFERENCES EMP2(EMPNO);

 

6. FOREIGN KEY 생성 옵션

 - ON DELETE CASECADE : 부모 테이블의 데이터가 지워지면 자식 테이블의 데이터도 함께 지워집니다.

 

 - ON DELETE SET NULL : 부모테이블의 데이터가 지워질 경우 자식 테이블의 값을 NULL로 설정합니다.

 

7. 제약 조건 DISABLE 하기

 - 이미 검증된 대량의 데이터를 테이블에 입력할 경우에는 제약 조건을 잠시 DISABLE하고 데이터 입력 후 ENABLE로 변경하는게 속도가 빠릅니다.

 

 - 아래 입력 값 중 SYS_C0011218 은 제약 조건 명으로 INSERT 수행시 무결성 제약 조건 위배 알림에 표시되어있습니다.

ALTER TABLE TEST_NOVALIDATE DISABLE NOVALIDATE CONSTRAINT SYS_C0011218;

 

8. 제약 조건 ENABLE 하기

ALTER TABLE TEST_ENABLE ENABLE NOVALIDATE CONSTRAINT TE_NAME_NN;

 

9. 제약조건 DISABLE VALIDATE 하기

 - 테이블 내용을 변경할 수 없도록 합니다.

ALTER TABLE TEST_VALIDATE DISABLE VALIDATE CONSTRAINT TV_NAME_NN;

 

10. 제약 조건 ENABLE VALIDATE 하기

ALTER TABLE TEST_ENABLE ENABLE VALIDATE CONSTRAINT TE_NAME_NN;

 

11. 제약 조건 DISABLE 유의 사항

 - PRIMARY KEY나 UINIQUE 제약조건을 DISABLE할 경우 생성되어 있던 UNIQUE INDEX가 자동으로 삭제된다는 점을 기억해야 합니다.

 

12. 제약 조건 삭제

ALTER TABLE EMP4 DROP CONSTRAINT EMP4_NAME_FK;
반응형